Comment sauvegarder une table DynamoDB sur Amazon S3 ?

Date de la dernière mise à jour : 14/08/2021

Je souhaite sauvegarder ma table Amazon DynamoDB à l'aide d'Amazon Simple Storage Service (Amazon S3) ?

Brève description

DynamoDB propose deux méthodes de sauvegarde intégrées :

Ces deux méthodes conviennent à la sauvegarde de vos tables à des fins de reprise après sinistre. Toutefois, avec celles-ci, vous ne pouvez pas utiliser les données pour des cas d'utilisation impliquant des tâches d'analyse de données ou d'extraction, de transformation et de chargement (ETL) de données. La fonction DynamoDB Export to S3 (Exporter vers S3) est le moyen le plus simple de créer des sauvegardes que vous pouvez télécharger localement ou utiliser avec un autre service AWS. Pour personnaliser le processus de création de sauvegardes, vous pouvez utiliser Amazon EMR, AWS Glue ou AWS Data Pipeline.

Résolution

Fonction DynamoDB Export to S3

Cette fonction vous permet d'exporter des données d'une table Amazon DynamoDB à tout moment dans votre période de restauration à un instant dans le passé vers un compartiment Amazon S3. Pour plus d'informations, reportez-vous à la section Exportation de données de table DynamoDB vers Amazon S3.

Pour voir un exemple d'utilisation de la fonction Export to S3, consultez l'article Exportation de données de table DynamoDB vers votre lac de données dans Amazon S3, sans écriture de code.

L'utilisation de la fonction Export to S3 vous permet d'utiliser vos données d'autres manières, notamment les suivantes :

  • Effectuer une tâche ETL sur les données exportées sur S3 et réimporter les données dans DynamoDB.
  • Conserver l'historique des instantanés pour l'audit.
  • Intégrer les données à d'autres services/applications
  • Créer un lac de données S3 à partir des données DynamoDB et analyser les données de divers services, tels qu'Amazon Athena, Amazon Redshift et Amazon SageMaker.
  • Exécuter des requêtes ad hoc sur vos données depuis Athena ou Amazon EMR sans affecter votre capacité DynamoDB.

Prenez en compte les avantages et les inconvénients suivants lorsque vous utilisez cette fonction :

  • Avantages : cette fonction vous permet d'exporter des données entre les régions et les comptes AWS sans créer d'applications personnalisées ni écrire de code. Les exportations n'affectent pas la capacité de lecture ou la disponibilité de vos tables de production.
  • Inconvénients : cette fonction exporte les données de table au format DynamoDB JSON ou Amazon Ion uniquement. La fonction Importer les données de sauvegarde DynamoDB depuis S3 d'AWS Data Pipeline ne peut pas être utilisée pour importer des données directement dans DynamoDB, car cette fonction ne répond pas aux exigences de format de données. Vous ne pouvez pas utiliser les modèles Data Pipeline pour réimporter les données dans une table DynamoDB. Pour réimporter les données, vous devez créer un nouveau modèle ou utiliser AWS Glue, Amazon EMR ou le kit SDK AWS.

Amazon EMR

Utilisez Amazon EMR pour exporter vos données vers un compartiment S3. Vous pouvez le faire en utilisant l'une des méthodes suivantes :

Prenez en compte les avantages et les inconvénients suivants lorsque vous utilisez ces méthodes :

  • Avantages : si vous êtes un utilisateur actif d'Amazon EMR et que vous êtes à l'aise avec Hive ou Spark, ces méthodes offrent plus de contrôle que la fonction native Export to S3. Vous pouvez également utiliser des clusters existants à cette fin.
  • Inconvénients : ces méthodes nécessitent la création et la gestion d'un cluster EMR. Si vous utilisez DynamoDBStorageHandler, vous devez maîtriser Hive ou Spark.

AWS Glue

Utilisez AWS Glue pour copier votre table vers Amazon S3. Pour plus d'informations, consultez l'article Utilisation des exportations avec AWS Glue.

  • Avantages : comme AWS Glue est un service sans serveur, il n'est pas nécessaire de créer et de maintenir des ressources. Vous avez la possibilité de réécrire directement sur DynamoDB. Vous pouvez ajouter une logique ETL personnalisée pour les cas d'utilisation, tels que le filtrage et la conversion, lors de l'exportation de données. Vous pouvez également choisir votre format préféré parmi CSV, JSON, Parquet ou ORC. Pour plus d'informations, consultez la section Options de format pour les entrées et sorties ETL dans AWS Glue.
  • Inconvénients : si vous choisissez cette option, vous devez avoir des connaissances sur Spark. Vous devez également conserver un code source pour votre tâche ETL AWS Glue. Pour plus d'informations, reportez-vous à la section "connectionType": "dynamodb".

Data Pipeline

Utilisez AWS Data Pipeline pour exporter votre table vers un compartiment S3 du même compte ou d'un autre compte. Pour plus d'informations, consultez l'article Importation et exportation de données DynamoDB à l'aide d'AWS Data Pipeline.

  • Avantages : Data Pipeline utilise Amazon EMR pour créer la sauvegarde, et la génération de script est automatiquement effectuée. Vous n'avez pas besoin d'apprendre à maîtriser Apache Hive ou Apache Spark pour accomplir cette tâche. Le cluster est créé et géré pour vous.
  • Inconvénients : si vous utilisez les modèles fournis, la création des sauvegardes n'est pas aussi personnalisable qu'AWS Glue ou Amazon EMR. Pour créer des sauvegardes personnalisables sur Amazon S3, choisissez l'une des autres méthodes ou créez votre propre modèle pour Data Pipeline.

Si aucune de ces options n'offre la flexibilité souhaitée, vous pouvez utiliser l'API DynamoDB pour créer votre propre solution.