Richiesta di esportazione di una tabella in DynamoDB - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Richiesta di esportazione di una tabella in DynamoDB

Le esportazioni di tabelle DynamoDB ti consentono di esportare i dati delle tabelle in un bucket Amazon S3, consentendoti di eseguire analisi e query complesse sui tuoi dati utilizzando altri AWS servizi come Athena, AWS Glue, Amazon SageMakerEMR, Amazon e AWS Lake Formation. È possibile richiedere l'esportazione di una tabella utilizzando AWS Management Console, il AWS CLI o DynamoDB. API

Nota

I bucket Amazon S3 a pagamento del richiedente non sono supportati.

DynamoDB supporta sia l'esportazione completa che l'esportazione incrementale:

  • Con le esportazioni complete, puoi esportare un'istantanea completa della tua tabella da qualsiasi momento all'interno della finestra di point-in-time recovery (PITR) nel tuo bucket Amazon S3.

  • Con le esportazioni incrementali, puoi esportare i dati dalla tabella DynamoDB che sono stati modificati, aggiornati o eliminati tra un periodo di tempo specificato, all'interno della PITR tua finestra, nel tuo bucket Amazon S3.

Prerequisiti

Abilita PITR

Per utilizzare la funzionalità di esportazione in S3, devi abilitarla PITR sul tuo tavolo. Per i dettagli su come abilitarePITR, consulta P oint-in-time recovery. Se richiedi un'esportazione per una tabella che non è PITR stata abilitata, la richiesta avrà esito negativo e verrà visualizzato un messaggio di eccezione: «Si è verificato un errore (PointInTimeRecoveryUnavailableException) durante la chiamata dell'ExportTableToPointInTimeoperazione: Il ripristino del punto in tempo non è abilitato per la tabella 'my-dynamodb-table».

Impostazione delle autorizzazioni S3

È possibile esportare i dati della tabella in qualsiasi bucket Amazon S3 per cui si ha l'autorizzazione di scrittura. Non è necessario che il bucket di destinazione sia nello stesso AWS Regionano o hanno lo stesso proprietario del proprietario della tabella di origine. La tua AWS Identity and Access Management (IAM) la policy deve consentire di eseguire le azioni S3 (s3:AbortMultipartUploads3:PutObject, es3:PutObjectAcl) e l'azione di esportazione di DynamoDB (). dynamodb:ExportTableToPointInTime Ecco un esempio di policy di esempio che concederà all'utente le autorizzazioni per eseguire esportazioni verso un bucket 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/*" } ] }

Se devi scrivere su un bucket S3 che si trova in un altro account o non disponi delle autorizzazioni per scrivere, il proprietario del bucket S3 deve aggiungere una policy per i bucket che ti consenta di esportare da DynamoDB verso quel bucket. Ecco un esempio di policy sul bucket S3 di destinazione.

{ "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 revoca di queste autorizzazioni mentre è in corso un'esportazione comporterà la creazione di file parziali.

Nota

Se la tabella o il bucket in cui stai esportando è crittografato con chiavi gestite dal cliente, le policy di quella KMS chiave devono autorizzare DynamoDB a utilizzarla. Questa autorizzazione viene concessa tramite l'IAMutente/ruolo che attiva il processo di esportazione. Per ulteriori informazioni sulla crittografia, incluse le best practice, consulta Come utilizza DynamoDB AWS KMSe Utilizzo di una chiave personalizzata KMS.

Richiedere un'esportazione utilizzando il AWS Management Console

Nell'esempio seguente viene mostrato come utilizzare la console DynamoDB per esportare una tabella esistente denominata MusicCollection.

Nota

Questa procedura presuppone che sia stato point-in-time abilitato il ripristino. Per abilitarla per la MusicCollection tabella, nella scheda Panoramica della tabella, nella sezione Dettagli della tabella, scegli Abilita il oint-in-timeripristino P.

Come richiedere l'esportazione di una tabella
  1. Accedi a AWS Management Console e apri la console DynamoDB all'indirizzo. https://console.aws.amazon.com/dynamodb/

  2. Nel riquadro di navigazione sul lato sinistro della console, scegli Exports to S3 (Esportazioni su S3).

  3. Seleziona il pulsante Esporta in S3.

  4. Scegli una tabella di origine e un bucket S3 di destinazione. Se il bucket di destinazione è di proprietà dell'account, è possibile utilizzare il pulsante Browse S3 (Sfoglia S3) per trovarlo. Altrimenti, inserisci il URL bucket utilizzando s3://bucketname/prefix format. la prefix cartella opzionale per mantenere organizzato il bucket di destinazione.

  5. Scegli Esportazione completa o Esportazione incrementale. Un'esportazione completa restituisce lo snapshot dell'intera tabella così com'era nel point-in-time specificato. Un'esportazione incrementale restituisce le modifiche apportate alla tabella durante il periodo di esportazione specificato. L'output è compattato in modo da contenere solo lo stato finale dell'articolo relativo al periodo di esportazione. L'elemento verrà visualizzato solo una volta nell'esportazione anche se presenta più aggiornamenti nello stesso periodo di esportazione.

    Full export
    1. Seleziona il point-in-time di cui desideri esportare lo snapshot completo della tabella. Questo può avvenire in qualsiasi momento all'interno della PITR finestra. In alternativa, puoi selezionare Ora corrente per esportare lo snapshot più recente.

    2. Per il formato di file esportato, scegli tra JSONDynamoDB e Amazon Ion. Per impostazione predefinita, la tabella verrà esportata in formato JSON DynamoDB dall'ultima finestra di ripristino temporale ripristinabile nella finestra di ripristino point-in-time e crittografata utilizzando una chiave Amazon S3 (-S3). SSE Se necessario, puoi modificare queste impostazioni di esportazione.

      Nota

      Se scegli di crittografare l'esportazione utilizzando una chiave protetta da AWS Key Management Service (AWS KMS), la chiave deve trovarsi nella stessa regione del bucket S3 di destinazione.

    Incremental export
    1. Seleziona il Periodo di esportazione di cui desideri esportare i dati incrementali. Scegli un'ora di inizio all'interno della PITR finestra. La durata del periodo di esportazione deve essere di almeno 15 minuti e non superiore a 24 ore. L'ora di inizio del periodo di esportazione è inclusa e l'ora di fine è esclusa.

    2. Scegli tra Modalità assoluta o Modalità relativa.

      1. Modalità assoluta esporterà i dati incrementali per il periodo di tempo specificato.

      2. Modalità relativa esporterà i dati incrementali per un periodo di esportazione relativo all'ora di invio del processo di esportazione.

    3. Per il formato di file esportato, scegli tra JSONDynamoDB e Amazon Ion. Per impostazione predefinita, la tabella verrà esportata in formato JSON DynamoDB dall'ultima finestra di ripristino temporale ripristinabile nella finestra di ripristino point-in-time e crittografata utilizzando una chiave Amazon S3 (-S3). SSE Se necessario, puoi modificare queste impostazioni di esportazione.

      Nota

      Se scegli di crittografare l'esportazione utilizzando una chiave protetta da AWS Key Management Service (AWS KMS), la chiave deve trovarsi nella stessa regione del bucket S3 di destinazione.

    4. Per Esporta il tipo di visualizzazione, seleziona Nuove e vecchie immagini o Solo nuove immagini. La nuova immagine fornisce lo stato più recente dell'elemento. La vecchia immagine mostra lo stato dell'elemento subito prima della "data e ora di inizio" specificate. L'impostazione predefinita è Nuove e vecchie immagini. Per ulteriori informazioni su nuove e vecchie immagini, consulta Output di esportazione incrementale.

  6. Scegli Esporta per iniziare.

I dati esportati non sono coerenti dal punto di vista delle transazioni. Le operazioni di transazione possono essere suddivise tra due output di esportazione. Un sottoinsieme di articoli può essere modificato da un'operazione di transazione riflessa nell'esportazione, mentre un altro sottoinsieme di modifiche nella stessa transazione non si riflette nella stessa richiesta di esportazione. Tuttavia, le esportazioni presentano tutte una consistenza finale. Se una transazione viene interrotta durante un'esportazione, la transazione rimanente verrà inserita nella successiva esportazione contigua, senza duplicati. I periodi di tempo utilizzati per le esportazioni si basano su un orologio di sistema interno e possono variare di un minuto rispetto all'orologio locale dell'applicazione.

Per maggiori dettagli sulle esportazioni passate, consulta AWS Management Console

Puoi trovare informazioni sulle attività di esportazione che hai eseguito in passato scegliendo la sezione Esportazioni in S3 nella barra laterale di navigazione. Questa scheda contiene un elenco di tutte le esportazioni create negli ultimi 90 giorni. Seleziona un'attività elencata nella scheda Esportazioni per recuperare informazioni su quell'esportazione, incluse le impostazioni di configurazione avanzate che hai scelto. ARN Notare che, sebbene i metadati delle attività di esportazione scadano dopo 90 giorni e i processi più vecchi non siano più presenti in questo elenco, gli oggetti nel bucket S3 rimangono finché le relative policy di bucket lo consentono. DynamoDB non elimina mai alcun oggetto creato nel bucket S3 durante un'esportazione.

Richiedere un'esportazione utilizzando il AWS CLI

L'esempio seguente mostra come utilizzare AWS CLI per esportare una tabella esistente denominata MusicCollection in un bucket S3 chiamato. ddb-export-musiccollection

Nota

Questa procedura presuppone che tu abbia abilitato il ripristino. point-in-time Per abilitarlo per la tabella MusicCollection, emettere il comando seguente.

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

Il comando esporta MusicCollection in un bucket S3 denominato ddb-export-musiccollection-9012345678 con un prefisso 2020-Nov. I dati della tabella verranno esportati in formato JSON DynamoDB a partire da un momento specifico all'interno della finestra di ripristino point-in-time e crittografati utilizzando una chiave Amazon S3 (-S3). SSE

Nota

Se si richiede l'esportazione di una tabella tra più account, assicurarsi di includere l'opzione --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

Il comando seguente esegue un'esportazione incrementale fornendo un nuovo --export-type e --incremental-export-specification. Sostituisci i tuoi valori con qualsiasi cosa in corsivo. I tempi sono specificati in secondi dall'epoca.

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
Nota

Se scegli di crittografare l'esportazione utilizzando una chiave protetta da AWS Key Management Service (AWS KMS), la chiave deve trovarsi nella stessa regione del bucket S3 di destinazione.

Ottenere dettagli sulle esportazioni passate in AWS CLI

Le informazioni sulle richieste di esportazione eseguite in passato possono essere recuperate utilizzando il comando list-exports. Questo comando restituisce un elenco di tutte le esportazioni create negli ultimi 90 giorni. Notare che, sebbene i metadati dei processi di esportazione scadano dopo 90 giorni e i processi più vecchi non siano restituiti dal comando list-exports, gli oggetti nel bucket S3 rimangono finché le relative policy di bucket lo consentono. DynamoDB non elimina mai alcun oggetto creato nel bucket S3 durante un'esportazione.

Lo stato delle esportazioni è PENDING fino a quando non hanno esito positivo o negativo. Se hanno successo, lo stato diventaCOMPLETED. Se falliscono, lo stato diventa FAILED con una failure_message efailure_reason.

Nell'esempio seguente viene utilizzato il parametro table-arn facoltativo per elencare solo le esportazioni di una tabella specifica.

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

Per recuperare informazioni dettagliate su un processo di esportazione specifico, incluse le impostazioni di configurazione avanzate, utilizza il comando describe-export.

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

Richiedere un'esportazione utilizzando il AWS SDK

Usa questi frammenti di codice per richiedere l'esportazione di una tabella utilizzando il AWS SDKdi tua scelta.

Python

Esportazione completa

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' )

Esportazione incrementale

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' )

Ottenere dettagli sulle esportazioni passate utilizzando il AWS SDK

Usa questi frammenti di codice per ottenere dettagli sulle esportazioni di tabelle precedenti utilizzando il AWS SDKa tua scelta.

Python

Elenco

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', ) )

Descriva

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'] )