2013-08-12 11 views
9

Nel tempo dal this question è stato risposto, AWS Tools for Powershell è stato rilasciato e fondamentalmente ho lo stesso problema: ho uno snapshot RDS su un account AWS che vorrei trasferire su un altro.Le istantanee RDS possono essere trasferite tra gli account AWS?

Finora sono stato in grado di selezionare l'istantanea che desidero con il cmdlet Get-RDSDBSnapshot e vorrei prendere quell'oggetto Amazon.RDS.Model.DBSnapshot e utilizzarlo nell'altro account.

Ho cercato in giro e penso che le Restore-RDSDBInstanceFromDBSnapshot cmdlet (mappe a rds-restore-db-instance-from-db-snapshot) potrebbe essere quello che sto cercando, ma non sono sicuro che ho capito il suo comportamento - può questo cmdlet essere usato per prendere la mia istantanea dal mio primo account e ripristinarla in un'istanza nel secondo account?

Sono specificamente interessato se ci sono dettagli specifici dell'account in un oggetto Snapshot o la gestione del cmdlet che impedirebbe il trasferimento di tali dati tra gli account. Sarei a posto con una soluzione più generale di PowerShell, se ne esiste uno.

risposta

12

Aggiornamento 2015/10/29:

AWS ha aggiunto il supporto nativo per questa funzionalità dato che il mio messaggio originale (link to announcement). Questo è supportato per MySQL, Oracle, SQL Server e PostgreSQL non criptati.

Viene offerta la possibilità di condividere l'istantanea RDS pubblicamente o in privato (gestendo specifici ID account AWS con autorizzazione per visualizzare l'istantanea). Per impostazione predefinita, le istantanee possono essere condivise privatamente con un massimo di 20 account.

Questo può essere gestito dalla console RDS cliccando su 'Snapshots (barra di navigazione di sinistra)> Condividi Snapshot (barra degli strumenti in alto)', che vi porta alla seguente interfaccia utente:

enter image description here

Questo è anche disponibile nell'API RDS e nella CLI.


risposta originale:

ho anche postato alle AWS Developer Forum, ed ha ottenuto un response da Philp @ AWS. Sembra che non possiamo farlo affatto, tramite PowerShell o altri mezzi. Ha avuto un paio di suggerimenti alternativi, però:

Non è possibile condividere direttamente una RDS snapshot da un conto ad un altro .Tuttavia posso fare un paio di suggerimenti qui (a seconda della configurazione corrente):

Se la RDS grado è accessibile al pubblico:

  • lanciare un nuovo RDS DB sul vostro secondo account
  • Installare il strumenti di gestione del DB appropriati su un PC e accesso a entrambe le reti RDS (gruppi di sicurezza e accesso utente DB per lettura e scrittura)
  • Utilizzo degli strumenti di gestione del database per copiare i dati da un DB all'altro DB

Copiare i dati attraverso un istanza EC2 come intermediario:

  • Lancio un'istanza EC2 configurata con il software server appropriato DB
  • Copiare il RDS DB dati dal vostro esempio RDS fino all'istanza EC2
  • Quindi avvia la nuova istanza RDS nel secondo account
  • Configura l'accesso appropriato (gruppi di sicurezza e accesso utente DB per lettura e scrittura)
  • Copia i dati del database dal tuo istanza EC2 all'istanza RDS appena creata

esempio la mia RDS non è accessibile al pubblico, e dei suoi suggerimenti la soluzione EC2 sarebbe preferibile. Potremmo tornare a utilizzare mysqldump, secondo la soluzione Server Fault.

Modifica: Desidero aggiornare che sono riuscito a implementare il suggerimento intermedio di EC2. Questo può essere automatizzato in diversi modi, ma la soluzione che ho scelto è stata la trasmissione di uno script bash all'istanza EC2 (linux AMI) come dati utente e i dettagli del trasferimento dei dati sono stati gestiti nello script.

Questa soluzione ha finito per essere abbastanza economica, con l'avvertenza che si desidera che l'istanza RDS e l'istanza EC2 si trovino nella stessa zona di disponibilità. Questo è in gran parte perché data transfer between RDS-EC2 in the same availability zone is free con un indirizzo IP privato.

+0

Cosa succede se dispongo di più database su una singola istanza RDS? Devo eseguire questi passaggi separatamente per ciascun database? –

+0

Con il metodo di condivisione, come possiamo accedere agli snapshot condivisi dall'altro account? – hsteckylf

+0

È possibile utilizzare api - '' 'aws rds restore-db-instance-from-db-snapshot SNAPSHOT_ID''' Nota: se si esegue il ripristino da un'istantanea del DB manuale condivisa, SNAPSHOT_ID deve essere l'ARN dell'istantanea del DB condiviso . Puoi ottenerlo con '' 'aws rds describe-db-snapshots''' –

0

Amazon ha finalmente reso possibile questo risultato. È possibile condividere lo snapshot con un altro account utilizzando il cmdlet Edit-RDSDBSnapshotAttribute (example here), quindi è possibile ripristinarlo su un account con cui è stata condivisa l'istantanea utilizzando il cmdlet Restore-RDSDBInstanceFromDBSnapshot.

È ora possibile condividere istantanee crittografate. Ecco a good walkthrough su come farlo.

Problemi correlati