Verwenden von Amazon S3 als Ziel für AWS Database Migration Service - AWS Database Migration Service

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.

Verwenden von Amazon S3 als Ziel für AWS Database Migration Service

Sie können Daten mithilfe von AWS DMS aus einer der unterstützten Datenbankquellen zu Amazon S3 migrieren. Bei Verwendung von Amazon S3 als Ziel in einer AWS DMS-Aufgabe werden Daten des vollständigen Ladevorgangs sowie CDC-Daten (Change Data Capture, Erfassung von Änderungsdaten) standardmäßig in CSV-Dateien (Comma-Separated Value, durch Kommas getrennte Werte) geschrieben. Für kompaktere Speicher- und schnellere Abfrageoptionen haben Sie zudem die Möglichkeit, die Daten im Apache Parquet-Format (.parquet) zu schreiben.

AWS DMS benennt Dateien, die während eines vollständigen Ladevorgangs erstellt wurden, mithilfe eines inkrementellen Hexadezimalzählers – beispielsweise LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A usw bei CSV-Dateien. AWS DMS benennt CDC-Dateien mithilfe von Zeitstempeln, beispielsweise 20141029-1134010000.csv. Für jede Quelltabelle mit Datensätzen erstellt AWS DMS einen Ordner unter dem angegebenen Zielordner (wenn die Quelltabelle nicht leer ist). AWS DMS schreibt alle Dateien des vollständigen Ladevorgangs und alle CDC-Dateien in den angegebenen Amazon-S3-Bucket. Sie können die Größe der von AWS DMS erstellten Dateien mithilfe der Endpunkteinstellung MaxFileSize steuern.

Der Parameter bucketFolder enthält den Speicherort, an dem die CSV- oder Parquet-Dateien vor dem Hochladen in den S3-Bucket gespeichert werden. Bei CSV-Dateien werden die Tabellendaten im folgenden Format im S3-Bucket gespeichert, dargestellt für Dateien des vollständigen Ladevorgangs.

database_schema_name/table_name/LOAD00000001.csv database_schema_name/table_name/LOAD00000002.csv ... database_schema_name/table_name/LOAD00000009.csv database_schema_name/table_name/LOAD0000000A.csv database_schema_name/table_name/LOAD0000000B.csv ...database_schema_name/table_name/LOAD0000000F.csv database_schema_name/table_name/LOAD00000010.csv ...

Sie können mithilfe der zusätzlichen Verbindungsattribute die Trennzeichen für die Spalte und die Zeile sowie andere Parameter festlegen. Weitere Informationen zu den zusätzlichen Verbindungsattributen finden Sie unter Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS am Ende dieses Abschnitts.

Sie können einen Bucket-Eigentümer angeben und Sniping verhindern, indem Sie die Amazon-S3-Endpunkteinstellung ExpectedBucketOwner verwenden, wie im Folgenden gezeigt. Wenn Sie dann eine Anforderung stellen, um eine Verbindung zu testen oder eine Migration durchzuführen, gleicht S3 die Konto-ID des Bucket-Eigentümers mit dem angegebenen Parameter ab.

--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'

Wenn Sie AWS DMS verwenden, um Datenänderungen unter Verwendung einer CDC-Aufgabe zu replizieren, gibt die erste Spalte der CSV- oder Parquet-Ausgabedatei an, wie die Zeilendaten geändert wurden. Dies wird in der folgenden CSV-Datei dargestellt.

I,101,Smith,Bob,4-Jun-14,New York U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas

Für dieses Beispiel nehmen wir an, dass es eine EMPLOYEE-Tabelle in der Quelldatenbank gibt. AWS DMS schreibt Daten in die CSV- oder Parquet-Datei als Reaktion auf die folgenden Ereignisse:

  • Ein neuer Mitarbeiter (Bob Smith, Mitarbeiter-ID 101) wird am 04. Juni 2014 in der Niederlassung in New York eingestellt. In der CSV- oder Parquet-Datei gibt das I in der ersten Spalte an, dass eine neue Zeile in die MITARBEITER-Tabelle in der Quelldatenbank INSERTed (eingefügt) wurde.

  • Am 08. Oktober 2015 wechselt Bob zur Niederlassung in Los Angeles. In der CSV- oder Parquet-Datei gibt das U an, dass die entsprechende Zeile in der MITARBEITER-Tabelle UPDATEd (aktualisiert) wurde, um Bobs neuen Firmenstandort widerzuspiegeln. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach dem UPDATE angezeigt wird.

  • Am 13. März 2017 wechselt Bob erneut zur Niederlassung in Dallas. In der CSV- oder Parquet-Datei gibt das U an, dass diese Zeile erneut UPDATEd (aktualisiert) wurde. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach dem UPDATE angezeigt wird.

  • Nach einiger Zeit der Arbeit in Dallas verlässt Bob die Firma. In der CSV- oder Parquet-Datei gibt das D an, dass die Zeile in der Quelltabelle DELETEd (gelöscht) wurde. Der Rest der Linie spiegelt wider, wie die Zeile in der MITARBEITER-Tabelle vor der Löschung angezeigt wurde.

Beachten Sie, dass AWS DMS für CDC standardmäßig die Zeilenänderungen für jede Datenbanktabelle unabhängig von der Transaktionsreihenfolge speichert. Wenn Sie die Zeilenänderungen in CDC-Dateien der Transaktionsreihenfolge entsprechend speichern möchten, müssen Sie dies und den Ordnerpfad, in dem die CDC-Transaktionsdateien auf dem S3-Ziel gespeichert werden sollen, über S3-Endpunkteinstellungen angeben. Weitere Informationen finden Sie unter Erfassen von Datenänderungen (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel.

Um die Häufigkeit von Schreibvorgängen auf ein Amazon-S3-Ziel während einer Datenreplikationsaufgabe zu steuern, können Sie die zusätzlichen Verbindungsattribute cdcMaxBatchInterval und cdcMinFileSize konfigurieren. Dies kann zu einer besseren Leistung bei der Analyse der Daten ohne zusätzliche überflüssige Aufgaben führen. Weitere Informationen finden Sie unter Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS

Voraussetzungen für die Verwendung von Amazon S3 als Ziel

Überprüfen Sie, ob folgende Bedingungen erfüllt sind, bevor Sie Amazon S3 als Ziel verwenden:

  • Der S3-Bucket, den Sie als Ziel verwenden, befindet sich in derselben AWS-Region wie die DMS-Replikations-Instance, die Sie für die Migration der Daten verwenden.

  • Das AWS-Konto, das Sie für die Migration verwenden, verfügt über eine IAM-Rolle mit Schreib- und Löschzugriff auf den S3-Bucket, den Sie als Ziel verwenden.

  • Diese Rolle besitzt Tagging-Zugriff, sodass Sie alle S3-Objekte, die in den Ziel-Bucket geschrieben werden, markieren können.

  • Der IAM-Rolle wurde DMS (dms.amazonaws.com) als vertrauenswürdige Entität hinzugefügt.

Um diesen Kontozugriff einzurichten, vergewissern Sie sich, dass die dem Benutzerkonto zugewiesene Rolle, mit der die Migrationsaufgabe erstellt wird, den folgenden Satz von Berechtigungen aufweist.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::buckettest2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::buckettest2" ] } ] }

Die Voraussetzungen für die Verwendung der Validierung mit S3 als Ziel finden Sie unter Voraussetzungen für die S3-Zielvalidierung.

Einschränkungen bei der Verwendung von Amazon S3 als Ziel

Bei der Verwendung von Amazon S3 als Ziel gelten die folgenden Einschränkungen:

  • Aktivieren Sie die Versionsverwaltung für S3 nicht. Wenn Sie die Versionsverwaltung für S3 benötigen, verwenden Sie Lebenszyklusrichtlinien, um alte Versionen aktiv zu löschen. Andernfalls kann es aufgrund eines Timeouts eines list-object-Aufrufs in S3 zu Verbindungsfehlern beim Endpunkttest kommen. Informationen zum Erstellen einer Lebenszyklusrichtlinie für einen S3-Bucket finden Sie unter Verwalten Ihres Speicher-Lebenszyklus. Informationen zum Löschen einer Version eines S3-Objekts finden Sie unter Löschen von Objekten aus einem versionsverwaltungsfähigen Bucket.

  • Ein VPC-fähiger S3-Bucket (Gateway-VPC) wird in den Versionen 3.4.7 und höher unterstützt.

  • Die folgenden DDL-Befehle (Data Definition Language) werden für Change Data Capture (CDC) unterstützt: Truncate Table (Tabelle kürzen), Drop Table (Tabelle löschen), Create Table (Tabelle erstellen), Rename Table (Tabelle umbenennen), Add Column (Spalte hinzufügen), Drop Column (Spalte löschen), Rename Column (Spalte umbenennen) und Change Column Data Type (Spaltendatentyp ändern). Beachten Sie, dass beim Hinzufügen, Löschen oder Umbenennen einer Spalte in der Quelldatenbank keine ALTER-Anweisung im Ziel-S3-Bucket aufgezeichnet wird und AWS DMS zuvor erstellte Datensätze nicht der neuen Struktur entsprechend ändert. Nach der Änderung erstellt AWS DMS alle neuen Datensätze unter Verwendung der neuen Tabellenstruktur.

    Anmerkung

    Bei einer DDL-Operation zum Kürzen werden alle Dateien und die entsprechenden Tabellenordner aus einem S3-Bucket entfernt. Mithilfe von Aufgabeneinstellungen können Sie dieses Verhalten deaktivieren und konfigurieren, wie DMS mit dem DDL-Verhalten bei Change Data Capture (CDC) umgehen soll. Weitere Informationen finden Sie unter Aufgabeneinstellungen für den Umgang mit der DDL-Änderungsverarbeitung.

  • Der vollständige LOB-Modus wird nicht unterstützt.

  • Änderungen an der Quelltabellenstruktur während des vollständigen Ladevorgangs werden nicht unterstützt. Änderungen an Daten werden während des vollständigen Ladevorgangs unterstützt.

  • Mehrere Aufgaben, die Daten aus derselben Quelltabelle in denselben S3-Ziel-Endpunkt-Bucket replizieren, führen dazu, dass diese Aufgaben in dieselbe Datei schreiben. Wir empfehlen, unterschiedliche Zielendpunkte (Buckets) anzugeben, wenn die Datenquelle aus derselben Tabelle stammt.

  • BatchApply wird für einen S3-Endpunkt nicht unterstützt. Bei Verwendung von Batch Apply (z. B. der Zielmetadaten-Aufgabeneinstellung BatchApplyEnabled) für ein S3-Ziel kann es zu einem Datenverlust kommen.

  • Sie können DatePartitionEnabled oder addColumnName nicht zusammen mit PreserveTransactions oder CdcPath verwenden.

  • AWS DMS unterstützt das Umbenennen mehrerer Quelltabellen in denselben Zielordner mithilfe von Transformationsregeln nicht.

  • Wenn während der Vollladephase intensiv in die Quelltabelle geschrieben wird, schreibt DMS möglicherweise doppelte Datensätze in den S3-Bucket oder zwischengespeicherte Änderungen.

  • Wenn Sie die Aufgabe mit einem TargetTablePrepMode von DO_NOTHING konfigurieren, schreibt DMS möglicherweise doppelte Datensätze in den S3-Bucket, wenn die Aufgabe während der Vollladephase unterbrochen und abrupt wieder aufgenommen wird.

  • Wenn Sie den Zielendpunkt mit der PreserveTransactions-Einstellung true konfigurieren, werden zuvor generierte CDC-Dateien beim erneuten Laden einer Tabelle nicht gelöscht. Weitere Informationen finden Sie unter Erfassen von Datenänderungen (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel.

Die Einschränkungen für die Verwendung der Validierung mit S3 als Ziel finden Sie unter Einschränkungen bei Verwendung der S3-Zielvalidierung.

Sicherheit

Um Amazon S3 als Ziel verwenden zu können, muss das für die Migration eingesetzte Konto über Schreib- und Löschzugriff auf den Amazon-S3-Bucket verfügen, den Sie als Ziel verwenden. Geben Sie den Amazon-Ressourcennamen (ARN) einer IAM-Rolle an, die über die erforderlichen Berechtigungen für den Zugriff auf Amazon S3 verfügt.

AWS DMS unterstützt eine Reihe vordefinierter Berechtigungen für Amazon S3, auch als vordefinierte Zugriffssteuerungslisten (ACLs) bezeichnet. Jede vordefinierte ACL umfasst eine Reihe von Empfängern und Berechtigungen, die Sie verwenden können, um Berechtigungen für den Amazon-S3-Bucket festzulegen. Sie können eine vordefinierte ACL mit dem cannedAclForObjects in dem Attribut der Verbindungszeichenfolge für Ihren S3-Zielendpunkt festlegen. Weitere Informationen zur Verwendung des zusätzlichen Oracle-Verbindungsattributs cannedAclForObjects finden Sie unter Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS. Weitere Informationen zu vordefinierten ACLs von Amazon S3 finden Sie unter Vordefinierte ACL.

Die IAM-Rolle, die Sie für die Migration verwenden, muss in der Lage sein, die API-Operation s3:PutObjectAcl durchzuführen.

Speichern von Amazon-S3-Objekten mithilfe von Apache Parquet

Das CSV-Format ist das Standardspeicherformat für Amazon-S3-Zielobjekte. Das Apache Parquet-Speicherformat (.parquet) bietet indessen kompaktere Speicheroptionen und schnellere Abfragen.

Apache Parquet ist ein Open-Source-Dateispeicherformat, das ursprünglich für Hadoop entwickelt wurde. Weitere Informationen über Apache Parquet finden Sie unter https://parquet.apache.org/.

Um .parquet als das Speicherformat für Ihre migrierten S3-Zielobjekte festzulegen, können Sie die folgenden Mechanismen verwenden:

Markieren von Amazon-S3-Objekten

Sie können von einer Replikations-Instance erstellte Amazon-S3-Objekte markieren, indem Sie entsprechende JSON-Objekte als Teil der Aufgaben-Tabellen-Zuweisungsregeln angeben. Weitere Informationen über die Anforderungen und Optionen für das Markieren von S3-Objekten, einschließlich gültiger Tag-Namen, finden Sie unter Markieren von Objekten im Benutzerhandbuch für Amazon Simple Storage Service. Weitere Informationen über Tabellenzuweisungen mithilfe von JSON finden Sie unter Festlegen der Tabellenauswahl- und Transformationsregeln mit JSON.

Sie markieren S3-Objekte, die für bestimmte Tabellen und Schemata erstellt wurden, mithilfe eines oder mehrerer JSON-Objekte des selection-Regeltyps. Nach Ausführung dieses selection-Objekts (oder dieser Objekte) können Sie ein oder mehrere JSON-Objekte des post-processing-Regeltyps mithilfe der add-tag-Aktion hinzufügen. Diese Nachbearbeitungsregeln identifizieren die zu markierenden S3-Objekte und geben die Namen und Werte der Tags an, die Sie diesen S3-Objekten hinzufügen möchten.

Sie finden die Parameter zur Angabe in den JSON-Objekten des post-processing-Regeltyps in der folgenden Tabelle.

Parameter Mögliche Werte Beschreibung
rule-type post-processing

Ein Wert, der die Aktionen zur Nachbereitung auf die generierten Zielobjekte anwendet. Sie können eine oder mehrere Nachbereitungsregeln festlegen, um ausgewählte S3-Objekte zu markieren.

rule-id Ein numerischer Wert. Ein eindeutiger numerischer Wert zur Identifizierung der Regel.
rule-name Ein alphanumerischer Wert. Ein eindeutiger Name zur Identifizierung der Regel.
rule-action add-tag Die Nachbereitungsaktion, die Sie auf das S3-Objekt anwenden möchten. Mit einem einzigen JSON-Objekt für die Nachbereitung können Sie der add-tag-Aktion ein oder mehrere Tags hinzufügen.
object-locator

schema-name – Der Name des Tabellenschemas.

table-name – Der Name der Tabelle.

Der Name der einzelnen Schemen und Tabellen, für die die Regel gilt. Sie können das Prozentzeichen "%" als Platzhalter für alle oder einen Teil der Werte der einzelnen object-locator-Parameter verwenden. Auf diese Weise können Sie diese Elemente aufeinander abstimmen:

  • Eine einzelne Tabelle in einem einzelnen Schema

  • Eine einzelne Tabelle in einigen oder allen Schemata

  • Einige oder alle Tabellen in einem einzelnen Schema

  • Einige oder alle Tabellen in einigen oder allen Schemata

tag-set

key – Ein beliebiger gültiger Name für ein einzelnes Tag.

value – Ein beliebiger gültiger JSON-Wert für dieses Tag.

Die Namen und Werte für ein oder mehrere Tags, die für die einzelnen erstellten S3-Objekte festgelegt werden sollen, welche dem angegebenen object-locator entsprechen. Sie können bis zu 10 Schlüssel-Wert-Paare in einem einzigen tag-set-Parameterobjekt angeben. Weitere Informationen zum Markieren von S3-Objekten finden Sie unter Markieren von Objekten im Benutzerhandbuch für Amazon Simple Storage Service.

Sie können auch einen dynamischen Wert für alle oder einen Teil des Werts für die value- und key-Parameter eines Tags mithilfe von ${dyn-value} angeben. Dabei kann ${dyn-value} entweder ${schema-name} oder ${table-name} sein. Auf diese Weise können Sie den Namen des aktuell ausgewählten Schemas oder der aktuell ausgewählten Tabelle als den gesamten oder einen Teil des Parameterwerts eingeben.

Anmerkung
Wichtig

Wenn Sie einen dynamischen Wert für den key-Parameter eingeben, können Sie Tags mit doppelten Namen für ein S3-Objekt generieren, je nachdem, wie Sie es verwenden möchten. In diesem Fall wird dem Objekt nur eine der doppelten Tag-Einstellungen hinzugefügt.

Wenn Sie mehrere post-processing-Regeltypen verwenden, um eine Reihe von S3-Objekten zu markieren, wird jedes S3-Objekt mit nur einem tag-set-Objekt aus einer Nachbearbeitungsregel markiert. Zum Markieren eines bestimmten S3-Objekts wird der Tag-Satz verwendet, dessen zugehöriger Objekt-Locator dem S3-Objekt am besten entspricht.

Nehmen Sie beispielsweise an, dass zwei Nachbearbeitungsregeln das gleiche S3-Objekt identifizieren. Darüber hinaus gehen wir davon aus, dass der Objekt-Locator der einen Regel Platzhalter verwendet und der Objekt-Locator der anderen Regel eine genaue Übereinstimmung zur Identifizierung des S3-Objekts einsetzt (ohne Platzhalter). In diesem Fall wird der Tag-Satz zur Markierung des S3-Objekts verwendet, dessen Nachbearbeitungsregel eine genaue Übereinstimmung aufweist. Wenn mehrere Nachbearbeitungsregeln einem bestimmten S3-Objekt gleich gut entsprechen, wird der Tag-Satz zur Markierung des Objekts verwendet, der der ersten dieser Nachbearbeitungsregeln zugewiesen ist.

Beispiel Hinzufügen von statischen Tags zu einem S3-Objekt, das für ein einzelnes Schema und eine einzelne Tabelle erstellt wurde

Die folgenden Auswahl- und Nachbearbeitungsregeln fügen einem erstellten S3-Objekt drei Tags (tag_1, tag_2 und tag_3 mit den entsprechenden statischen Werten value_1, value_2 und value_3) hinzu. Dieses S3-Objekt entspricht einer einzelnen Tabelle in der Quelle mit dem Namen STOCK mit einem Schema mit dem Namen aat2.

{ "rules": [ { "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" }, { "key": "tag_3", "value": "value_3" } ] } ] }
Beispiel Hinzufügen von statischen und dynamischen Tags zu S3-Objekten, die für mehrere Tabellen und Schemata erstellt wurden

Das folgende Beispiel zeigt eine Auswahlregel und zwei Nachbearbeitungsregeln, wobei die Eingabe aus der Quelle alle Tabellen und deren zugehörigen Schemata umfasst.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "%", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_${table-name}" } ] }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat", "table-name": "ITEM", }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" } ] } ] }

Die erste Nachbearbeitungsregel fügt die beiden Tags (dw-schema-name und dw-schema-table) sowie die dazugehörigen dynamischen Werte (${schema-name} und my_prefix_${table-name}) fast allen S3-Objekten hinzu, die in der Zieldatenbank erstellt wurden. Eine Ausnahme bildet das S3-Objekt, das über die zweite Nachbearbeitungsregel identifiziert und markiert wird. Daher wird jedes S3-Zielobjekt, das durch den Platzhalter-Objekt-Locator identifiziert wurde, mit Tags erstellt, die das Schema und die Tabelle erkennen lassen, dem es in der Quelle zugewiesen ist.

Die zweite Nachbearbeitungsregel fügt tag_1 und tag_2 mit den entsprechenden statischen Werten value_1 und value_2 einem erstellten S3-Objekt hinzu, welches von einem Objekt-Locator als eine genaue Übereinstimmung identifiziert wurde. Dieses erstellte S3-Objekt entspricht daher der einzigen Tabelle in der Quelle mit dem Namen ITEM mit einem Schema mit dem Namen aat. Aufgrund der genauen Entsprechung ersetzen diese Tags alle Tags für dieses Objekt, die von der ersten Nachbearbeitungsregel hinzugefügt wurden, da diese den S3-Objekten nur aufgrund der Platzhalter entsprechen.

Beispiel Hinzufügen von dynamischen Tag-Namen und -Werten zu S3-Objekten

Das folgende Beispiel umfasst zwei Auswahlregeln und eine Nachbearbeitungsregel. Die Eingabe aus der Quelle schließt nur die ITEM-Tabelle entweder im retail- oder wholesale-Schema ein.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "retail", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "wholesale", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "ITEM", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_ITEM" }, { "key": "${schema-name}_ITEM_tag_1", "value": "value_1" }, { "key": "${schema-name}_ITEM_tag_2", "value": "value_2" } ] ] }

Der Tag-Satz für die Nachbereitungsregel fügt allen S3-Objekten, die für die ITEM-Tabelle in der Zieldatenbank erstellt wurden, zwei Tags (dw-schema-name und dw-schema-table) hinzu. Das erste Tag hat den dynamischen Wert "${schema-name}" und das zweite Tag den statischen Wert "my_prefix_ITEM". Daher wird jedes S3-Zielobjekt mit Tags erstellt, die das Schema und die Tabelle erkennen lassen, dem es in der Quelle zugewiesen ist.

Darüber hinaus fügt das Tag-Set zwei zusätzliche Tags mit dynamischen Namen hinzu (${schema-name}_ITEM_tag_1 und "${schema-name}_ITEM_tag_2"). Diese haben die entsprechenden statischen Werte value_1 und value_2. Aus diesem Grund werden diese Tags nach dem aktuellen Schema benannt, retail oder wholesale. In diesem Objekt ist es nicht möglich, einen doppelten dynamischen Tag-Namen zu verleihen, da jedes Objekt für einen einzelnen eindeutigen Schemanamen erstellt wurde. Der Schemaname wird dazu verwendet, einen anderweitig eindeutigen Tag-Namen zu erstellen.

Erstellen von AWS KMS-Schlüsseln zum Verschlüsseln von Amazon-S3-Zielobjekten

Sie können benutzerdefinierte AWS KMS-Schlüssel erstellen und zum Verschlüsseln Ihrer Amazon-S3-Zielobjekte verwenden. Nachdem Sie einen KMS-Schlüssel erstellt haben, können Sie ihn verwenden, um Objekte mithilfe eines der folgenden Ansätze zu verschlüsseln, wenn Sie den S3-Zielendpunkt erstellen:

  • Verwenden Sie die folgenden Optionen für die S3-Zielobjekte (im standardmäßigen CSV-Dateispeicherformat), wenn Sie den create-endpoint-Befehl mithilfe der AWS CLI ausführen.

    --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN"}'

    Hier handelt es sich bei your-KMS-key-ARN um den Amazon-Ressourcennamen (ARN) für Ihren KMS-Schlüssel. Weitere Informationen finden Sie unter Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel.

  • Richten Sie für das zusätzliche Verbindungsattribut encryptionMode den Wert SSE_KMS und für das zusätzliche Verbindungsattribut serverSideEncryptionKmsKeyId den ARN für Ihren KMS-Schlüssel ein. Weitere Informationen finden Sie unter Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS.

Um Amazon-S3-Zielobjekte mithilfe eines KMS-Schlüssels zu verschlüsseln, benötigen Sie eine IAM-Rolle mit Berechtigungen für den Zugriff auf den Amazon-S3-Bucket. Auf diese IAM-Rolle wird dann in einer Richtlinie (einer Schlüsselrichtlinie) zugegriffen, die dem von Ihnen erstellten Verschlüsselungsschlüssel angefügt ist. Sie können diesen Vorgang in Ihrer IAM-Konsole ausführen, indem Sie Folgendes erstellen:

  • Eine Richtlinie mit Berechtigungen für den Zugriff auf den Amazon-S3-Bucket

  • Eine IAM-Rolle mit dieser Richtlinie

  • Einen KMS-Verschlüsselungsschlüssel mit einer Schlüsselrichtlinie, die sich auf diese Rolle bezieht

Die entsprechende Vorgehensweise wird nachfolgend beschrieben.

So erstellen Sie eine IAM-Richtlinie mit Berechtigungen für den Zugriff auf den Amazon-S3-Bucket
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich die Option Policies (Richtlinien) aus. Die Seite Policies (Richtlinien) wird geöffnet.

  3. Wählen Sie Richtlinie erstellen aus. Die Seite Create policy (Richtlinie erstellen) wird geöffnet.

  4. Wählen Sie Service und anschließend die Option S3 aus. Es wird eine Liste mit den Aktionsberechtigungen angezeigt.

  5. Wählen Sie Expand all (Alle maximieren) aus, um die Liste zu erweitern, und aktivieren Sie zumindest die folgenden Berechtigungen:

    • ListBucket

    • PutObject

    • DeleteObject

    Wählen Sie alle anderen Berechtigungen aus, die Sie benötigen, und klicken Sie anschließend auf Collapse all (Alle minimieren), um die Liste zu reduzieren.

  6. Wählen Sie Resources (Ressourcen) aus, um die Ressourcen festzulegen, auf die Sie Zugriff erlangen möchten. Wählen Sie zumindest Alle Ressourcen aus, um allgemeinen Zugriff auf die Amazon-S3-Ressourcen zu gewähren.

  7. Fügen Sie alle anderen Bedingungen oder Berechtigungen hinzu, die Sie benötigen, und wählen Sie dann Review policy (Richtlinie überprüfen) aus. Überprüfen Sie die Ergebnisse auf der Seite Review policy (Richtlinie prüfen).

  8. Wenn die Einstellungen Ihren Vorstellungen entsprechen, geben Sie einen Namen für die Richtlinie (z. B. DMS-S3-endpoint-access) sowie eine Beschreibung ein und wählen Sie anschließend Create policy (Richtlinie erstellen) aus. Die Seite Policies (Richtlinien) wird geöffnet und zeigt eine Mitteilung an, die darauf hinweist, dass Ihre Richtlinie erstellt wurde.

  9. Wählen Sie den Richtliniennamen aus der Liste mit den Policies (Richtlinien) aus. Die Seite Summary (Übersicht) wird geöffnet und zeigt den JSON-Code für die Richtlinie an, der dem folgenden Beispiel ähnelt.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" } ] }

Sie haben jetzt die neue Richtlinie erstellt, über die Sie auf Amazon-S3-Ressourcen zugreifen können, um diese mit einem angegebenen Namen, z. B. DMS-S3-endpoint-access, zu verschlüsseln.

So erstellen Sie eine IAM-Rolle mit dieser Richtlinie
  1. Wählen Sie im Navigationsbereich Ihrer IAM-Konsole Rollen aus. Die Detailseite Roles (Rollen) wird geöffnet.

  2. Wählen Sie Rolle erstellen aus. Die Seite Create role (Rolle erstellen) wird geöffnet.

  3. Wenn AWS-Service als vertrauenswürdige Entität auswählt ist, wählen Sie DMS als den Service aus, der die IAM-Rolle verwendet.

  4. Wählen Sie Weiter: Berechtigungen aus. Die Ansicht Attach permissions policies (Berechtigungsrichtlinien hinzufügen) wird auf der Seite Create role (Rolle erstellen) angezeigt.

  5. Suchen Sie die IAM-Richtlinie für die IAM-Rolle, die Sie im vorherigen Verfahren (DMS-S3-endpoint-access) erstellt haben, und wählen Sie sie aus.

  6. Wählen Sie Weiter: Markierungen. Die Ansicht Add tags (Tags hinzufügen) wird auf der Seite Create role (Rolle erstellen) angezeigt. Hier können Sie alle gewünschten Tags hinzufügen.

  7. Wählen Sie Weiter: Prüfen aus. Die Ansicht Review (Überprüfen) wird auf der Seite Create role (Rolle erstellen) angezeigt. Hier können Sie die Ergebnisse überprüfen.

  8. Wenn die Einstellungen Ihren Vorstellungen entsprechen, geben Sie einen Namen für die Rolle (Pflichtangabe, z. B. DMS-S3-endpoint-access-role) sowie eine zusätzliche Beschreibung ein, und wählen Sie anschließend Create role (Rolle erstellen) aus. Die Detailseite Roles (Rollen) wird geöffnet und zeigt eine Mitteilung an, die darauf hinweist, dass Ihre Rolle erstellt wurde.

Sie haben jetzt die neue Rolle erstellt, über die Sie auf Amazon-S3-Ressourcen zugreifen können, um diese mit einem angegebenen Namen, z. B. DMS-S3-endpoint-access-role, zu verschlüsseln.

So erstellen Sie einen KMS-Verschlüsselungsschlüssel mit einer Schlüsselrichtlinie, die sich auf Ihre IAM-Rolle bezieht
Anmerkung

Weitere Hinweise zur Funktionsweise von AWS DMS mit AWS KMS-Verschlüsselungsschlüsseln finden Sie unter Einrichten eines Verschlüsselungsschlüssels und Angeben von AWS KMS-Berechtigungen.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS Key Management Service (AWS KMS)-Konsole unter https://console.aws.amazon.com/kms.

  2. Wenn Sie die AWS-Region ändern möchten, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.

  3. Klicken Sie im Navigationsbereich auf Kundenverwaltete Schlüssel.

  4. Klicken Sie auf Create key. Die Seite Configure key (Schlüssel konfigurieren) wird geöffnet.

  5. Wählen Sie für Key type (Schlüsseltyp) Symmetric (Symmetrisch).

    Anmerkung

    Wenn Sie diesen Schlüssel erstellen, können Sie nur einen symmetrischen Schlüssel erstellen, da alle AWS-Services, wie z. B. Amazon S3, nur mit symmetrischen Verschlüsselungsschlüsseln arbeiten.

  6. Wählen Sie Erweiterte Optionen aus. Stellen Sie für Key material origin (Schlüsselmaterialherkunft) sicher, dass KMS ausgewählt ist, und wählen Sie dann Next (Weiter). Die Seite Add Labels (Etiketten hinzufügen) wird geöffnet.

  7. Geben Sie unter Create alias and description (Alias und Beschreibung erstellen) einen Alias für den Schlüssel (z. B. DMS-S3-endpoint-encryption-key) und eventuell eine weitere Beschreibung ein.

  8. Fügen Sie unter Tags alle Tags hinzu, die Sie verwenden möchten, um den Schlüssel zu identifizieren und seine Nutzung zu verfolgen, und wählen Sie anschließend Next Step (Nächster Schritt) aus. Die Seite Define key administrative permissions (Schlüsselverwaltungsberechtigungen definieren) wird geöffnet und zeigt eine Liste der Benutzer und Rollen an, aus denen Sie auswählen können.

  9. Fügen Sie die Benutzer und Rollen hinzu, die den Schlüssel verwalten sollen. Stellen Sie sicher, dass diese Benutzer und Rollen über die erforderlichen Berechtigungen verfügen, um den Schlüssel zu verwalten.

  10. Wählen Sie unter Key deletion (Schlüssellöschung) aus, ob die Schlüsseladministratoren den Schlüssel löschen können, und klicken Sie anschließend auf Next Step (Nächster Schritt). Die Seite Define Key usage permissions (Schlüsselnutzungsberechtigungen definieren) wird geöffnet und zeigt eine weitere Liste mit Benutzern und Rollen an, aus denen Sie auswählen können.

  11. Wählen Sie für Dieses Konto die verfügbaren Benutzer aus, die kryptografische Operationen auf Amazon-S3-Zielen ausführen sollen. Wählen Sie zudem die Rolle aus, die Sie zuvor unter Rollen erstellt haben, um den Zugriff zur Verschlüsselung von Amazon-S3-Zielobjekten zu aktivieren, wie z. B. DMS-S3-endpoint-access-role.

  12. Wenn Sie weitere Konten hinzufügen möchten, die nicht für denselben Zugriff aufgeführt sind, wählen Sie unter Other AWS accounts (Andere Konten) die Option Add another AWS account (Anderes Konto hinzufügen) und dann Next (Weiter). Die Seite Review and edit key policy (Schlüsselrichtlinie prüfen und bearbeiten) wird geöffnet. Hier wird das JSON für die Schlüsselrichtlinie angezeigt, die Sie überprüfen und bearbeiten können, indem Sie in den vorhandenen JSON-Inhalt schreiben. Hier können Sie sehen, wo die Schlüsselrichtlinie auf die Rolle und die Benutzer (z. B. Admin und User1) verweist, die Sie im vorherigen Schritt ausgewählt haben. Sie können auch die verschiedenen Schlüsselaktionen sehen, die für die verschiedenen Prinzipale (Benutzer und Rollen) zulässig sind, wie im folgenden Beispiel gezeigt.

    { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
  13. Wählen Sie Finish (Abschließen). Die Seite Verschlüsselungsschlüssel wird geöffnet und zeigt eine Mitteilung an, die darauf hinweist, dass Ihr KMS-Schlüssel erstellt wurde.

Damit haben Sie einen neuen KMS-Schlüssel mit einem angegebenen Alias (z. B. DMS-S3-endpoint-encryption-key) erstellt. Dieser Schlüssel ermöglicht es AWS DMS, Amazon-S3-Zielobjekte zu verschlüsseln.

Verwenden einer datumsbasierten Ordnerpartitionierung

AWS DMS unterstützt S3-Ordnerpartitionen, die auf einem Transaktions-Commit-Datum basieren, wenn Sie Amazon S3 als Zielendpunkt verwenden. Bei Verwendung der datumsbasierten Ordnerpartitionierung können Sie Daten aus einer einzelnen Quelltabelle in eine Zeithierarchie-Ordnerstruktur in einem S3-Bucket schreiben. Die Partitionierung der Ordner beim Erstellen von S3-Zielendpunkten bietet Ihnen folgende Möglichkeiten:

  • Bessere Verwaltung Ihrer S3-Objekte

  • Größenbeschränkung der einzelnen S3-Ordner

  • Optimierung von Data-Lake-Abfragen oder anderen nachfolgenden Operationen

Sie können die datumsbasierte Ordnerpartitionierung beim Erstellen eines S3-Zielendpunkts aktivieren. Sie können sie aktivieren, wenn Sie vorhandene Daten migrieren und laufende Änderungen replizieren (vollständiges Laden + CDC) oder wenn Sie nur Datenänderungen replizieren (nur CDC). Verwenden Sie die folgenden Einstellungen für den Zielendpunkt:

  • DatePartitionEnabled – Gibt an, dass eine Partitionierung auf der Grundlage von Datumsangaben erfolgen soll. Setzen Sie diese boolesche Option auf true, um S3-Bucket-Ordner basierend auf den Commit-Daten von Transaktionen zu partitionieren.

    Sie können diese Einstellung nicht zusammen mit PreserveTransactions oder CdcPath verwenden.

    Der Standardwert ist false.

  • DatePartitionSequence – Identifiziert die Reihenfolge des Datumsformats, das bei der Ordnerpartitionierung verwendet werden soll. Setzen Sie diese ENUM-Option auf YYYYMMDD,YYYYMMDDHH, YYYYMM, MMYYYYDD oder DDMMYYYY. Der Standardwert ist YYYYMMDD. Verwenden Sie diese Einstellung, wenn DatePartitionEnabled auf true. gesetzt ist.

  • DatePartitionDelimiter – Gibt ein Datumstrennzeichen für die Ordnerpartitionierung an. Setzen Sie diese ENUM-Option auf SLASH,DASH, UNDERSCORE oder NONE. Der Standardwert ist SLASH. Verwenden Sie diese Einstellung, wenn DatePartitionEnabled auf true festgelegt ist.

Das folgende Beispiel zeigt, wie die datumsbasierte Ordnerpartitionierung mit Standardwerten für die Reihenfolge der Datenpartitionen und das Trennzeichen aktiviert wird. Dabei wird die Option --s3-settings '{json-settings}' des AWS CLI-Befehls create-endpoint verwendet.

--s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'

Paralleles Laden partitionierter Quellen bei Verwendung von Amazon S3 als Ziel für AWS DMS

Sie können einen parallelen vollständigen Ladevorgang partitionierter Datenquellen in Amazon-S3-Ziele konfigurieren. Durch dieses Vorgehen verbessern sich die Ladezeiten bei der Migration partitionierter Daten von unterstützten Quelldatenbank-Engines zum S3-Ziel. Um die Ladezeiten partitionierter Quelldaten zu verbessern, erstellen Sie S3-Zielunterordner, die den Partitionen jeder Tabelle in der Quelldatenbank zugeordnet sind. Diese partitionsgebundenen Unterordner ermöglichen AWS DMS die Ausführung paralleler Prozesse, um die einzelnen Unterordner im Ziel zu füllen.

Für die Konfiguration eines parallelen vollständigen Ladevorgangs für ein S3-Ziel unterstützt S3 drei parallel-load-Regeltypen für die table-settings-Regel der Tabellenzuweisung:

  • partitions-auto

  • partitions-list

  • ranges

Weitere Informationen zu diesen Arten von Regeln für paralleles Laden finden Sie unter Regeln und Operationen für Tabellen- und Sammlungseinstellungen.

Für die Regeltypen partitions-auto und partitions-list verwendet AWS DMS die einzelnen Partitionsnamen vom Quellendpunkt, um die Ziel-Unterordnerstruktur wie folgt zu identifizieren.

bucket_name/bucket_folder/database_schema_name/table_name/partition_name/LOADseq_num.csv

Hier umfasst der Unterordnerpfad, in den Daten migriert und in dem Daten auf dem S3-Ziel gespeichert werden, einen zusätzlichen Unterordner partition_name, der einer gleichnamigen Quellpartition entspricht. In diesem Unterordner partition_name werden dann eine oder mehrere Dateien LOADseq_num.csv mit Daten gespeichert, die von der angegebenen Quellpartition migriert wurden. seq_num ist hier der Sequenznummer-Nachsatz im Namen der CSV-Datei, also beispielsweise 00000001 in der CSV-Datei namens LOAD00000001.csv.

Bei einigen Datenbank-Engines, wie MongoDB und DocumentDB, gibt es das Konzept der Partitionen jedoch nicht. Für diese Datenbank-Engines fügt AWS DMS den laufenden Quellsegmentindex dem Namen der CSV-Zieldatei wie folgt als Präfix hinzu.

.../database_schema_name/table_name/SEGMENT1_LOAD00000001.csv .../database_schema_name/table_name/SEGMENT1_LOAD00000002.csv ... .../database_schema_name/table_name/SEGMENT2_LOAD00000009.csv .../database_schema_name/table_name/SEGMENT3_LOAD0000000A.csv

Hier sind die Dateien SEGMENT1_LOAD00000001.csv und SEGMENT1_LOAD00000002.csv mit demselben laufenden Quellsegmentindex-Präfix SEGMENT1 benannt. Sie sind so benannt, da die migrierten Quelldaten für diese beiden CSV-Dateien demselben laufenden Quellsegmentindex zugeordnet sind. Andererseits sind die migrierten Daten, die in den Zieldateien SEGMENT2_LOAD00000009.csv und SEGMENT3_LOAD0000000A.csv gespeichert sind, unterschiedlichen laufenden Quellsegmentindizes zugeordnet. Jedem Dateinamen wird der Name des laufenden Segmentindex, SEGMENT2 und SEGMENT3, als Präfix vorangestellt.

Für den Parallelladetyp ranges definieren Sie die Spaltennamen und Spaltenwerte mithilfe der Einstellungen columns und boundaries der table-settings-Regeln. Mit diesen Regeln können Sie wie folgt den Segmentnamen entsprechende Partitionen angeben.

"parallel-load": { "type": "ranges", "columns": [ "region", "sale" ], "boundaries": [ [ "NORTH", "1000" ], [ "WEST", "3000" ] ], "segment-names": [ "custom_segment1", "custom_segment2", "custom_segment3" ] }

Die Einstellung segment-names definiert hier Namen für drei Partitionen, um Daten parallel zu dem S3-Ziel zu migrieren. Die migrierten Daten werden parallel geladen und der Reihenfolge nach in CSV-Dateien in den Unterordnern der Partition gespeichert, wie im Folgenden dargestellt.

.../database_schema_name/table_name/custom_segment1/LOAD[00000001...].csv .../database_schema_name/table_name/custom_segment2/LOAD[00000001...].csv .../database_schema_name/table_name/custom_segment3/LOAD[00000001...].csv

Hier speichert AWS DMS eine Reihe von CSV-Dateien in jedem der drei Partitionsunterordner. Die Reihe von CSV-Dateien in jedem Partitionsunterordner wird inkrementell, beginnend bei LOAD00000001.csv, benannt, bis alle Daten migriert sind.

Es kann vorkommen, dass Sie die Partitionsunterordner für einen Parallelladetyp ranges nicht explizit über die Einstellung segment-names benennen. In diesen Fällen wendet AWS DMS das Standardverfahren an und erstellt jede Reihe von CSV-Dateien in ihrem table_name-Unterordner. Hier stellt AWS DMS den Dateinamen jeder Serie von CSV-Dateien den Namen des laufenden Quellsegmentindex voran, wie im Folgenden dargestellt.

.../database_schema_name/table_name/SEGMENT1_LOAD[00000001...].csv .../database_schema_name/table_name/SEGMENT2_LOAD[00000001...].csv .../database_schema_name/table_name/SEGMENT3_LOAD[00000001...].csv ... .../database_schema_name/table_name/SEGMENTZ_LOAD[00000001...].csv

Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS

Sie können Endpunkteinstellungen zur Konfiguration Ihrer Amazon-S3-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen beim Erstellen des Zielendpunkts über die AWS DMS-Konsole oder über den Befehl create-endpoint in der AWS CLI mit der JSON-Syntax --s3-settings '{"EndpointSetting": "value", ...}' an.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Amazon S3 als Ziel verwenden können.

Option Beschreibung
CsvNullValue

Ein optionaler Parameter, der angibt, wie AWS DMS Nullwerte verarbeitet. Bei der Verarbeitung des Nullwerts können Sie diesen Parameter verwenden, um eine benutzerdefinierte Zeichenfolge als null zu übergeben, wenn Sie in das Ziel schreiben. Wenn Zielspalten beispielsweise auf Null gesetzt werden können, können Sie diese Option verwenden, um zwischen dem leeren Zeichenfolgenwert und dem Nullwert zu unterscheiden. Wenn Sie diesen Parameterwert also auf die leere Zeichenfolge (" " oder '') setzen, behandelt AWS DMS die leere Zeichenfolge als Nullwert und nicht als NULL.

Standardwert: NULL

Gültige Werte: jede gültige Zeichenfolge

Beispiel: --s3-settings '{"CsvNullValue": " "}'

AddColumnName

Ein optionaler Parameter, den sie, sofern er auf true oder y festgelegt ist, verwenden können, um der CSV-Ausgabedatei Informationen zu Spaltennamen hinzuzufügen.

Sie können diesen Parameter nicht zusammen mit PreserveTransactions oder CdcPath verwenden.

Standardwert: false

Zulässige Werte: true, false, y, n

Beispiel: --s3-settings '{"AddColumnName": true}'

AddTrailingPaddingCharacter

Verwenden Sie die S3-Zielendpunkteinstellung AddTrailingPaddingCharacter, um Zeichenfolgedaten aufzufüllen. Der Standardwert ist false.

Typ: Boolesch

Beispiel: --s3-settings '{"AddTrailingPaddingCharacter": true}'

BucketFolder

Ein optionaler Parameter zum Festlegen eines Ordnernamens im S3-Bucket. Wenn angegeben, werden Zielobjekte als CSV- oder Parquet-Dateien im Pfad BucketFolder/schema_name/table_name/ erstellt. Wenn dieser Parameter nicht festgelegt ist, wird der Pfad schema_name/table_name/ verwendet.

Beispiel: --s3-settings '{"BucketFolder": "testFolder"}'

BucketName

Der Name des S3-Buckets, in dem S3-Zielobjekte als CSV- oder Parquet-Dateien erstellt werden.

Beispiel: --s3-settings '{"BucketName": "buckettest"}'

CannedAclForObjects

Ermöglicht es AWS DMS, eine vordefinierte Zugriffskontrollliste für Objekte festzulegen, die im S3-Bucket als CSV- oder Parquet-Dateien erstellt wurden. Weitere Informationen zu festgelegten ACLs von Amazon S3 finden Sie unter Festgelegte ACL im Amazon-S3-Entwicklerhandbuch.

Standardwert: KEINE

Gültige Werte für dieses Attribut sind: NONE; PRIVATE; PUBLIC_READ; PUBLIC_READ_WRITE; AUTHENTICATED_READ; AWS_EXEC_READ; BUCKET_OWNER_READ; BUCKET_OWNER_FULL_CONTROL.

Beispiel: --s3-settings '{"CannedAclForObjects": "PUBLIC_READ"}'

CdcInsertsOnly

Ein optionaler Parameter während der Erfassung von Änderungsdaten (Change Data Capture, CDC), um nur die INSERT-Operationen in die CSV- oder Parquet-Ausgabedateien zu schreiben. Standardmäßig (die false-Einstellung) enthält das erste Feld in einem CSV- oder PARTETT-Datensatz den Buchstaben I (INSERT), U (UPDATE) oder D (DELETE). Dieser Buchstabe gibt an, ob die Zeile für einen CDC-Ladenvorgang in das Ziel in der Quelldatenbank eingefügt, aktualisiert oder gelöscht wurde. Wenn cdcInsertsOnly auf y oder true festgelegt wurde, werden nur INSERTs aus der Quelldatenbank zur CSV- oder Parquet-Datei migriert.

Im Fall von CSV-Dateien ist die Art der Aufzeichnung dieser INSERTs vom Wert für IncludeOpForFullLoad abhängig. Wenn IncludeOpForFullLoad auf true festgelegt ist, wird das erste Feld jedes CDC-Datensatzes auf I festgelegt, um die INSERT-Operation an der Quelle anzugeben. Wenn IncludeOpForFullLoad auf false festgelegt ist, wird jeder CDC-Datensatz ohne erstes Feld geschrieben, um die INSERT-Operation an der Quelle anzugeben. Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter Angabe von Quelldatenbankoperationen in migrierten S3-Daten.

Standardwert: false

Zulässige Werte: true, false, y, n

Beispiel: --s3-settings '{"CdcInsertsOnly": true}'

CdcInsertsAndUpdates

Aktiviert eine CDC (Change Data Capture)-Last zum Schreiben von INSERT- und UPDATE-Operationen in .csv- oder .parquet-Ausgabedateien (Columnar Storage). Die Standardeinstellung ist false, wenn jedoch cdcInsertsAndUpdates auf true oder y festgelegt ist, werden INSERTs und UPDATEs aus der Quelldatenbank in die .csv- oder .parquet-Datei migriert.

Nur für das CSV-Dateiformat hängt die Art und Weise, wie diese INSERTs und UPDATEs aufgezeichnet werden, vom Wert des includeOpForFullLoad-Parameters ab. Wenn includeOpForFullLoad auf true gesetzt ist, wird das erste Feld jedes CDC-Datensatzes entweder auf I oder U gesetzt, um INSERT- und UPDATE-Operationen an der Quelle anzuzeigen. Wenn includeOpForFullLoad jedoch auf false gesetzt ist, werden CDC-Datensätze ohne Anzeige von INSERT- oder UPDATE-Operationen an der Quelle geschrieben.

Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter Angabe von Quelldatenbankoperationen in migrierten S3-Daten.

Anmerkung

CdcInsertsOnly und cdcInsertsAndUpdates können nicht beide für denselben Endpunkt auf „true“ gesetzt werden. Setzen Sie entweder cdcInsertsOnly oder cdcInsertsAndUpdates auf true für denselben Endpunkt, aber nicht beide.

Standardwert: false

Zulässige Werte: true, false, y, n

Beispiel: --s3-settings '{"CdcInsertsAndUpdates": true}'

CdcPath

Gibt den Ordnerpfad von CDC-Dateien an. Für eine S3-Quelle ist diese Einstellung erforderlich, wenn eine Aufgabe Änderungsdaten erfasst; ansonsten ist sie optional. Wenn CdcPath festgelegt ist, liest DMS CDC-Dateien aus diesem Pfad und repliziert die Datenänderungen auf dem Zielendpunkt. Wenn Sie für ein S3-Ziel PreserveTransactions auf „true“ gesetzt haben, prüft DMS, ob Sie für diesen Parameter einen Ordnerpfad auf Ihrem S3-Ziel festgelegt haben, in dem DMS die Transaktionsreihenfolge für den CDC-Ladevorgang speichern kann. DMS erstellt diesen CDC-Ordnerpfad in Ihrem S3-Zielarbeitsverzeichnis oder an dem durch BucketFolder und BucketName angegebenen S3-Zielort.

Sie können diesen Parameter nicht zusammen mit DatePartitionEnabled oder AddColumnName verwenden.

Typ: Zeichenfolge

Wenn Sie beispielsweise CdcPath als MyChangedData und BucketName als MyTargetBucket, BucketFolder aber nicht angeben, erstellt DMS den folgenden CDC-Ordnerpfad: MyTargetBucket/MyChangedData.

Wenn Sie denselben CdcPath und BucketName als MyTargetBucket sowie BucketFolder als MyTargetData angeben, erstellt DMS den folgenden CDC-Ordnerpfad: MyTargetBucket/MyTargetData/MyChangedData.

Anmerkung

Diese Einstellung wird in AWS DMS Version 3.4.2 und höher unterstützt.

Bei der Erfassung von Datenänderungen in der Reihenfolge der Transaktionen speichert DMS die Zeilenänderungen immer in CSV-Dateien, unabhängig vom Wert der S3-Einstellung „DataFormat“ auf dem Ziel. DMS speichert Datenänderungen bei Verwendung von Parquet-Dateien nicht in der Reihenfolge der Transaktionen.

CdcMaxBatchInterval

Bedingung für die maximale Intervalllänge, definiert in Sekunden, für die Ausgabe einer Datei in Amazon S3.

Standardwert: 60 Sekunden

Wenn CdcMaxBatchInterval und CdcMinFileSize angegeben sind, wird das Schreiben der Datei durch die Parameterbedingung ausgelöst, die zuerst erfüllt wird.

CdcMinFileSize

Bedingung für die minimale Dateigröße, definiert in Kilobyte, für die Ausgabe einer Datei in Amazon S3.

Standardwert: 32000 KB

Wenn CdcMinFileSize und CdcMaxBatchInterval angegeben sind, wird das Schreiben der Datei durch die Parameterbedingung ausgelöst, die zuerst erfüllt wird.

PreserveTransactions

Wenn hier true festgelegt ist, speichert DMS die Transaktionsreihenfolge für Change Data Capture (CDC) auf dem Amazon-S3-Ziel, das durch CdcPath angegeben ist.

Sie können diesen Parameter nicht zusammen mit DatePartitionEnabled oder AddColumnName verwenden.

Typ: Boolesch

Bei der Erfassung von Datenänderungen in der Reihenfolge der Transaktionen speichert DMS die Zeilenänderungen immer in CSV-Dateien, unabhängig vom Wert der S3-Einstellung „DataFormat“ auf dem Ziel. DMS speichert Datenänderungen bei Verwendung von Parquet-Dateien nicht in der Reihenfolge der Transaktionen.

Anmerkung

Diese Einstellung wird in AWS DMS Version 3.4.2 und höher unterstützt.

IncludeOpForFullLoad

Ein optionaler Parameter während eines vollständigen Ladevorgangs, um die INSERT-Operationen nur zu CSV-Ausgabedateien zu schreiben.

Bei vollständigen Ladevorgängen können Datensätze nur eingefügt werden. Standardmäßig (Einstellung false) werden in diesen Ausgabedateien für einen vollständigen Ladevorgang keine Informationen aufgezeichnet, um anzugeben, dass die Zeilen in der Quelldatenbank eingefügt wurden. Wenn IncludeOpForFullLoad auf true oder y festgelegt ist, wird die INSERT-Operation als I-Anmerkung im ersten Feld der CSV-Datei aufgezeichnet.

Anmerkung

Dieser Parameter funktioniert mit CdcInsertsOnly oder CdcInsertsAndUpdates nur für die Ausgabe zu .csv-Dateien. Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter Angabe von Quelldatenbankoperationen in migrierten S3-Daten.

Standardwert: false

Zulässige Werte: true, false, y, n

Beispiel: --s3-settings '{"IncludeOpForFullLoad": true}'

CompressionType

Ein optionaler Parameter verwendet, sofern er auf GZIP festgelegt ist, GZIP zum Komprimieren der CSV- oder Parquet-Zieldateien. Wenn dieser Parameter auf den Standardwert gesetztist, bleiben die Dateien unkomprimiert.

Standardwert: NONE

Gültige Werte: GZIP oder NONE.

Beispiel: --s3-settings '{"CompressionType": "GZIP"}'

CsvDelimiter

Das Trennzeichen, das zum Trennen von Spalten in den CSV-Quelldateien dient. Standardmäßig wird ein Komma (,) verwendet.

Beispiel: --s3-settings '{"CsvDelimiter": ","}'

CsvRowDelimiter

Das Trennzeichen, das zum Trennen von Zeilen in den CSV-Quelldateien dient. Standardmäßig wird ein Zeilenumbruch (\n) verwendet.

Beispiel: --s3-settings '{"CsvRowDelimiter": "\n"}'

MaxFileSize

Ein Wert, der die maximale Größe (in KB) der CSV-Datei angibt, die erstellt werden soll, während die Migration zum S3-Ziel in der Volllast-Phase ausgeführt wird.

Standardwert: 1048576 KB (1 GB)

Gültige Werte: 1 bis 1 048 576

Beispiel: --s3-settings '{"MaxFileSize": 512}'

Rfc4180

Ein optionaler Parameter, der verwendet wird, um das Verhalten so einzustellen, dass es RFC für Daten entspricht, die nur im CSV-Format zu Amazon S3 migriert werden. Wenn für diesen Wert bei Verwendung von Amazon S3 als Ziel true oder y eingestellt ist und die Daten Fragezeichen, Kommas oder Zeilenumbruchzeichen enthalten, umschließt AWS DMS die gesamte Spalte mit einem zusätzlichen Paar von Anführungszeichen ("). Jedes Anführungszeichen innerhalb der Daten wird zweimal wiederholt. Diese Formatierung entspricht RFC 4180.

Standardwert: true

Zulässige Werte: true, false, y, n

Beispiel: --s3-settings '{"Rfc4180": false}'

EncryptionMode

Der serverseitige Verschlüsselungsmodus, mit dem Sie Ihre CSV- oder Parquet-Objektdateien, die Sie nach S3 kopiert haben, verschlüsseln möchten, Die gültigen Werte sind SSE_S3 (S3-serverseitige Verschlüsselung) oder SSE_KMS (KMS-Verschlüsselung). Wenn Sie SSE_KMS auswählen, legen Sie den ServerSideEncryptionKmsKeyId-Parameter auf den Amazon-Ressourcennamen (ARN) fest, so dass der KMS-Schlüssel für die Verschlüsselung verwendet wird.

Anmerkung

Sie können auch den CLI-Befehl modify-endpoint verwenden, um den Wert des Attributs EncryptionMode für einen vorhandenen Endpunkt von SSE_KMS in SSE_S3 zu ändern. Sie können jedoch nicht den Wert für EncryptionMode von SSE_S3 in SSE_KMS ändern.

Standardwert: SSE_S3

Gültige Werte: SSE_S3 oder SSE_KMS.

Beispiel: --s3-settings '{"EncryptionMode": SSE_S3}'

ServerSideEncryptionKmsKeyId

Wenn Sie EncryptionMode auf SSE_KMS setzen, legen Sie für diesen Parameter den Amazon-Ressourcennamen (ARN) für den KMS-Schlüssel fest. Sie finden diesen ARN, indem Sie den Schlüssel-Alias in der Liste der AWS KMS-Schlüssel, die für Ihr Konto erstellt wurden, auswählen. Wenn Sie den Schlüssel erstellen, müssen Sie ihm auch bestimmte Richtlinien und Rollen, die mit diesem KMS-Schlüssel verknüpft sind, zuweisen. Weitere Informationen finden Sie unter Erstellen von AWS KMS-Schlüsseln zum Verschlüsseln von Amazon-S3-Zielobjekten.

Beispiel: --s3-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

DataFormat

Das Ausgabeformat für die Dateien, die AWS DMS zum Erstellen von S3-Objekten verwendet. Für Amazon-S3-Ziele unterstützt AWS DMS entweder CSV- oder Parquet-Dateien. Die Parquet-Dateien verfügen über ein binäres spaltenbasiertes Speicherformat mit effizienten Komprimierungsoptionen und schnellerer Abfrageleistung. Weitere Informationen über Parquet-Dateien finden Sie unter https://parquet.apache.org/.

Standardwert: csv

Gültige Werte: csv oder parquet.

Beispiel: --s3-settings '{"DataFormat": "parquet"}'

EncodingType

Der Parquet-Kodierungstyp. Die Kodierungstypoptionen umfassen Folgendes:

  • rle-dictionary – Diese Verzeichniskodierung verwendet eine Kombination aus Bit-Packing und Run-Length-Kodierung, um sich wiederholende Werte effizienter zu speichern.

  • plain – Keine Kodierung.

  • plain-dictionary – Diese Verzeichniskodierung erstellt ein Verzeichnis der Werte, die in einer bestimmten Spalte vorkommen. Das Verzeichnis wird auf einer Verzeichnisseite für die einzelnen Spaltenblöcke gespeichert.

Standardwert: rle-dictionary

Gültige Werte: rle-dictionary, plain oder plain-dictionary

Beispiel: --s3-settings '{"EncodingType": "plain-dictionary"}'

DictPageSizeLimit

Die zulässige Maximalgröße (in Bytes) für eine Verzeichnisseite in einer Parquet-Datei. Wenn eine Verzeichnisseite diesen Wert überschreitet, verwendet die Seite die einfache Kodierung.

Standardwert: 1.024.000 (1 MB)

Zulässige Werte: Jede gültige Ganzzahl

Beispiel: --s3-settings '{"DictPageSizeLimit": 2,048,000}'

RowGroupLength

Die Anzahl der Zeilen einer Zeilengruppe in einer Parquet-Datei.

Standardwert: 10.024 (10 KB)

Zulässige Werte: Jede gültige Ganzzahl

Beispiel: --s3-settings '{"RowGroupLength": 20,048}'

DataPageSize

Die zulässige Maximalgröße (in Bytes) für eine Datenseite in einer Parquet-Datei.

Standardwert: 1.024.000 (1 MB)

Zulässige Werte: Jede gültige Ganzzahl

Beispiel: --s3-settings '{"DataPageSize": 2,048,000}'

ParquetVersion

Die Version des Parquet-Dateiformats.

Standardwert: PARQUET_1_0

Gültige Werte: PARQUET_1_0 oder PARQUET_2_0.

Beispiel: --s3-settings '{"ParquetVersion": "PARQUET_2_0"}'

EnableStatistics

Legen Sie true oder y fest, um Statistiken über Parquet-Dateiseiten und Zeilengruppen zu aktivieren.

Standardwert: true

Zulässige Werte: true, false, y, n

Beispiel: --s3-settings '{"EnableStatistics": false}'

TimestampColumnName

Ein optionaler Parameter, um eine Zeitstempelspalte in die S3-Zielendpunktdaten einzufügen.

AWS DMS enthält eine zusätzliche STRING-Spalte in den CSV- oder Parquet-Objektdateien der migrierten Daten, wenn Sie für TimestampColumnName einen nicht leeren Wert festlegen.

Bei einem vollständigen Ladevorgang enthält jede Zeile der Zeitstempelspalte einen Zeitstempel für den Zeitpunkt, an dem die Daten von DMS von der Quelle zum Ziel übertragen wurden.

Bei einem CDC-Ladevorgang enthält jede Zeile der Zeitstempelspalte den Zeitstempel für den Commit dieser Zeile in der Quelldatenbank.

Das Zeichenfolgeformat für den Wert dieser Zeitstempelspalte ist yyyy-MM-dd HH:mm:ss.SSSSSS. Standardmäßig wird die Genauigkeit für diesen Wert in Mikrosekunden angegeben. Für einen CDC-Ladevorgang hängt die Rundung für die Genauigkeit vom Commit-Zeitstempel ab, der von DMS für die Quell-Datenbank unterstützt wird.

Wenn für den Parameter AddColumnName true festgelegt ist, bezieht DMS auch den Namen für die Zeitstempelspalte ein, den Sie als den nicht leeren Wert von TimestampColumnName festlegen.

Beispiel: --s3-settings '{"TimestampColumnName": "TIMESTAMP"}'

UseTaskStartTimeForFullLoadTimestamp

Bei Einstellung von true verwendet dieser Parameter die Startzeit der Aufgabe als Zeitstempel-Spaltenwert anstelle der Zeit, zu der Daten in das Ziel geschrieben werden. Bei einem vollständigen Ladevorgang, wenn UseTaskStartTimeForFullLoadTimestamp auf true gesetzt ist, enthält jede Zeile der Zeitstempel-Spalte die Startzeit der Aufgabe. Bei CDC-Ladevorgängen enthält jede Zeile der Spalte Zeitstempel die Übergabezeit der Transaktion.

Wenn UseTaskStartTimeForFullLoadTimestamp auf false gesetzt ist, wird der Zeitstempel des vollständigen Ladevorgangs in der Zeitstempel-Spalte um den Zeitpunkt des Eintreffens der Daten im Ziel erhöht.

Standardwert: false

Zulässige Werte: true, false

Beispiel: --s3-settings '{"UseTaskStartTimeForFullLoadTimestamp": true}'

UseTaskStartTimeForFullLoadTimestamp: true hilft dabei, das S3-Ziel TimestampColumnName für einen vollständigen Ladevorgang mit TimestampColumnName für einen CDC-Ladevorgang sortierbar zu machen.

ParquetTimestampInMillisecond

Ein optionaler Parameter, der die Genauigkeit der TIMESTAMP-Spaltenwerte angibt, die in eine S3-Objektdatei im .parquet-Format geschrieben werden.

Wenn dieses Attribut auf true oder y festgelegt ist, schreibt AWS DMS alle TIMESTAMP-Spalten in eine .parquet-formatierte Datei mit einer Genauigkeit von Millisekunden. Andernfalls schreibt DMS sie mit einer Genauigkeit in Mikrosekunden.

Derzeit können Amazon Athena und AWS Glue nur Millisekunden-Genauigkeit für TIMESTAMP-Werte verarbeiten. Setzen Sie dieses Attribut für .parquet-formatierte S3-Endpunkt-Objektdateien nur dann auf „true“, wenn Sie vorhaben, die Daten mithilfe von Athena oder AWS Glue abzufragen oder zu verarbeiten.

Anmerkung
  • AWS DMS verwendet für alle TIMESTAMP-Spaltenwerte, die in eine S3-Datei im CSV-Format geschrieben werden, eine Genauigkeit in Mikrosekunden.

  • Die Einstellung dieses Attributs hat keine Auswirkung auf das Zeichenfolgeformat des Zeitstempelspaltenwerts; der durch Festlegen des TimestampColumnName-Attributs eingefügt wird.

Standardwert: false

Zulässige Werte: true, false, y, n

Beispiel: --s3-settings '{"ParquetTimestampInMillisecond": true}'

GlueCatalogGeneration

Um einen AWS Glue Data Catalog zu generieren, setzen Sie diese Endpunkteinstellung auf true.

Standardwert: false

Zulässige Werte: true, false

Beispiel: --s3-settings '{"GlueCatalogGeneration": true}'

Hinweis: Verwenden Sie GlueCatalogGeneration nicht mit PreserveTransactions und CdcPath.

Verwenden von AWS Glue Data Catalog mit einem Amazon-S3-Ziel für AWS DMS

AWS Glue ist ein Service, der einfache Möglichkeiten zur Kategorisierung von Daten bietet und aus einem Metadaten-Repository besteht, das als AWS Glue Data Catalog bezeichnet wird. Sie können AWS Glue Data Catalog in Ihren Amazon-S3-Zielendpunkt integrieren und Amazon-S3-Daten über andere AWS-Services wie Amazon Athena abfragen. Amazon Redshift kann mit AWS Glue verwendet werden, AWS DMS unterstützt dies jedoch nicht als vordefinierte Option.

Um den Datenkatalog zu generieren, setzen Sie die Endpunkteinstellung GlueCatalogGeneration auf true, wie im folgenden AWS CLI-Beispiel zu sehen ist.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "DataFormat": "parquet", "GlueCatalogGeneration": true}'

Für eine Replikationsaufgabe mit vollständigem Ladevorgang, die Daten des Typs csv umfasst, legen Sie für IncludeOpForFullLoad true fest.

Verwenden Sie GlueCatalogGeneration nicht mit PreserveTransactions und CdcPath. Der AWS Glue-Crawler kann die verschiedenen Schemas von Dateien, die unter dem angegebenen CdcPath gespeichert sind, nicht abgleichen.

Damit Amazon Athena Ihre Amazon-S3-Daten indexiert und Sie Ihre Daten mithilfe von Standard-SQL-Abfragen über Amazon Athena abfragen können, muss die dem Endpunkt zugeordnete IAM-Rolle über die folgende Richtlinie verfügen:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::bucket123", "arn:aws:s3:::bucket123/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:GetDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:111122223333:catalog", "arn:aws:glue:*:111122223333:database/*", "arn:aws:glue:*:111122223333:table/*" ] }, { "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:CreateWorkGroup" ], "Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*" } ] }
Referenzen

Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel

Sie können die Einstellungen für den S3-Zielendpunkt verwenden, um Folgendes zu konfigurieren:

  • Einen benutzerdefinierten KMS-Schlüssel für die Verschlüsselung Ihrer S3-Zielobjekte

  • Parquet-Dateien als Speicherformat für S3-Zielobjekte

  • Change Data Capture (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel

  • Integration von AWS Glue Data Catalog in Ihren Amazon-S3-Zielendpunkt und Abfrage von Amazon-S3-Daten über andere Services wie Amazon Athena

AWS KMS-Schlüsseleinstellungen für die Datenverschlüsselung

Die folgenden Beispiele veranschaulichen die Konfiguration eines benutzerdefinierten KMS-Schlüssels, um Ihre S3-Zielobjekte zu verschlüsseln. Um zu starten, können Sie den folgenden create-endpoint-CLI-Befehl ausführen.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'

Das durch die --s3-settings-Option angegebene JSON-Objekt definiert zwei Parameter. Der eine ist ein EncryptionMode-Parameter mit dem Wert SSE_KMS. Der andere ist ein ServerSideEncryptionKmsKeyId-Parameter mit dem Wert arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480. Bei diesem Wert handelt es sich um einen Amazon-Ressourcenname (ARN) für Ihren benutzerdefinierten KMS-Schlüssel. Bei einem S3-Ziel legen Sie auch zusätzliche Einstellungen fest. Diese identifizieren die Zugriffsrolle des Servers, legen die Trennzeichen für das CSV-Objektspeicherformat fest und geben den Speicherort sowie den Namen des Buckets zum Speichern von S3-Zielobjekten an.

Standardmäßig erfolgt S3-Datenverschlüsselung mithilfe von serverseitiger S3-Verschlüsselung. Für das S3-Ziel des vorherigen Beispiels ist dies gleichbedeutend mit der Angabe der Endpunkteinstellungen, wie im folgenden Beispiel dargestellt.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_S3"}'

Weitere Informationen über das Arbeiten mit serverseitiger S3-Verschlüsselung finden Sie unter Schützen von Daten mithilfe serverseitiger Verschlüsselung.

Anmerkung

Sie können auch den CLI-Befehl modify-endpoint verwenden, um den Wert des Parameters EncryptionMode für einen vorhandenen Endpunkt von SSE_KMS in SSE_S3 zu ändern. Sie können jedoch nicht den Wert für EncryptionMode von SSE_S3 in SSE_KMS ändern.

Einstellungen für das Speichern von S3-Zielobjekten mithilfe von Parquet-Dateien

Das Standardformat für die Erstellung von S3-Zielobjekten ist CSV-Dateien. Die folgenden Beispiele zeigen einige Endpunkteinstellungen, um Parquet-Dateien als Format für die Erstellung von S3-Zielobjekten festzulegen. Sie können das Parquet-Dateiformat mit allen Standardeinstellungen angeben, wie im folgenden Beispiel gezeigt.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'

Hier wird der DataFormat-Parameter als parquet festgelegt, um das Format mit allen S3-Standards zu ermöglichen. Diese Standardwerte umfassen eine Verzeichniskodierung ("EncodingType: "rle-dictionary"), die eine Kombination aus Bit-Packing und Run-Length-Kodierung verwendet, um sich wiederholende Werte effizienter zu speichern.

Sie können zusätzliche Einstellungen für Optionen festlegen, die nicht zu den Standardeinstellungen gehören, wie im folgenden Beispiel gezeigt.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "CompressionType": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000, "EnableStatistics": false }'

Hier werden zusätzlich zu den Parametern für mehrere S3-Bucket-Standardoptionen und dem DataFormat-Parameter die folgenden zusätzlichen Parquet-Dateiparameter festgelegt:

  • EncodingType – Auf eine Verzeichniskodierung (plain-dictionary) festgelegt, die die in den einzelnen Spalten auftretenden Werte in einem Block auf der Verzeichnisseite speichert, der auch nach Spalten organisiert ist.

  • DictPageSizeLimit – Auf eine maximale Verzeichnisseitengröße von 3 MB festgelegt.

  • EnableStatistics – Deaktiviert den Standard, der die Sammlung von Statistiken über Parquet-Dateiseiten und -Zeilengruppen ermöglicht.

Erfassen von Datenänderungen (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel

Bei Ausführung einer CDC-Aufgabe speichert AWS DMS standardmäßig alle in Ihrer Quelldatenbank (oder Ihren Quelldatenbanken) protokollierten Zeilenänderungen in einer oder mehreren Dateien für jede Tabelle. Jede Gruppe von Dateien mit Änderungen für dieselbe Tabelle befindet sich in einem einzelnen Zielverzeichnis, das dieser Tabelle zugeordnet ist. AWS DMS erstellt so viele Zielverzeichnisse, wie Datenbanktabellen auf den Amazon-S3-Zielendpunkt migriert werden. Die Dateien werden auf dem S3-Ziel in diesen Verzeichnissen ohne Berücksichtigung der Transaktionsreihenfolge gespeichert. Weitere Informationen zu den Dateinamenskonventionen, zu den Dateninhalten und zum Format finden Sie unter Verwenden von Amazon S3 als Ziel für AWS Database Migration Service.

Um Änderungen an der Quelldatenbank so zu erfassen, dass auch die Transaktionsreihenfolge erfasst wird, können Sie S3-Endpunkteinstellungen angeben, die AWS DMS anweisen, die Zeilenänderungen für alle Datenbanktabellen in einer oder mehreren CSV-Dateien zu speichern, die je nach Transaktionsgröße erstellt werden. In diesen CSV-Transaktionsdateien sind alle Zeilenänderungen sequentiell in der Transaktionsreihenfolge für alle an den einzelnen Transaktionen beteiligten Tabellen aufgeführt. Diese Transaktionsdateien befinden sich alle in einem einzelnen Transaktionsverzeichnis, das Sie auch auf dem S3-Ziel angeben. In jeder Transaktionsdatei werden der Transaktionsvorgang und die Identität der Datenbank und der Quelltabelle für jede Zeilenänderung wie folgt als Teil der Zeilendaten gespeichert.

operation,table_name,database_schema_name,field_value,...

operation ist hier der Transaktionsvorgang für die geänderte Zeile, table_name der Name der Datenbanktabelle, in der die Zeile geändert wurde, database_schema_name der Name des Datenbankschemas, in dem sich die Tabelle befindet, und field_value der erste von einem oder mehreren Feldwerten, die die Daten für die Zeile angeben.

Im folgenden Beispiel einer Transaktionsdatei sind geänderte Zeilen für eine oder mehrere Transaktionen zu sehen, die sich auf zwei Tabellen beziehen.

I,Names_03cdcad11a,rdsTempsdb,13,Daniel U,Names_03cdcad11a,rdsTempsdb,23,Kathy D,Names_03cdcad11a,rdsTempsdb,13,Cathy I,Names_6d152ce62d,rdsTempsdb,15,Jane I,Names_6d152ce62d,rdsTempsdb,24,Chris I,Names_03cdcad11a,rdsTempsdb,16,Mike

Hier wird der Transaktionsvorgang für jede Zeile in der ersten Spalte durch I („Insert“ – Einfügen), U („Update“ – Aktualisieren) oder D („Delete“ – Löschen) angezeigt. Der Tabellenname ist der zweite Spaltenwert (z. B. Names_03cdcad11a). Der Name des Datenbankschemas ist der Wert der dritten Spalte (z. B. rdsTempsdb). Die verbleibenden Spalten werden mit Ihren eigenen Zeilendaten gefüllt (z. B. 13,Daniel).

AWS DMS benennt die Transaktionsdateien, die auf dem Amazon-S3-Ziel erstellt werden, zudem mithilfe eines Zeitstempels gemäß der folgenden Namenskonvention.

CDC_TXN-timestamp.csv

timestamp ist hier der Zeitpunkt, zu dem die Transaktionsdatei erstellt wurde, wie im folgenden Beispiel dargestellt.

CDC_TXN-20201117153046033.csv

Dieser Zeitstempel im Dateinamen stellt sicher, dass die Transaktionsdateien in der Reihenfolge der Transaktionen erstellt und aufgeführt werden, wenn Sie sie in ihrem Transaktionsverzeichnis auflisten.

Anmerkung

Bei der Erfassung von Datenänderungen in der Reihenfolge der Transaktionen speichert AWS DMS die Zeilenänderungen immer in CSV-Dateien, unabhängig vom Wert der S3-Einstellung DataFormat auf dem Ziel. Bei Verwendung von Parquet-Dateien speichert AWS DMS Datenänderungen nicht in der Transaktionsreihenfolge.

Um die Häufigkeit von Schreibvorgängen auf ein Amazon-S3-Ziel während einer Datenreplikationsaufgabe zu steuern, können Sie die Einstellungen CdcMaxBatchInterval und CdcMinFileSize konfigurieren. Dies kann zu einer besseren Leistung bei der Analyse der Daten ohne zusätzliche überflüssige Aufgaben führen. Weitere Informationen finden Sie unter Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS

So weisen Sie AWS DMS an, alle Zeilenänderungen in der Reihenfolge der Transaktionen zu speichern
  1. Legen Sie für die S3-Einstellung PreserveTransactions auf dem Ziel true fest.

  2. Legen Sie für die S3-Einstellung CdcPath auf dem Ziel einen relativen Ordnerpfad fest, in dem AWS DMS die CSV-Transaktionsdateien speichern soll.

    AWS DMS erstellt diesen Pfad entweder unter dem standardmäßigen S3-Ziel-Bucket und -Arbeitsverzeichnis oder unter dem Bucket und Bucket-Ordner, die Sie über die S3-Einstellungen BucketName und BucketFolder auf dem Ziel angeben.

Angabe von Quelldatenbankoperationen in migrierten S3-Daten

Wenn AWS DMS Datensätze zu einem S3-Ziel migriert, kann es in jedem migrierten Datensatz ein zusätzliches Feld erstellen. Dieses zusätzliche Feld gibt die Operation an, die auf den Datensatz in der Quelldatenbank angewendet wird. Wie AWS DMS dieses erste Feld erstellt und festlegt, hängt vom Typ der Migrationsaufgabe und den Einstellungen von includeOpForFullLoad, cdcInsertsOnly und cdcInsertsAndUpdates ab.

Wenn im Falle eines vollständigen Ladevorgangs includeOpForFullLoad auf true gesetzt ist, erstellt AWS DMS in jedem CSV-Datensatz stets ein zusätzliches erstes Feld. Dieses Feld enthält den Buchstaben I (INSERT), um anzugeben, dass die Zeile in der Quelldatenbank eingefügt wurde. Wenn im Falle eines CDC-Ladevorgangs cdcInsertsOnly auf false (Standardeinstellung) gesetzt ist, erstellt AWS DMS ebenfalls in jedem CSV- oder Parquet-Datensatz stets ein zusätzliches erstes Feld. Dieses Feld enthält die Buchstaben I (INSERT), U (UPDATE) oder D (DELETE), um anzugeben, ob die Zeile in der Quelldatenbank eingefügt, aktualisiert oder gelöscht wurde.

In der folgenden Tabelle sehen Sie, wie sich die Einstellungen der Attribute includeOpForFullLoad und cdcInsertsOnly gemeinsam auf die Einstellung migrierter Datensätze auswirken.

Mit diesen Parametereinstellungen Legt DMS die Zieldatensätze für CSV- und Parquet-Ausgaben wie folgt fest
includeOpForFullLoad cdcInsertsOnly Für vollständige Ladevorgänge Für CDC-Ladevorgänge
true true Wert des hinzugefügten ersten Felds ist auf I festgelegt Wert des hinzugefügten ersten Felds ist auf I festgelegt
false false Kein hinzugefügtes Feld Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt
false true Kein hinzugefügtes Feld Kein hinzugefügtes Feld
true false Wert des hinzugefügten ersten Felds ist auf I festgelegt Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt

Wenn includeOpForFullLoad und cdcInsertsOnly auf denselben Wert festgelegt sind, werden die Zieldatensätze entsprechend dem Attribut festgelegt, das die Datensatzeinstellungen für den aktuellen Migrationstyp steuert. Das Attribut ist includeOpForFullLoad für vollständige Ladevorgänge und cdcInsertsOnly für CDC-Ladevorgänge.

Wenn includeOpForFullLoad und cdcInsertsOnly auf verschiedene Werte festgelegt sind, stellt AWS DMS Konsistenz bei den Zieldatensatzeinstellungen sowohl für vollständige als auch für CDC-Ladevorgänge her. Hierzu werden die Datensatzeinstellungen des CDC-Ladevorgangs an die Datensatzeinstellungen früherer vollständiger Ladevorgänge angepasst, wie durch includeOpForFullLoad angegeben.

Nehmen Sie beispielsweise an, dass für einen vollständigen Ladevorgang ein erstes Feld hinzugefügt wird, um einen eingefügten Datensatz anzuzeigen. In diesem Fall wird einem folgenden CDC-Ladevorgang ein erstes Feld hinzugefügt, das einen eingefügten, aktualisierten oder gelöschten Datensatz in der Quelle anzeigt wie zutreffend. Nehmen Sie nun an, dass für einen vollständigen Ladevorgang nicht festgelegt wurde, dass zur Anzeige eines eingefügten Datensatzes ein erstes Feld hinzugefügt wird. In diesem Fall wird für diesen CDC-Ladevorgang ebenfalls festgelegt, dass jedem Datensatz unabhängig von der entsprechenden Datensatzoperation in der Quelle ein erstes Feld hinzugefügt wird.

Ebenso hängt die Art und Weise, wie DMS ein zusätzliches erstes Feld erstellt und einstellt, von den Einstellungen von includeOpForFullLoad und cdcInsertsAndUpdates ab. In der folgenden Tabelle können Sie sehen, wie sich die Einstellungen der Attribute includeOpForFullLoad und cdcInsertsAndUpdates gemeinsam auf die Einstellung migrierter Datensätze in diesem Format auswirken.

Mit diesen Parametereinstellungen DMS legt Zieldatensätze für CSV-Ausgaben wie folgt fest
includeOpForFullLoad cdcInsertsAndUpdates Für vollständige Ladevorgänge Für CDC-Ladevorgänge
true true Wert des hinzugefügten ersten Felds ist auf I festgelegt Wert des hinzugefügten ersten Felds ist auf I oder U gesetzt
false false Kein hinzugefügtes Feld Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt
false true Kein hinzugefügtes Feld Wert des hinzugefügten ersten Felds ist auf I oder U gesetzt
true false Wert des hinzugefügten ersten Felds ist auf I festgelegt Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt

Zieldatentypen für S3 Parquet

In der folgenden Tabelle sind die Parquet-Zieldatentypen, die bei Verwendung von AWS DMS unterstützt werden, sowie deren Standardzuordnung von AWS DMS-Datentypen aufgeführt.

Weitere Informationen zu AWS DMS-Datentypen finden Sie unter Datentypen für den AWS Database Migration Service.

AWS DMS-Datentyp

S3-Parquet-Datentyp

BYTES BINARY
DATE DATE32
TIME TIME32
DATETIME TIMESTAMP
INT1 INT8
INT2 INT16
INT4 INT32
INT8 INT64
NUMERIC DECIMAL
REAL4 FLOAT
REAL8 DOUBLE
STRING STRING
UINT1 UINT8
UINT2 UINT16
UINT4 UINT32
UINT8 UINT64
WSTRING STRING
BLOB BINARY
NCLOB STRING
CLOB STRING
BOOLEAN BOOL