Anfordern eines Tabellenexports in DynamoDB - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anfordern eines Tabellenexports in DynamoDB

DynamoDB-Tabellenexporte ermöglichen es Ihnen, Tabellendaten in einen Amazon S3 S3-Bucket zu exportieren, sodass Sie Analysen und komplexe Abfragen Ihrer Daten mithilfe anderer AWS Services wie Athena, Amazon SageMaker AI AWS Glue, Amazon EMR und durchführen können. AWS Lake Formation Sie können einen Tabellenexport mit der AWS Management Console, der oder der AWS CLI DynamoDB-API anfordern.

Anmerkung

Der Antragsteller zahlt, dass Amazon S3 S3-Buckets nicht unterstützt werden.

DynamoDB unterstützt sowohl den vollständigen Export als auch den inkrementellen Export:

  • Mit vollständigen Exporten können Sie einen vollständigen Snapshot Ihrer Tabelle von einem beliebigen Zeitpunkt innerhalb des point-in-time Wiederherstellungsfensters (PITR) in Ihren Amazon S3 S3-Bucket exportieren.

  • Mit inkrementellen Exporten können Sie Daten aus Ihrer DynamoDB-Tabelle, die zwischen einem bestimmten Zeitraum geändert, aktualisiert oder gelöscht wurden, innerhalb Ihres PITR-Fensters in Ihren Amazon-S3-Bucket exportieren.

Voraussetzungen

PITR aktivieren

Um die Funktion „Nach S3 exportieren“ verwenden zu können, müssen Sie PITR für Ihre Tabelle aktivieren. Einzelheiten zur Aktivierung von PITR finden Sie unter oint-in-timeP-Wiederherstellung. Wenn Sie einen Export für eine Tabelle anfordern, für die PITR nicht aktiviert ist, schlägt Ihre Anfrage fehl und es wird eine Ausnahmemeldung angezeigt: „Beim Aufrufen des ExportTableToPointInTime Vorgangs ist ein Fehler aufgetreten (PointInTimeRecoveryUnavailableException): Die Point-in-Time-Wiederherstellung ist für die Tabelle 'my-dynamodb-tablenicht aktiviert“. Sie können nur ab einem Zeitpunkt anfordern und exportieren, der innerhalb Ihrer konfigurierten RecoveryPeriodInDays PITR liegt.

Einrichten von S3-Berechtigungen

Sie können Ihre Tabellendaten in jeden Amazon S3-Bucket exportieren, in den Sie schreiben dürfen. Der Ziel-Bucket muss sich nicht in derselben AWS Region befinden oder denselben Besitzer haben wie der Besitzer der Quelltabelle. Ihre AWS Identity and Access Management (IAM-) Richtlinie muss es Ihnen ermöglichen, S3-Aktionen (s3:AbortMultipartUploads3:PutObject, unds3:PutObjectAcl) und die DynamoDB-Exportaktion () auszuführen. dynamodb:ExportTableToPointInTime Hier ist ein Beispiel für eine Beispielrichtlinie, die Ihren Benutzern Berechtigungen zum Ausführen von Exporten in einen S3-Bucket gewährt.

{ "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/*" } ] }

Wenn Sie in einen Amazon S3 S3-Bucket schreiben müssen, der sich in einem anderen Konto befindet, oder wenn Sie keine Schreibberechtigungen haben, muss der Besitzer des Amazon S3 S3-Buckets eine Bucket-Richtlinie hinzufügen, damit Sie aus DynamoDB in diesen Bucket exportieren können. Hier ist eine Beispielrichtlinie für den Amazon S3 S3-Ziel-Bucket.

{ "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/*" } ] }

Das Widerrufen dieser Berechtigungen während eines Exports führt zu Teildateien.

Anmerkung

Wenn die Tabelle oder der Bucket, in die/den Sie exportieren, mit vom Kunden verwalteten Schlüsseln verschlüsselt ist, müssen die Richtlinien dieses KMS-Schlüssels DynamoDB die Berechtigung zur Verwendung erteilen. Diese Berechtigung wird durch den IAM-Benutzer/die IAM-Rolle erteilt, der/die den Exportauftrag auslöst. Weitere Informationen zur Verschlüsselung, einschließlich Best Practices, finden Sie unter So verwendet DynamoDB AWS KMS und Using a custom KMS key (Verwendung eines benutzerdefinierten KMS-Schlüssels).

Anfordern eines Exports mit der AWS Management Console

Das folgende Beispiel zeigt, wie Sie mit der DynamoDB-Konsole eine vorhandene Tabelle namens MusicCollection im Zustand eines bestimmten Zeitpunkts wiederherstellen.

Anmerkung

Bei diesem Verfahren wird davon ausgegangen, dass Sie die point-in-time Wiederherstellung aktiviert haben. Um es für die MusicCollection Tabelle zu aktivieren, wählen Sie auf der Registerkarte Übersicht der Tabelle im Abschnitt Tabellendetails die Option Für oint-in-timeP-Wiederherstellung aktivieren aus.

So fordern Sie einen Tabellenexport an
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die DynamoDB-Konsole unter. https://console.aws.amazon.com/dynamodb/

  2. Klicken Sie im Navigationsbereich links in der Konsole auf Exports to S3 (Exporte nach S3).

  3. Wählen Sie die Schaltfläche Nach S3 exportieren.

  4. Wählen Sie eine Quelltabelle und den Ziel-S3-Bucket aus. Wenn der Ziel-Bucket Ihrem Konto gehört, können Sie die Schaltfläche Browse S3 (S3 durchsuchen) verwenden, um ihn zu finden. Geben Sie andernfalls die URL des Buckets ein und verwenden Sie dabei das s3://bucketname/prefix format. prefix ist ein optionaler Ordner, um Ihren Ziel-Bucket organisiert zu halten.

  5. Wählen Sie Vollständiger Export oder Inkrementeller Export. Bei einem vollständigen Export wird der vollständige Tabellen-Snapshot Ihrer Tabelle so ausgegeben, wie er zu dem von Ihnen angegebenen Zeitpunkt war. Bei einem inkrementellen Export werden die Änderungen ausgegeben, die während des angegebenen Exportzeitraums an Ihrer Tabelle vorgenommen wurden. Ihre Ausgabe ist komprimiert, sodass sie nur den endgültigen Status des Elements aus dem Exportzeitraum enthält. Das Element wird nur einmal im Export angezeigt, auch wenn es innerhalb desselben Exportzeitraums mehrfach aktualisiert wurde.

    Full export
    1. Wählen Sie den Zeitpunkt aus, ab dem Sie den vollständigen Tabellen-Snapshot exportieren möchten. Dies kann ein beliebiger Zeitpunkt innerhalb des PITR-Zeitfensters sein. Alternativ können Sie Aktuelle Zeit auswählen, um den neuesten Snapshot zu exportieren.

    2. Wählen Sie für Exportiertes Dateiformat zwischen DynamoDB JSON und Amazon Ion. Standardmäßig wird Ihre Tabelle ab dem letzten wiederherstellbaren Zeitpunkt im Point-in-Time-Wiederherstellungsfenster im DynamoDB JSON-Format exportiert und mit einem Amazon S3-Schlüssel (SSE-S3) verschlüsselt. Sie können diese Exporteinstellungen bei Bedarf ändern.

      Anmerkung

      Wenn Sie Ihren Export mit einem durch AWS Key Management Service (AWS KMS) geschützten Schlüssel verschlüsseln möchten, muss sich der Schlüssel in derselben Region wie der S3-Ziel-Bucket befinden.

    Incremental export
    1. Wählen Sie den Exportzeitraum aus, für den Sie die inkrementellen Daten exportieren möchten. Wählen Sie eine Startzeit innerhalb des PITR-Zeitfensters aus. Die Dauer des Exportzeitraums muss mindestens 15 Minuten betragen und darf nicht länger als 24 Stunden sein. Die Startzeit ist im Exportzeitraums enthalten, die Endzeit nicht.

    2. Wählen Sie zwischen dem Absoluten Modus oder dem Relativen Modus.

      1. Im Absoluten Modus werden inkrementelle Daten für den von Ihnen angegebenen Zeitraum exportiert.

      2. Im Relativen Modus werden inkrementelle Daten für einen Exportzeitraum exportiert, der sich auf die Übermittlungszeit Ihres Exportauftrags bezieht.

    3. Wählen Sie für Exportiertes Dateiformat zwischen DynamoDB JSON und Amazon Ion. Standardmäßig wird Ihre Tabelle ab dem letzten wiederherstellbaren Zeitpunkt im Point-in-Time-Wiederherstellungsfenster im DynamoDB JSON-Format exportiert und mit einem Amazon S3-Schlüssel (SSE-S3) verschlüsselt. Sie können diese Exporteinstellungen bei Bedarf ändern.

      Anmerkung

      Wenn Sie Ihren Export mit einem durch AWS Key Management Service (AWS KMS) geschützten Schlüssel verschlüsseln möchten, muss sich der Schlüssel in derselben Region wie der Ziel-S3-Bucket befinden.

    4. Wählen Sie für den Exportansichtstyp entweder Neue und alte Bilder oder Nur neue Bilder aus. Neues Bild zeigt den aktuellen Status des Elements Altes Bild zeigt den Status des Elements unmittelbar vor dem angegebenen Startdatum und der angegebenen Startzeit Die Standardeinstellung ist Neue und alte Bilder. Weitere Informationen zu neuen und alten Bildern finden Sie unter Inkrementelle Exportausgabe.

  6. Wählen Sie Exportieren, um zu beginnen.

Exportierte Daten sind nicht transaktionskonsistent. Ihre Transaktionsvorgänge können zwischen zwei Exportausgaben hin- und hergerissen werden. Eine Teilmenge von Artikeln kann durch einen Transaktionsvorgang geändert werden, der sich im Export widerspiegelt, während eine andere Teilmenge von Änderungen in derselben Transaktion nicht in derselben Exportanfrage widergespiegelt wird. Die Exporte sind jedoch letztendlich konsistent. Wenn eine Transaktion während eines Exports unterbrochen wird, haben Sie die verbleibende Transaktion in Ihrem nächsten zusammenhängenden Export ohne Duplikate. Die für Exporte verwendeten Zeiträume basieren auf einer internen Systemuhr und können um eine Minute von der lokalen Uhr Ihrer Anwendung abweichen.

Einzelheiten zu vergangenen Exporten finden Sie in AWS Management Console

Informationen zu Exportaufgaben, die Sie in der Vergangenheit ausgeführt haben, finden Sie, indem Sie in der Navigationsleiste den Abschnitt Exporte nach S3 auswählen. Dieser Abschnitt enthält eine Liste aller Exporte, die Sie in den letzten 90 Tagen erstellt haben. Wählen Sie den ARN einer Aufgabe aus, die auf der Registerkarte Exporte aufgeführt ist, um Informationen zu diesem Export abzurufen, einschließlich aller von Ihnen ausgewählten erweiterten Konfigurationseinstellungen. Beachten Sie, dass die Metadaten für die Exportaufgabe nach 90 Tagen ablaufen und Aufträge, die älter sind als diese, in dieser Liste nicht mehr gefunden werden, die Objekte in Ihrem S3 Bucket so lange bleiben, wie es ihre Bucket-Richtlinien zulassen. DynamoDB löscht nie eines der Objekte, die es während eines Exports in Ihrem S3 Bucket erstellt hat.

Anfordern eines Exports mit AWS CLI

Das folgende Beispiel zeigt, wie Sie mit dem AWS CLI eine vorhandene Tabelle mit dem MusicCollection Namen in einen S3-Bucket namens exportieren könnenddb-export-musiccollection.

Anmerkung

Bei diesem Verfahren wird davon ausgegangen, dass Sie die point-in-time Wiederherstellung aktiviert haben. Führen Sie den folgenden Befehl aus, um diese Funktion für die Tabelle MusicCollection zu aktivieren.

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

Der folgende Befehl exportiert den MusicCollection in einen S3 Bucket namens ddb-export-musiccollection-9012345678 mit dem Präfix 2020-Nov. Die Tabellendaten werden im DynamoDB JSON-Format von einem bestimmten Zeitpunkt innerhalb des Point-in-Time-Wiederherstellungsfensters exportiert und mit einem Amazon S3-Schlüssel (SSE-S3) verschlüsselt.

Anmerkung

Wenn Sie einen kontenübergreifenden Tabellenexport anfordern, stellen Sie sicher, dass Sie die Option --s3-bucket-owner einfügen.

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

Der folgende Befehl führt einen inkrementellen Export durch, indem er einen neuen --export-type und eine neue --incremental-export-specification angibt. Ersetzen Sie alles, was kursiv geschrieben ist, durch Ihre eigenen Werte. Die Zeiten werden als Sekunden seit der Epoche angegeben.

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
Anmerkung

Wenn Sie Ihren Export mit einem durch AWS Key Management Service (AWS KMS) geschützten Schlüssel verschlüsseln möchten, muss sich der Schlüssel in derselben Region wie der S3-Ziel-Bucket befinden.

Details zu vergangenen Exporten finden Sie in AWS CLI

Informationen zu Exportaufgaben, die Sie in der Vergangenheit ausgeführt haben, finden Sie mithilfe des list-exports-Befehls. Dieser Befehl gibt eine Liste aller Exporte zurück, die Sie in den letzten 90 Tagen erstellt haben. Beachten Sie, dass, obwohl die Metadaten der Exportaufgabe nach 90 Tagen ablaufen und Aufträge, die älter sind, nicht mehr vom list-exports Befehl zurückgegeben werden, die Objekte in Ihrem S3 Bucket so lange erhalten bleiben, wie es ihre Bucket-Richtlinien zulassen. DynamoDB löscht nie eines der Objekte, die es während eines Exports in Ihrem S3 Bucket erstellt hat.

Exporte haben den Status PENDING, bis sie entweder erfolgreich sind oder fehlschlagen. Wenn sie erfolgreich sind, ändert sich der Status zuCOMPLETED. Wenn sie fehlschlagen, ändert sich der Status zu „FAILEDmit einem failure_message undfailure_reason“.

Im folgenden Beispiel verwenden wir den optionalen table-arn Parameter, um nur Exporte einer bestimmten Tabelle aufzulisten.

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

Um detaillierte Informationen zu einer bestimmten Exportaufgabe, einschließlich erweiterter Konfigurationseinstellungen, abzurufen, verwenden Sie den describe-export-Befehl.

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

Anfordern eines Exports mit dem AWS -SDK

Verwenden Sie diese Codefragmente, um einen Tabellenexport mit dem AWS SDK Ihrer Wahl anzufordern.

Python

Vollständiger Export

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

Inkrementeller Export

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

Informationen zu früheren Exporten mithilfe des SDK abrufen AWS

Verwenden Sie diese Codefragmente, um Details zu früheren Tabellenexporten mit dem AWS SDK Ihrer Wahl abzurufen.

Python

Liste

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

Beschreiben

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