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.
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 Dienste 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 Recovery (PITR) -Fensters in Ihren Amazon S3 S3-Bucket exportieren.
-
Mit inkrementellen Exporten können Sie Daten aus Ihrer DynamoDB-Tabelle, die zwischen einem bestimmten Zeitraum innerhalb Ihres PITR Fensters geändert, aktualisiert oder gelöscht wurden, in Ihren Amazon S3 S3-Bucket exportieren.
Voraussetzungen
PITR aktivieren
Um die Funktion „Nach S3 exportieren“ verwenden zu können, müssen Sie sie in Ihrer Tabelle aktivierenPITR. Einzelheiten zur Aktivierung finden Sie PITR unter oint-in-timeP-Wiederherstellung. Wenn Sie einen Export für eine Tabelle anfordern, für die diese Option nicht PITR aktiviert ist, schlägt Ihre Anfrage fehl und es wird eine Ausnahmemeldung angezeigt: „Beim Aufrufen der ExportTableToPointInTime
Operation ist ein Fehler aufgetreten (PointInTimeRecoveryUnavailableException): Die Point-in-Time-Wiederherstellung ist für die Tabelle 'nicht aktiviertmy-dynamodb-table“.
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:AbortMultipartUpload
s3:PutObject
, unds3:PutObjectAcl
) und die DynamoDB-Exportaktion (dynamodb:ExportTableToPointInTime
) auszuführen. 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 den Sie exportieren, mit vom Kunden verwalteten Schlüsseln verschlüsselt ist, müssen die Richtlinien dieses KMS Schlüssels DynamoDB die Erlaubnis geben, ihn zu verwenden. Diese Berechtigung wird über den IAM Benutzer/die Rolle erteilt, die den Exportauftrag auslöst. Weitere Informationen zur Verschlüsselung, einschließlich bewährter Methoden, finden Sie unter Verwendung AWS KMS und Verwendung eines benutzerdefinierten KMS
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 Wiederherstellung aktiviert point-in-time 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
Melden Sie sich bei der an AWS Management Console und öffnen Sie die DynamoDB-Konsole unter. https://console.aws.amazon.com/dynamodb/
-
Klicken Sie im Navigationsbereich links in der Konsole auf Exports to S3 (Exporte nach S3).
-
Wählen Sie die Schaltfläche Nach S3 exportieren.
-
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. Andernfalls geben Sie mithilfe URL des Ordners
prefix
ist ein optionaler Buckets3://
den des Buckets ein, damit Ihr Ziel-Bucket besser organisiert ist.bucketname
/prefix
format. -
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 so komprimiert, dass sie nur den endgültigen Zustand des Artikels aus dem Exportzeitraum enthält. Das Element wird nur einmal im Export angezeigt, auch wenn es innerhalb desselben Exportzeitraums mehrfach aktualisiert wurde.
-
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 Fensters sein. Alternativ können Sie Aktuelle Zeit auswählen, um den neuesten Snapshot zu exportieren.
-
Wählen Sie für das exportierte Dateiformat zwischen DynamoDB JSON und Amazon Ion. Standardmäßig wird Ihre Tabelle ab dem letzten wiederherstellbaren Zeitpunkt im Point-in-Time-Wiederherstellungsfenster im JSON DynamoDB-Format exportiert und mit einem Amazon S3 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.
-
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, wird die verbleibende Transaktion in Ihrem nächsten zusammenhängenden Export ohne Duplikate angezeigt. 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 der 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 die Aufgabe ARN 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 mithilfe von eine vorhandene Tabelle mit dem MusicCollection
Namen in einen S3-Bucket namens exportieren könnenddb-export-musiccollection
. AWS CLI
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
Der folgende Befehl exportiert den MusicCollection
in einen S3 Bucket namens ddb-export-musiccollection-9012345678
mit dem Präfix 2020-Nov
. Tabellendaten werden ab einem bestimmten Zeitpunkt innerhalb des Point-in-Time-Wiederherstellungsfensters im JSON DynamoDB-Format exportiert und mit einem Amazon S3 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
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.
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 „FAILED
mit 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
Beantragen eines Exports mit dem AWS
SDK
Verwenden Sie diese Codefragmente, um einen Tabellenexport mit dem AWS SDK Ihrer Wahl anzufordern.
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'
)
Details zu vergangenen Exporten abrufen mit dem AWS SDK
Verwenden Sie diese Codefragmente, um Details zu früheren Tabellenexporten mithilfe AWS SDK der Datei Ihrer Wahl abzurufen.
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']
)