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.
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 AI, Amazon et. EMR AWS Lake Formation Vous pouvez demander une exportation de table à l'aide du AWS Management Console AWS CLI, du ou de DynamoDBAPI.
Note
Le demandeur paie les buckets 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.
-
Grâce aux exportations incrémentielles, vous pouvez exporter les données de votre table DynamoDB qui ont été modifiées, mises à jour ou supprimées entre une période spécifiée, dans PITR votre fenêtre, vers votre compartiment Amazon S3.
Rubriques
Prérequis
Activation d’PITR
Pour utiliser la fonctionnalité d'exportation vers S3, vous devez l'activer PITR sur votre table. Pour plus de détails sur la façon d'activerPITR, consultez la section P oint-in-time recovery. Si vous demandez l'exportation d'une table qui n'est pas PITR activée, votre demande échouera avec un message d'exception : « Une erreur s'est produite (PointInTimeRecoveryUnavailableException) lors de l'appel de l'ExportTableToPointInTime
opé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": "amzn-s3-demo-bucket-AllowWrites",
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::your-bucket/*"
}
]
}
Si vous devez écrire dans un compartiment Amazon S3 qui se trouve dans un autre compte ou si vous n'êtes pas autorisé à écrire, le propriétaire du compartiment Amazon 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 Amazon 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:::amzn-s3-demo-bucket/*"
}
]
}
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 exportez est chiffré à l'aide de clés gérées par le client, les politiques relatives à cette KMS clé doivent autoriser DynamoDB à l'utiliser. Cette autorisation est accordée par le biais de l'IAMutilisateur/rôle qui déclenche la tâche d'exportation. Pour plus d'informations sur le chiffrement, y compris les meilleures pratiques, consultez Comment DynamoDB AWS KMS utilise et Utilisation
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 part du principe 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
Connectez-vous à la console DynamoDB AWS Management Console et ouvrez-la à l'adresse. https://console.aws.amazon.com/dynamodb/
-
Dans le panneau de navigation sur le côté gauche de la console, choisissez Exportations vers S3.
-
Sélectionnez le bouton Exporter vers S3.
-
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, entrez le nom URL du compartiment à l'aide
s3://
dubucketname
/prefix
format.prefix
dossier facultatif pour vous aider à organiser votre compartiment de destination. -
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.
-
Sélectionnez l'instant précis à partir duquel vous voulez que l'instantané complet de la table soit exporté. Cela peut se produire à n'importe quel moment dans la PITR fenêtre. Vous pouvez également sélectionner Heure actuelle pour exporter l'instantané le plus récent.
-
Pour le format de fichier exporté, choisissez entre JSONDynamoDB et Amazon Ion. Par défaut, votre table sera exportée au format DynamoDB JSON à partir de l'heure de restauration la plus récente dans la fenêtre de restauration instantanée et chiffrée à l'aide d'une clé Amazon S3 (-S3). SSE 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.
-
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.
Pour en savoir plus sur les exportations passées, consultez 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'une ARN des tâches répertoriées 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 part du principe 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
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 des tables seront exportées au format JSON DynamoDB à partir d'un moment précis pendant la période de récupération et chiffrées à l'aide d'une clé SSE Amazon S3 (-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
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.
Pour en savoir plus sur les exportations passées, consultez 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'exportation à l'aide du AWS
SDK
Utilisez ces extraits de code pour demander une exportation de table en utilisant le code AWS SDK de votre choix.
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 en utilisant le code AWS SDK de votre choix.
List
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',
)
)
Décrivez
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']
)