Demande d'exportation de table dans DynamoDB - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Demande d'exportation de table dans DynamoDB

Les exportations de tables DynamoDB vous permettent d'exporter les données des tables vers un compartiment Amazon S3, ce qui vous permet d'effectuer des analyses et des requêtes complexes sur vos données à l'aide AWS d'autres services tels qu'Athena, AWS Glue Amazon, SageMaker Amazon EMR et. AWS Lake Formation Vous pouvez demander une exportation de table à l'aide de l' AWS Management Console AWS CLI API DynamoDB ou de l'API DynamoDB.

Note

Le demandeur paie les compartiments Amazon S3 ne sont pas pris en charge.

DynamoDB prend en charge à la fois l'exportation complète et l'exportation incrémentielle :

  • Avec les exportations complètes, vous pouvez exporter un instantané complet de votre table à tout moment pendant la fenêtre de point-in-time restauration (PITR) vers votre compartiment Amazon S3.

  • Avec les exportations incrémentielles, vous pouvez exporter vers votre compartiment Amazon S3 les données de votre table DynamoDB qui ont été modifiées, mises à jour ou supprimées au cours d'une période spécifiée dans votre fenêtre PITR.

Prérequis

Activer PITR

Pour utiliser la fonctionnalité d'exportation vers S3, vous devez activer PITR sur votre table. Pour plus de détails sur l'activation du PITR, voir P oint-in-time recovery. Si vous demandez l'exportation d'une table pour laquelle le PITR n'est pas activé, votre demande échouera avec un message d'exception : « Une erreur s'est produite (PointInTimeRecoveryUnavailableException) lors de l'appel de l'ExportTableToPointInTimeopération : la restauration instantanée n'est pas activée pour la table 'my-dynamodb-table».

Configuration des autorisations S3

Vous pouvez exporter vos données de table vers n'importe quel compartiment Amazon S3 dans lequel vous êtes autorisé à écrire. Il n'est pas nécessaire que le compartiment de destination se trouve dans la même AWS région ou qu'il ait le même propriétaire que le propriétaire de la table source. Votre politique AWS Identity and Access Management (IAM) doit vous permettre d'effectuer des actions S3 (s3:AbortMultipartUpload,s3:PutObject, ets3:PutObjectAcl) et l'action d'exportation DynamoDB (). dynamodb:ExportTableToPointInTime Voici un exemple de politique qui accordera à vos utilisateurs les autorisations nécessaires pour effectuer des exportations vers un compartiment S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBExportAction", "Effect": "Allow", "Action": "dynamodb:ExportTableToPointInTime", "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table" }, { "Sid": "AllowWriteToDestinationBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket/*" } ] }

Si vous devez écrire dans un compartiment S3 qui se trouve dans un autre compte ou si vous n'êtes pas autorisé à écrire, le propriétaire du compartiment S3 doit ajouter une politique de compartiment pour vous permettre d'exporter depuis DynamoDB vers ce compartiment. Voici un exemple de politique concernant le compartiment S3 cible.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

La révocation de ces autorisations pendant une exportation entraînera la création de fichiers partiels.

Note

Si la table ou le compartiment vers lequel vous effectuez l'exportation est chiffré à l'aide de clés gérées par le client, les politiques associées à cette clé KMS doivent accorder à DynamoDB l'autorisation de l'utiliser. Cette autorisation est accordée par le biais de l'utilisateur ou du rôle IAM qui déclenche la tâche d'exportation. Pour plus d'informations sur le chiffrement, notamment sur les bonnes pratiques en la matière, consultez Comment DynamoDB utilise AWS KMS et Using a custom KMS key (Utilisation d'une clé KMS personnalisée).

Demande d'exportation à l'aide de l' AWS Management Console

L'exemple suivant montre comment utiliser la console DynamoDB pour exporter une table existante nommée MusicCollection.

Note

Cette procédure suppose que vous avez activé point-in-time la restauration. Pour l'activer pour la MusicCollection table, dans l'onglet Vue d'ensemble de la table, dans la section Détails de la table, choisissez Activer pour la oint-in-timerestauration P.

Pour demander une exportation de table
  1. Connectez-vous à la console DynamoDB AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/dynamodb/.

  2. Dans le panneau de navigation sur le côté gauche de la console, choisissez Exportations vers S3.

  3. Sélectionnez le bouton Exporter vers S3.

  4. Choisissez une table source et un compartiment S3 de destination. Si le compartiment de destination appartient à votre compte, vous pouvez utiliser le bouton Browse S3 (Parcourir S3) pour le trouver. Sinon, saisissez l'URL du compartiment à l'aide du s3://bucketname/prefix format.. Le prefix est un dossier facultatif qui vous permet de garder votre compartiment de destination organisé.

  5. Choisissez Exportation complète ou Exportation incrémentielle. Une exportation complète sort l'instantané complet de votre table telle qu'elle était à l'instant spécifié. Une exportation incrémentielle sort les modifications apportées à votre table au cours de la période d'exportation spécifiée. Votre sortie est compactée afin de ne contenir que l'état final de l'article à partir de la période d'exportation. L'élément n'apparaît qu'une seule fois dans l'exportation, même s'il a été mis à jour plusieurs fois au cours de la même période d'exportation.

    Full export
    1. Sélectionnez l'instant précis à partir duquel vous voulez que l'instantané complet de la table soit exporté. Cela peut être n'importe quel instant de la fenêtre PITR. Vous pouvez également sélectionner Heure actuelle pour exporter l'instantané le plus récent.

    2. Pour Format de fichier exporté, choisissez entre JSON DynamoDB et Amazon Ion. Par défaut, votre table sera exportée au format JSON DynamoDB à partir de la dernière heure restaurable dans la fenêtre de restauration à un instant dans le passé, et chiffrée à l'aide d'une clé Amazon S3 (SSE-S3). Vous pouvez modifier ces paramètres d'exportation si nécessaire.

      Note

      Si vous choisissez de chiffrer votre exportation à l'aide d'une clé protégée par AWS Key Management Service (AWS KMS), la clé doit se trouver dans la même région que le compartiment S3 de destination.

    Incremental export
    1. Sélectionnez la Période d'exportation pour laquelle vous souhaitez exporter les données incrémentielles. Choisissez une heure de début dans la fenêtre PITR. La durée de la période d'exportation doit être au minimum de 15 minutes et ne pas dépasser 24 heures. L'heure de début de la période d'exportation est incluse et l'heure de fin est exclue.

    2. Choisissez entre le Mode absolu et le Mode relatif.

      1. Le Mode absolu exporte les données incrémentielles correspondant à la période que vous spécifiez.

      2. Le Mode relatif exporte les données incrémentielles pour une période d'exportation relative à la date de soumission de votre tâche d'exportation.

    3. Pour Format de fichier exporté, choisissez entre JSON DynamoDB et Amazon Ion. Par défaut, votre table sera exportée au format JSON DynamoDB à partir de la dernière heure restaurable dans la fenêtre de restauration à un instant dans le passé, et chiffrée à l'aide d'une clé Amazon S3 (SSE-S3). Vous pouvez modifier ces paramètres d'exportation si nécessaire.

      Note

      Si vous choisissez de chiffrer votre exportation à l'aide d'une clé protégée par AWS Key Management Service (AWS KMS), la clé doit se trouver dans la même région que le compartiment S3 de destination.

    4. Pour Type de vue d'exportation, sélectionnez Ancienne et nouvelle images ou Nouvelles images uniquement. Nouvelle image indique l'état le plus récent de l'élément. Ancienne image indique l'état de l'élément juste avant les « date et heure de début » spécifiées. Le paramètre par défaut est Ancienne et nouvelle images. Pour en savoir plus sur les nouvelles et anciennes images, consultez Sortie d'une exportation incrémentielle.

  6. Choisissez Exporter pour commencer.

Les données exportées ne sont pas cohérentes du point de vue des transactions. Vos opérations de transaction peuvent être réparties entre deux sorties d'exportation. Un sous-ensemble d'articles peut être modifié par une opération de transaction reflétée dans l'exportation, tandis qu'un autre sous-ensemble de modifications dans la même transaction n'est pas reflété dans la même demande d'exportation. Cependant, les exportations sont cohérentes au final. Si une transaction est annulée lors d'une exportation, vous aurez le reste de la transaction lors de votre prochaine exportation contiguë, sans doublons. Les périodes de temps utilisées pour les exportations reposent sur une horloge système interne et peuvent varier d'une minute par rapport à l'horloge locale de votre application.

Obtenir des informations sur les exportations passées dans le AWS Management Console

Vous pouvez trouver des informations sur les tâches d'exportation que vous avez exécutées dans le passé en choisissant la section Exports vers S3 dans la barre latérale de navigation. Cette section contient la liste de toutes les exportations que vous avez créées au cours des 90 derniers jours. Sélectionnez l'ARN d'une tâche répertoriée dans l'onglet Exportations pour récupérer les informations relatives à cette exportation, y compris les paramètres de configuration avancés que vous avez choisis. Notez que, bien que les métadonnées de tâche d'exportation expirent après 90 jours et que les tâches plus anciennes ne figurent plus dans cette liste, les objets restent dans votre compartiment S3 aussi longtemps que leurs politiques de compartiment le permettent. DynamoDB ne supprime jamais aucun des objets qu'il crée dans votre compartiment S3 lors d'une exportation.

Demande d'exportation à l'aide de l' AWS CLI

L'exemple suivant montre comment utiliser le AWS CLI pour exporter une table existante nommée MusicCollection vers un compartiment S3 appeléddb-export-musiccollection.

Note

Cette procédure suppose que vous avez activé point-in-time la restauration. Pour l'activer pour la table MusicCollection, exécutez la commande suivante.

aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
Full export

La commande suivante exporte MusicCollection vers un compartiment S3 nommé ddb-export-musiccollection-9012345678 en y ajoutant le préfixe 2020-Nov. Les données de la table sont exportées au format JSON DynamoDB telles qu'elles étaient à un moment spécifique de la fenêtre de restauration à un instant dans le passé, et chiffrées à l'aide d'une clé Amazon S3 (SSE-S3).

Note

Si vous demandez une exportation de table entre comptes, veillez à inclure l'option --s3-bucket-owner.

aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \ --s3-bucket ddb-export-musiccollection-9012345678 \ --s3-prefix 2020-Nov \ --export-format DYNAMODB_JSON \ --export-time 1604632434 \ --s3-bucket-owner 9012345678 \ --s3-sse-algorithm AES256
Incremental export

La commande suivante effectue une exportation incrémentielle en fournissant un nouveau --export-type et une --incremental-export-specification. Remplacez ce qui apparaît en italique par vos propres valeurs. Les temps sont exprimés en secondes depuis l'epoch.

aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:REGION:ACCOUNT:table/TABLENAME \ --s3-bucket BUCKET --s3-prefix PREFIX \ --incremental-export-specification ExportFromTime=1693569600,ExportToTime=1693656000,ExportViewType=NEW_AND_OLD_IMAGES \ --export-type INCREMENTAL_EXPORT
Note

Si vous choisissez de chiffrer votre exportation à l'aide d'une clé protégée par AWS Key Management Service (AWS KMS), la clé doit se trouver dans la même région que le compartiment S3 de destination.

Obtenir des informations sur les exportations passées dans le AWS CLI

Vous pouvez trouver des informations sur des demandes d'exportation que vous avez exécutées antérieurement à l'aide de la commande list-exports. Cette commande envoie la liste de toutes les exportations que vous avez effectuées au cours des 90 derniers jours. Notez que, bien que les métadonnées de tâche d'exportation expirent après 90 jours et que la commande list-exports ne renvoie plus les tâches plus anciennes, les objets restent dans votre compartiment S3 aussi longtemps que leurs politiques de compartiment le permettent. DynamoDB ne supprime jamais aucun des objets qu'il crée dans votre compartiment S3 lors d'une exportation.

Les exportations ont le statut PENDING tant qu'elles n'ont pas abouti ou échoué. En cas de réussite, le statut passe àCOMPLETED. En cas d'échec, le statut passe FAILED à « failure_message et failure_reason ».

Dans l'exemple suivant, nous utilisons le paramètre factultatif table-arn pour répertorier uniquement les exportations d'une table spécifique.

aws dynamodb list-exports \ --table-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog

Pour extraire des informations détaillées sur une tâche d'exportation spécifique, dont ses paramètres de configuration avancés, utilisez la commande describe-export.

aws dynamodb describe-export \ --export-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4

Demande d'une exportation à l'aide du kit SDK AWS

Utilisez ces extraits de code pour demander une exportation de table à l'aide du AWS SDK de votre choix.

Python

Exportation complète

import boto3 from datetime import datetime # remove endpoint_url for real use client = boto3.client('dynamodb') # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/export_table_to_point_in_time.html client.export_table_to_point_in_time( TableArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE', ExportTime=datetime(2023, 9, 20, 12, 0, 0), S3Bucket='bucket', S3Prefix='prefix', S3SseAlgorithm='AES256', ExportFormat='DYNAMODB_JSON' )

Exportation incrémentielle

import boto3 from datetime import datetime client = boto3.client('dynamodb') client.export_table_to_point_in_time( TableArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE', IncrementalExportSpecification={ 'ExportFromTime': datetime(2023, 9, 20, 12, 0, 0), 'ExportToTime': datetime(2023, 9, 20, 13, 0, 0), 'ExportViewType': 'NEW_AND_OLD_IMAGES' }, ExportType='INCREMENTAL_EXPORT', S3Bucket='bucket', S3Prefix='prefix', S3SseAlgorithm='AES256', ExportFormat='DYNAMODB_JSON' )

Obtenir des informations sur les exportations passées à l'aide du AWS SDK

Utilisez ces extraits de code pour obtenir des informations sur les anciennes exportations de tables à l'aide du AWS SDK de votre choix.

Python

Exportation complète

import boto3 client = boto3.client('dynamodb') # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/list_exports.html print( client.list_exports( TableArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE', ) )

Exportation incrémentielle

import boto3 client = boto3.client('dynamodb') # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/describe_export.html print( client.describe_export( ExportArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE/export/01695353076000-06e2188f', )['ExportDescription'] )