Wie kann ich meine Amazon-DynamoDB-Tabellen von einem AWS-Konto auf ein anderes migrieren?

Lesedauer: 8 Minute
0

Ich möchte eine kontoübergreifende Amazon-DynamoDB-Tabellenmigration durchführen.

Kurzbeschreibung

Migrieren Sie Ihre DynamoDB-Tabelle auf ein anderes AWS-Konto mit einer der folgenden Methoden, die zu Ihrem Anwendungsfall passen:

  • AWS Backup
  • DynamoDB-Import und -Export nach Amazon Simple Storage Service (Amazon S3)
  • Amazon S3 und AWS Glue
  • Amazon EMR

Lösung

AWS Backup

Sie können AWS Backup verwenden, um kontoübergreifende DynamoDB-Backups zu erstellen. Weitere Informationen finden Sie unter Erstellen von Sicherungskopien für mehrere AWS-Konten und unter AWS-Backup-Demo: Konto- und regionsübergreifendes Backup.

Gehen Sie im Zielkonto wie folgt vor:

  1. Erstellen Sie einen AWS-Backup-Tresor im Zielkonto in der Region, in der Ihre DynamoDB präsent ist.
  2. Verwenden Sie beim Erstellen des Tresors den AWS Key Management Service (AWS KMS)-Schlüssel, den Sie bereits konfiguriert haben. Dies ist der Schlüssel, den Sie bereits mit dem Quellkonto in derselben Organisation geteilt haben.
  3. Nachdem Sie den Tresor erstellt haben, fügen Sie dem Tresor eine AWS Identity and Access Management (IAM)-Richtlinie hinzu. Sie können dies tun, indem Sie die Option Zugriff auf einen Backup-Tresor der Organisation zulassen auswählen. Dadurch können andere Konten innerhalb derselben Organisation in den Tresor kopiert werden.

Gehen Sie im Quellkonto wie folgt vor:

  1. Erstellen Sie im Quellkonto, in dem Ihre DynamoDB vorhanden ist, einen AWS-Backup-Tresor in der Region, in die Ihre Tabellendaten migriert werden müssen.
  2. Verwenden Sie beim Erstellen des Tresors den AWS-KMS-Schlüssel, den Sie bereits konfiguriert haben. Dies ist der Schlüssel, den Sie mit anderen Konten in der Organisation geteilt haben.
  3. Fügen Sie dem Tresor eine IAM-Richtlinie hinzu, die es anderen Konten in der Organisation ermöglicht, in den Tresor zu kopieren. Sie können dies tun, indem Sie die Option Sie können dies tun, indem Sie die Option Zugriff auf einen Backup-Tresor der Organisation zulassen auswählen.
  4. Erstellen Sie einen Backup-Plan, um Backups der DynamoDB-Tabellen im Quellkonto für das Zielkonto zu erstellen.
  5. Wählen Sie für den Backup-Tresor unbedingt den Tresor aus, den Sie im Quellkonto erstellt haben.
  6. Wählen Sie dann die Option In den Tresor eines anderen Kontos kopieren.
  7. Stellen Sie sicher, dass Sie unter Ressourcen zuweisen die Ressourcen angeben, die Sie sichern müssen. Sie können Bestimmte Ressourcentypen einbeziehen wählen.
  8. Wählen Sie für Ausgewählte Ressourcentypen wählen die Option DynamoDB aus. Sie können alle Tabellen oder nur die Tabellen auswählen, die Sie sichern müssen.

Gehen Sie im Zielkonto wie folgt vor:

  1. Navigieren Sie im Zielkonto zu dem Tresor, den Sie erstellt haben.
    Sie können sehen, dass die Wiederherstellungspunkte dieselben sind wie im Quellkonto.
  2. Sie können Ihre DynamoDB-Tabelle im Zielkonto wiederherstellen.

Anmerkung: Für diesen Ansatz müssen sich die Quell- und Zielkonten in der selben Organisation befinden.

DynamoDB-Import und -Export nach Amazon S3

  1. Migrieren Sie die DynamoDB-Tabellendaten, indem Sie die Tabelle in einen Amazon S3-Bucket im Zielkonto exportieren. Stellen Sie sicher, dass DynamoDB über die Berechtigungen s3:ListBucket für diesen S3-Bucket verfügt. Stellen Sie sicher, dass der S3-Bucket keine Zugriffskontrolllisten enthält, die den Zugriff auf die exportierten Daten verweigern.
  2. Nachdem der Export abgeschlossen ist, importieren Sie die Daten aus dem S3-Bucket in eine neue Tabelle im Zielkonto. Weitere Informationen finden Sie unter DynamoDB-Datenimport aus Amazon S3: So funktioniert es.

Anmerkung: Das Exportieren der Tabelle verbraucht keine Lesekapazität der Tabelle und hat keine Auswirkungen auf die Leistung oder Verfügbarkeit der Tabelle. Außerdem verbraucht der Import der Tabelle keine Schreibkapazität. Daher benötigen Sie während des Importvorgangs keine zusätzliche Kapazität.

Amazon S3 und AWS Glue

Sie können Ihre DynamoDB-Tabelle mithilfe eines S3-Buckets und eines AWS-Glue-Jobs auf ein anderes AWS-Konto migrieren.

1.    Sie können die erste Migration der DynamoDB-Tabelle durchführen, indem Sie die Tabellen in einen Amazon-S3-Bucket des anderen Kontos exportieren.

Wenn Sie Ihre Tabellen von Konto A in einen S3-Bucket in Konto B exportieren, gehören die Objekte immer noch Konto A. Die AWS Identify Access Management (IAM)-Benutzer in Konto B können standardmäßig nicht auf die Objekte zugreifen. Die Exportfunktion schreibt keine Daten mit der Zugriffssteuerungsliste (ACL) bucket-owner-full-control. Um dieses Problem mit dem Objekteigentum zu umgehen, fügen Sie nach Abschluss des Exports die Berechtigung PutObjectAcl für alle exportierten Objekte hinzu. Diese Problemumgehung gewährt den Bucket-Besitzern in Konto B Zugriff auf alle exportierten Objekte. Weitere Informationen finden Sie unter Warum kann ich nicht auf ein Objekt zugreifen, dass von einem anderen AWS-Konto in meinen Amazon-S3-Bucket hochgeladen wurde?

2.    Verwenden Sie einen Glue-Job, um die Dateien aus dem S3-Bucket zu lesen und sie in die DynamoDB-Zieltabelle zu schreiben.

Nachdem Sie die Daten wie in Schritt 1 beschrieben, in einen S3-Bucket im Zielkonto exportiert haben, gehen Sie im Zielkonto wie folgt vor:

Führen Sie einen AWS-Glue-Crawler für die Daten in Amazon S3 aus. Der Crawler leitet das Schema ab und erstellt eine AWS-Glue-Datenkatalogtabelle mit dieser Schemadefinition.

Verwenden Sie das AWS Glue Studio, um einen ETL-Job zu erstellen. Nachdem Sie eine Quelle, eine Transformation und ein Ziel angegeben haben, generiert AWS Glue Studio automatisch den PySpark-Code auf der Grundlage dieser Eingaben. Geben Sie für diesen Job die AWS-Glue-Datenkatalogtabelle als Quelle und ApplyMApplyMapping als Transformation an. Geben Sie kein Ziel an. AWS Glue Studio generiert den PySpark-Code, um einen DynamicFrame aus S3 zu erstellen.

Stellen Sie sicher, dass der Schlüsselname und die Datentypzuordnung des von AWS Glue Studio generierten Codes korrekt sind. Wenn die Zuordnungen nicht korrekt sind, ändern Sie den Code und korrigieren Sie die Zuordnungen. Da Sie das Ziel bei der Erstellung des AWS-Glue-Jobs nicht angegeben haben, fügen Sie in diesem Beispiel einen Senkvorgang hinzu, der dem folgenden ähnelt. Durch das Hinzufügen dieser Operation kann der Job direkt in die DynamoDB-Zieltabelle schreiben:

glueContext.write_dynamic_frame_from_options ( frame = Mapped, connection_type = "dynamodb", connection_options = { "dynamodb.region": "", "dynamodb.output.tableName": "", "dynamodb.throughput.write.percent": "1.0" } )

Um die Daten in die Zieltabelle zu laden, führen Sie den Job von AWS Glue Studio oder der Jobs-Seite in der AWS-Glue-Konsole aus.

3.    Nachdem Sie die Tabellen in den S3-Bucket exportiert haben, verwenden Sie DynamoDB Streams und AWS Lambda, um Dateneinfügungen und Aktualisierungen aus der Quelltabelle in die Zieltabelle eines anderen Kontos zu migrieren. Weitere Informationen finden Sie unter Kontoübergreifende Replikation mit Amazon DynamoDB.

AWS Glue

AWS-Glue-ETL-Jobs unterstützen sowohl das Lesen von Daten aus als auch das Schreiben von Daten in die DynamoDB-Tabelle eines anderen Kontos. Verwenden Sie den Parameter dynamodb.sts.roleArn, um eine kontoübergreifende Rolle im Job-Skript anzunehmen. Wenn Sie diese Rolle übernehmen, erhalten Sie die temporären Anmeldeinformationen, die für den kontoübergreifenden Zugriff auf DynamoDB verwendet werden müssen. Weitere Informationen finden Sie unter Konto- und regionsübergreifender Zugriff auf DynamoDB-Tabellen und So exportieren Sie eine Amazon-DynamoDB-Tabelle mit AWS Step Functions und AWS Glue nach Amazon S3.

Amazon EMR

Wenn Sie Amazon EMR verwenden, um DynamoDB-Tabellen zu migrieren, verwenden Sie je nach Anwendungsfall eine der folgenden Optionen:

  • Wenn Sie sich Ausfallzeiten während der Migration leisten können, beenden Sie die Schreibvorgänge in die Quelltabelle. Dadurch wird sichergestellt, dass die Zieltabelle mit der Quelltabelle synchronisiert ist.
  • Wenn Sie sich keine Ausfallzeiten leisten können, müssen Sie alle Transaktionen, die während der Migration stattfinden, in einer Staging-Tabelle speichern. Nachdem die ursprüngliche Tabelle auf das andere AWS-Konto migriert wurde, übertragen Sie die neuen Transaktionen von der Staging-Tabelle in die Zieltabelle.

Anmerkung: Die Zeit, die für die Migration von Tabellen mit Amazon EMR benötigt wird, kann sehr unterschiedlich sein. Die Varianz hängt von der bereitgestellten Durchsatz-Netzwerkleistung der DynamoDB-Tabelle und der Menge der in der Tabelle gespeicherten Daten ab.

Gehen Sie wie folgt vor, um eine DynamoDB-Tabelle mit Amazon EMR zu migrieren:

  1. Starten Sie EMR-Cluster sowohl im Quell- als auch im Zielkonto. Stellen Sie sicher, dass Sie im Abschnitt Softwarekonfiguration eine Option auswählen, die Apache Hive beinhaltet. Anmerkung: Es ist eine bewährte Sicherheitsmethode, Amazon-EMR-Cluster in privaten Subnetzen zu starten. Die privaten Subnetze müssen über einen Amazon-S3-VPC-Endpunkt und eine Route zu DynamoDB verfügen. Weitere Informationen finden Sie unter Private Subnetze. Wenn die Cluster auf das Internet zugreifen müssen, verwenden Sie ein NAT-Gateway, dass sich in einem öffentlichen Subnetz befindet. Weitere Informationen finden Sie unter VPC mit öffentlichen und privaten Subnetzen (NAT).
  2. Stellen Sie sicher, dass die IAM-Rollen EMR_EC2_DefaultRole in beiden Konten die Berechtigung haben, in den S3-Bucket des Zielkontos zu schreiben. Weitere Informationen finden Sie unter Konfigurieren von IAM-Servicerollen für Amazon-EMR-Berechtigungen für AWS-Services und -Ressourcen.
  3. Stellen Sie im Quellkonto mithilfe von SSH eine Verbindung zum Hauptnode her.
  4. Verwenden Sie im Quellkonto Hive-Befehle um die DynamoDB-Tabellendaten in den S3-Bucket im Zielkonto zu exportieren.
  5. Importieren Sie im Zielkonto die Amazon S3-Daten in die neue DynamoDB-Tabelle.
  6. Wenn Sie eine Staging-Tabelle verwenden, um Schreibvorgänge zu erfassen, die während der Migration stattgefunden haben, wiederholen Sie die Schritte 4 und 5 in der Staging-Tabelle.

Weitere Informationen

Kopieren von Daten zwischen DynamoDB und Amazon S3

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten