Comment puis-je migrer mes tables Amazon DynamoDB d’un compte AWS à un autre ?

Lecture de 9 minute(s)
0

Je souhaite effectuer une migration de table Amazon DynamoDB entre comptes.

Brève description

En fonction de votre cas d’utilisation, vous pouvez choisir l’une des méthodes suivantes pour migrer votre table DynamoDB vers un autre compte AWS :

  • AWS Backup
  • Importation et exportation de DynamoDB vers Amazon Simple Storage Service (Amazon S3)
  • Amazon S3 et AWS Glue
  • Amazon EMR

Résolution

AWS Backup

Vous pouvez utiliser AWS Backup pour créer des sauvegardes DynamoDB entre comptes. Pour en savoir plus, consultez la page Création de copies de sauvegarde entre comptes AWS, ainsi que la démonstration pour AWS Backup : sauvegarde entre compte et entre régions.

Procédez comme suit dans le compte cible :

  1. Créez un coffre-fort AWS Backup dans le compte cible de la région où se trouve votre DynamoDB.
  2. Lors de la création du coffre-fort, utilisez la clé AWS Key Management Service (AWS KMS) que vous avez déjà configurée. Il s’agit de la clé que vous avez déjà partagée avec le compte source de la même organisation.
  3. Une fois le coffre-fort créé, ajoutez-y une politique Gestion des identités et des accès AWS (AWS IAM). Pour ce faire, vous pouvez sélectionner l’option Autoriser l’accès à un coffre-fort de sauvegarde depuis l’organisation. Cela permet à d’autres comptes de la même organisation d’effectuer des opérations de copie dans le coffre-fort.

Procédez comme suit dans le compte source :

  1. Dans le compte source où se trouve votre DynamoDB, créez un coffre-fort AWS Backup dans la région vers laquelle les données de votre table doivent être migrées.
  2. Lors de la création du coffre-fort, utilisez la clé AWS KMS que vous avez déjà configurée. Il s’agit de la clé que vous avez partagée avec les autres comptes de l’organisation.
  3. Ajoutez au coffre-fort une politique IAM qui autorise les autres comptes de l’organisation à effectuer des opérations de copie dans le coffre-fort. Pour ce faire, vous pouvez sélectionner l’option Autoriser l’accès à un coffre-fort de sauvegarde depuis l’organisation.
  4. Créez un plan de sauvegarde pour générer des sauvegardes des tables DynamoDB du compte source vers le compte cible.
  5. Veillez à sélectionner le coffre-fort que vous avez créé dans le compte source comme coffre-fort de sauvegarde.
  6. Sélectionnez ensuite l’option Copier dans le coffre d’un autre compte.
  7. Dans Attribuer des ressources, veillez à inclure les ressources que vous devez sauvegarder. Vous pouvez choisir Inclure des types de ressources spécifiques.
  8. Dans Sélectionner des types de ressources spécifiques, sélectionnez DynamoDB. Vous pouvez choisir toutes les tables ou uniquement celles que vous devez sauvegarder.

Procédez comme suit dans le compte cible :

  1. Dans le compte cible, accédez au coffre-fort que vous avez créé.
    Vous pouvez voir que les Points de récupération sont identiques à ceux du compte source.
  2. Vous pouvez restaurer votre table DynamoDB dans le compte cible.

Remarque : cette approche nécessite que les comptes source et cible appartiennent à la même organisation.

Importation et exportation de DynamoDB vers Amazon S3

  1. Migrez les données de la table DynamoDB en exportant la table vers un compartiment Amazon S3 du compte cible. Assurez-vous que DynamoDB dispose des autorisations s3:ListBucket pour ce compartiment S3. Vérifiez que le compartiment S3 ne contient aucune liste de contrôle d’accès qui refuse l’accès aux données exportées.
  2. Une fois l’exportation terminée, importez les données du compartiment S3 dans une nouvelle table du compte cible. Pour en savoir plus, consultez la page Fonctionnement de l’importation de données vers DynamoDB depuis Amazon S3.

Remarque : l’exportation de la table ne consomme aucune capacité de lecture de la table et n’a aucun impact sur les performances ou la disponibilité de la table. De plus, l’importation de la table ne consomme aucune capacité d’écriture. Par conséquent, vous n’avez pas besoin de capacité supplémentaire pendant le processus d’importation.

Amazon S3 et AWS Glue

Vous pouvez migrer votre table DynamoDB vers un autre compte AWS à l’aide d’un compartiment S3 et d’une tâche AWS Glue.

1.    Vous pouvez effectuer la migration initiale de la table DynamoDB en exportant les tables vers un compartiment Amazon S3 de l’autre compte.

Lorsque vous exportez vos tables du compte A vers un compartiment S3 du compte B, les objets appartiennent toujours au compte A. Les utilisateurs IAM du compte B ne peuvent pas accéder aux objets par défaut. La fonction d’exportation n’écrit pas de données avec la liste de contrôle d’accès (ACL) bucket-owner-full-control. Pour contourner ce problème de propriété des objets, incluez l’autorisation PutObjectAcl pour tous les objets exportés une fois l’exportation terminée. Cette solution accorde l’accès à tous les objets exportés aux propriétaires du compartiment dans le compte B. Pour en savoir plus, consultez la page Pourquoi m’est-il impossible d’accéder à un objet qui a été chargé dans mon compartiment Amazon S3 par un autre compte AWS ?

2.    Utilisez une tâche Glue pour lire les fichiers du compartiment S3 et les écrire dans la table DynamoDB cible.

Une fois que vous avez exporté les données vers un compartiment S3 du compte cible, comme indiqué à l’étape 1, procédez comme suit dans le compte cible :

Exécutez un robot AWS Glue sur les données d’Amazon S3. Le robot déduit le schéma et crée une table du catalogue de données AWS Glue avec cette définition de schéma.

Utilisez AWS Glue Studio pour créer une tâche ETL. Une fois que vous avez spécifié une source, une transformation et une cible, AWS Glue Studio génère automatiquement le code PySpark en fonction de ces entrées. Pour cette tâche, vous devez spécifier la table du catalogue de données AWS Glue comme source et ApplyMApplyMapping comme transformation. Ne spécifiez pas de cible. AWS Glue Studio génère le code PySpark pour créer un DynamicFrame à partir de S3.

Vérifiez que le nom de clé et le mappage du type de données du code généré par AWS Glue Studio sont corrects. Dans le cas contraire, modifiez le code et corrigez les mappages. Comme vous n’avez pas spécifié la cible lors de la création de la tâche AWS Glue, vous devez ajoutez une opération de récepteur similaire à celle de cet exemple. L’ajout de cette opération permet à la tâche d’écrire directement dans la table DynamoDB cible :

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

Pour charger les données dans la table cible, exécutez la tâche depuis AWS Glue Studio ou depuis la page Tâches de la console AWS Glue.

3.    Après avoir exporté les tables vers le compartiment S3, utilisez DynamoDB Streams et AWS Lambda pour migrer les insertions de données et les mises à jour de la table source vers la table de destination dans un autre compte. Pour en savoir plus, consultez la page Réplication entre comptes avec Amazon DynamoDB.

AWS Glue

Les tâches ETL d’AWS Glue permettent à la fois de lire et d’écrire des données dans la table DynamoDB d’un autre compte. Utilisez le paramètre dynamodb.sts.roleArn pour assumer un rôle entre comptes dans le script de tâche. En assumant ce rôle, vous pouvez obtenir les informations d’identification temporaires qui doivent être utilisées pour l’accès entre comptes à DynamoDB. Pour en savoir plus, consultez les pages Accès entre comptes et interrégional aux tables DynamoDB et Comment exporter une table Amazon DynamoDB vers Amazon S3 grâce à AWS Step Functions et AWS Glue.

Amazon EMR

Si vous utilisez Amazon EMR pour migrer des tables DynamoDB, vous devez choisir l’une des options suivantes en fonction de votre cas d’utilisation :

  • Si une interruption au cours de la migration est acceptable, arrêtez les opérations d’écriture dans la table source. Cela permet de s’assurer que la table cible est synchronisée avec la table source.
  • Si interruption n’est pas acceptable, vous devez stocker toutes les transactions effectuées pendant la migration dans une table intermédiaire. Une fois la table d’origine migrée vers l’autre compte AWS, vous pouvez transférer les nouvelles transactions de la table intermédiaire vers la table cible.

Remarque : le temps nécessaire à la migration des tables avec Amazon EMR peut varier considérablement. Ce délai dépend des performances du réseau de débit provisionné de la table DynamoDB et de la quantité de données stockées dans la table.

Pour migrer une table DynamoDB à l’aide d’Amazon EMR, procédez comme suit :

  1. Lancez des clusters EMR dans les comptes source et de destination. Dans la section Configuration des logiciels, veillez à choisir une option incluant Apache Hive. Remarque : pour renforcer la sécurité, il est recommandé de lancer les clusters Amazon EMR dans des sous-réseaux privés. Ces sous-réseaux privés doivent disposer d’un point de terminaison d’un VPC Amazon S3 et d’un routage vers DynamoDB. Pour en savoir plus, consultez la page Sous-réseaux privés. Si les clusters doivent accéder à Internet, utilisez une passerelle NAT résidant dans un sous-réseau public. Pour en savoir plus, consultez la page VPC avec sous-réseaux publics et privés (NAT).
  2. Vérifiez que les rôles IAM EMR_EC2_DefaultRole des deux comptes sont autorisés à écrire dans le compartiment S3 du compte de destination. Pour en savoir plus, consultez la page Configuration des rôles de service IAM pour les autorisations Amazon EMR sur les services et ressources AWS.
  3. Dans le compte source, connectez-vous au nœud principal via SSH.
  4. Dans le compte source, utilisez les commandes Hive pour exporter les données de la table DynamoDB vers le compartiment S3 du compte de destination.
  5. Dans le compte de destination, importez les données Amazon S3 dans la nouvelle table DynamoDB.
  6. Si une table intermédiaire est utilisée pour capturer les écritures effectuées pendant la migration, répétez les étapes 4 et 5 pour la table intermédiaire.

Informations connexes

Copie de données entre DynamoDB et Amazon S3

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois