Come posso eseguire la migrazione delle mie tabelle Amazon DynamoDB da un account AWS a un altro?

8 minuti di lettura
0

Desidero eseguire una migrazione di tabelle Amazon DynamoDB tra diversi account.

Breve descrizione

Puoi eseguire la migrazione della tabella DynamoDB su un altro account AWS con uno dei metodi seguenti in base al tuo caso d'uso:

  • Backup AWS
  • Importazione ed esportazione di DynamoDB in Amazon Simple Storage Service (Amazon S3)
  • Amazon S3 e AWS Glue
  • Amazon EMR

Risoluzione

Backup AWS

Puoi usare Backup AWS per creare backup DynamoDB tra diversi account. Per ulteriori informazioni, consulta le pagine Creating backup copies across AWS accounts e AWS Backup demo: Cross-account & cross-Region backup.

Nell'account di destinazione, procedi come indicato di seguito:

  1. Crea un vault di Backup AWS nell'account di destinazione nella regione in cui è presente il tuo DynamoDB.
  2. Quando crei il vault, utilizza la chiave del Servizio AWS di gestione delle chiavi (AWS KMS) che hai già configurato. Si tratta della chiave che hai già condiviso con l'account di origine nella stessa organizzazione.
  3. Dopo aver creato il vault, aggiungi una policy AWS Identity and Access Management (IAM) al vault. Puoi farlo selezionando l'opzione Consenti l'accesso a un vault di backup dall'organizzazione. Ciò consentirà ad altri account all'interno della stessa organizzazione di effettuare copie nel vault.

Nell'account di origine, procedi come indicato di seguito:

  1. Nell'account di origine in cui è presente il tuo DynamoDB, crea un vault di Backup AWS nella regione in cui i dati della tabella devono essere migrati.
  2. Quando crei il vault, usa la chiave AWS KMS che hai già configurato. Si tratta della chiave che hai condiviso con altri account dell'organizzazione.
  3. Aggiungi una policy IAM al vault che consenta ad altri account dell'organizzazione di effettuare copie nel vault. Puoi farlo selezionando l'opzione Consenti l'accesso a un vault di backup dall'organizzazione.
  4. Crea un piano di backup per generare backup delle tabelle DynamoDB presenti nell'account di origine sull'account di destinazione.
  5. In Vault di backup, assicurati di scegliere il vault che hai creato nell'account di origine.
  6. Quindi, seleziona l'opzione Copia nel vault di un altro account.
  7. in Assegna risorse, assicurati di includere le risorse di cui devi eseguire il backup. Puoi scegliere Includi tipi di risorse specifici.
  8. In Seleziona tipi di risorse specifici, scegli DynamoDB. Puoi scegliere tutte le tabelle o solo quelle di cui devi eseguire il backup.

Nell'account di destinazione, procedi come indicato di seguito:

  1. Nell'account di destinazione, spostati sul vault che hai creato.
    Puoi vedere che i Punti di ripristino sono gli stessi dell'account di origine.
  2. Puoi ripristinare la tua tabella DynamoDB nell'account di destinazione.

Nota: per questo approccio, gli account di origine e di destinazione devono appartenere alla stessa organizzazione.

Importazione ed esportazione di DynamoDB in Amazon S3

  1. Esegui la migrazione dei dati della tabella DynamoDB esportando la tabella in un bucket Amazon S3 nell'account di destinazione. Assicurati che DynamoDB disponga delle autorizzazioni s3:ListBucket per questo bucket S3. Assicurati che il bucket S3 non abbia liste di controllo degli accessi che neghino l'accesso ai dati esportati.
  2. Una volta completata l'esportazione, importa i dati dal bucket S3 in una nuova tabella nell'account di destinazione. Per ulteriori informazioni, consulta la pagina DynamoDB data import from Amazon S3: how it works.

Nota: l'esportazione della tabella non consuma alcuna capacità di lettura sulla tabella e non ha alcun impatto sulle prestazioni o sulla disponibilità della tabella. Inoltre, l'importazione della tabella non consuma alcuna capacità di scrittura. Pertanto, non è necessaria una capacità aggiuntiva durante il processo di importazione.

Amazon S3 e AWS Glue

Puoi eseguire la migrazione della tua tabella DynamoDB su un altro account AWS utilizzando un bucket S3 e un processo AWS Glue.

1.    Puoi eseguire la migrazione iniziale della tabella DynamoDB esportando le tabelle in un bucket Amazon S3 nell'altro account.

Quando esporti le tabelle dall'Account A a un bucket S3 nell'Account B, gli oggetti sono ancora di proprietà dell'Account A. Per impostazione predefinita, gli utenti AWS Identify Access Management (IAM) nell'Account B non possono accedere agli oggetti. La funzione di esportazione non scrive dati con la lista di controllo degli accessi (ACL) bucket-owner-full-control. Per risolvere questo problema di proprietà degli oggetti, al termine dell'esportazione includi l'autorizzazione PutObjectAcl su tutti gli oggetti esportati. Questa soluzione alternativa concede l'accesso a tutti gli oggetti esportati per i proprietari del bucket nell'Account B. Per ulteriori informazioni, consulta la pagina Perché non riesco ad accedere a un oggetto che è stato caricato nel mio bucket Amazon S3 da un altro account AWS?

2.    Usa un processo Glue per leggere i file dal bucket S3 e scriverli nella tabella DynamoDB di destinazione.

Dopo aver esportato i dati in un bucket S3 nell'account di destinazione come indicato nel passaggio 1, esegui le operazioni seguenti nell'account di destinazione:

Esegui un crawler AWS Glue sui dati in Amazon S3. Il crawler deduce lo schema e crea una tabella per il Catalogo dati AWS Glue con quella definizione dello schema.

Usa AWS Glue Studio per creare un processo ETL. Dopo aver specificato un'origine, una trasformazione e una destinazione, AWS Glue Studio genera automaticamente il codice PySpark in base a questi input. Per questo processo, specifica la tabella del Catalogo dati AWS Glue come origine e ApplyMApplyMapping come trasformazione. Non specificare una destinazione. AWS Glue Studio genera il codice PySpark per creare un DynamicFrame da S3.

Assicurati che il nome della chiave e la mappatura del tipo di dati del codice generato da AWS Glue Studio siano corretti. Se le mappature non sono corrette, modifica il codice e correggile. Poiché non hai specificato la destinazione durante la creazione del processo AWS Glue, aggiungi un'operazione sink simile a quella nell'esempio seguente. L'aggiunta di questa operazione consentirà al processo di scrivere direttamente nella tabella DynamoDB di destinazione:

glueContext.write_dynamic_frame_from_options ( frame = Mapped, connection_type = "dynamodb", connection_options = { "dynamodb.region": "", "dynamodb.output.tableName": "", "dynamodb.throughput.write.percent": "1.0" } )

Per caricare i dati nella tabella di destinazione, esegui il processo da AWS Glue Studio o dalla pagina Lavori sulla console AWS Glue.

3.    Dopo aver esportato le tabelle nel bucket S3, usa Flussi di DynamoDB e AWS Lambda per migrare i dati inseriti e aggiornati dalla tabella di origine alla tabella di destinazione in un altro account. Per ulteriori informazioni, consulta la pagina Cross-account replication with Amazon DynamoDB.

AWS Glue

I processi ETL di AWS Glue supportano sia la lettura che la scrittura di dati nella tabella DynamoDB di un altro account. Usa il parametro dynamodb.sts.roleArn per assumere un ruolo multi-account nello script del processo. L'assunzione di questo ruolo ti consentirà di ottenere le credenziali temporanee da utilizzare per l'accesso multi-account a DynamoDB. Per ulteriori informazioni, consulta le pagine Cross-account cross-Region access to DynamoDB tables e How to export an Amazon DynamoDB table to Amazon S3 using AWS Step Functions and AWS Glue.

Amazon EMR

Quando usi Amazon EMR per effettuare la migrazione delle tabelle DynamoDB, utilizza una delle seguenti opzioni a seconda del tuo caso d'uso:

  • Se puoi permetterti tempi di inattività durante la migrazione, interrompi le operazioni di scrittura nella tabella di origine. Questo servirà ad assicurarsi che la tabella di destinazione sia sincronizzata con la tabella di origine.
  • Se non puoi permetterti tempi di inattività, archivia in una tabella temporanea tutte le transazioni che avvengono durante la migrazione. Una volta che la tabella originale sarà migrata all'altro account AWS, invia le nuove transazioni dalla tabella temporanea alla tabella di destinazione.

Nota: il tempo necessario per far migrare le tabelle con Amazon EMR può variare in modo significativo. La varianza dipende dalle prestazioni di rete di throughput assegnate dalla tabella DynamoDB e dalla quantità di dati archiviati nella tabella.

Per far migrare una tabella DynamoDB utilizzando Amazon EMR, procedi come indicato di seguito:

  1. Avvia i cluster EMR negli account di origine e di destinazione. Nella sezione Configurazione del software, assicurati di scegliere un'opzione che includa Apache Hive. Nota: per sicurezza è consigliabile avviare i cluster Amazon EMR in sottoreti private. Le sottoreti private devono avere un endpoint VPC Amazon S3 e un routing instradato verso DynamoDB. Per ulteriori informazioni, consulta la pagina Sottoreti private. Se i cluster devono accedere a Internet, utilizza un gateway NAT che risiede in una sottorete pubblica. Per ulteriori informazioni, consulta la pagina VPC with public and private subnets (NAT).
  2. Assicurati che i ruoli IAM EMR_EC2_DefaultRole in entrambi gli account abbiano l'autorizzazione per scrivere nel bucket S3 nell'account di destinazione. Per ulteriori informazioni, consulta la pagina Configurazione dei ruoli di servizio IAM per le autorizzazioni di Amazon EMR per i servizi e risorse AWS.
  3. Nell'account di origine, connettiti al nodo primario tramite SSH.
  4. Nell'account di origine, usa i comandi Hive per esportare i dati della tabella DynamoDB nel bucket S3 all'interno dell'account di destinazione.
  5. Nell'account di destinazione, importa i dati Amazon S3 nella nuova tabella DynamoDB.
  6. Se stai utilizzando una tabella temporanea per acquisire le scritture avvenute durante la migrazione, ripeti i passaggi 4 e 5 sulla tabella temporanea.

Informazioni correlate

Copying data between DynamoDB and Amazon S3

AWS UFFICIALE
AWS UFFICIALEAggiornata 9 mesi fa