Verwendung 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.

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

Sie können Daten AWS DMS aus jeder der unterstützten Datenbankquellen zu Amazon S3 migrieren. Wenn Sie Amazon S3 als Ziel in einer AWS DMS Aufgabe verwenden, werden sowohl Volllast- als auch CDC-Daten (Change Data Capture) standardmäßig in das Format mit kommagetrennten Werten (.csv) 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 — zum Beispiel LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A usw. für CSV-Dateien. AWS DMS benennt CDC-Dateien mithilfe von Zeitstempeln, zum Beispiel 20141029-1134010000.csv. AWS DMS Erstellt für jede Quelltabelle, die Datensätze enthält, einen Ordner unter dem angegebenen Zielordner (sofern die Quelltabelle nicht leer ist). AWS DMS schreibt alle Volllast- und CDC-Dateien in den angegebenen Amazon S3 S3-Bucket. Sie können die Größe der AWS DMS erstellten Dateien mithilfe der MaxFileSizeEndpunkteinstellung 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 Datenänderungen mithilfe einer CDC-Task replizieren, gibt die erste Spalte der CSV- oder .parquet-Ausgabedatei an, wie die Zeilendaten geändert wurden, wie in der folgenden CSV-Datei gezeigt. AWS DMS

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

Nehmen wir für dieses Beispiel an, dass die Quelldatenbank eine EMPLOYEE Tabelle enthält. AWS DMS schreibt als Reaktion auf die folgenden Ereignisse Daten in die .csv- oder .parquet-Datei:

  • 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 CDC standardmäßig die Zeilenänderungen für jede Datenbanktabelle unabhängig von der Transaktionsreihenfolge AWS DMS 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-Replikationsinstanz, die Sie für die Migration Ihrer Daten verwenden.

  • Das AWS Konto, das Sie für die Migration verwenden, hat 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.

  • Für AWS DMS Version 3.4.7 und höher muss DMS über einen VPC-Endpunkt oder eine öffentliche Route auf den Quell-Bucket zugreifen. Informationen zu VPC-Endpunkten finden Sie unter. Konfigurieren von VPC-Endpunkten als Quell- und Zielendpunkte in AWS DMS

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 dass zuvor erstellte Datensätze nicht an die neue Struktur angepasst werden. AWS DMS Erstellt nach der Änderung 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 die Bearbeitung DDL von Änderungen.

  • 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 nicht das Umbenennen mehrerer Quelltabellen in denselben Zielordner mithilfe von Transformationsregeln.

  • 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 Grants für Amazon S3, sogenannte vorgefertigte Zugriffskontrolllisten (ACLs). 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 Amazon S3 Canned finden Sie ACLs unter Canned 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 Angeben von Regeln zur Tabellenauswahl und Transformation mithilfe von 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.

AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen

Sie können benutzerdefinierte AWS KMS Schlüssel erstellen und verwenden, um Ihre Amazon S3 S3-Zielobjekte zu verschlüsseln. 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 unter https://console.aws.amazon.com/iam/ die IAM-Konsole.

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

  3. Wählen Sie Create Policy (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. Die Seite Create role (Rolle erstellen) wird geöffnet.

  3. Wenn der AWS Service als vertrauenswürdige Entität ausgewählt ist, wählen Sie DMS als den Dienst, für den die IAM-Rolle verwendet werden soll.

  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: Tags aus. 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 Informationen zur AWS DMS Funktionsweise mit AWS KMS Verschlüsselungsschlüsseln finden Sie unter. Einen Verschlüsselungsschlüssel festlegen und Berechtigungen angeben AWS KMS

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

  2. Um das zu ändern AWS-Region, 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 Dienste, wie 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 aufgeführt sind und über denselben Zugriff verfügen, wählen Sie unter Andere AWS Konten die Option Weiteres AWS Konto hinzufügen und dann Weiter aus. 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 AWS DMS die Verschlüsselung von Amazon S3 S3-Zielobjekten.

Verwenden einer datumsbasierten Ordnerpartitionierung

AWS DMS unterstützt S3-Ordnerpartitionen auf der Grundlage eines Transaktions-Commit-Datums, 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. Es verwendet die --s3-settings '{json-settings}' Option von AWS CLI. create-endpointBefehl.

--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 es AWS DMS , parallel Prozesse auszuführen, um jeden Unterordner auf dem 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. AWS DMS Fügt für diese Datenbank-Engines den Index des laufenden Quellsegments wie folgt als Präfix zum Namen der Ziel-.csv-Datei 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

AWS DMS Speichert hier 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 AWS DMS wird standardmäßig jede Reihe von CSV-Dateien in ihrem Unterordner erstellt. table_name 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 an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des create-endpoint Befehls in AWS CLI, mit der --s3-settings '{"EndpointSetting": "value", ...}' JSON-Syntax erstellen.

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 Nullwerte AWS DMS behandelt werden. 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, wird die leere Zeichenfolge als Nullwert AWS DMS behandelt, anstatt 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

Ein Wert, der es AWS DMS ermöglicht, eine vordefinierte (gespeicherte) Zugriffskontrollliste für Objekte anzugeben, die im S3-Bucket als CSV- oder .parquet-Dateien erstellt wurden. Weitere Informationen zu Amazon S3 Canned ACLs finden Sie unter Canned ACL im Amazon S3 Developer Guide.

Standardwert: KEINE

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

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. cdcInsertsOnlyWenn auf oder INSERTs gesetzt isttrue, y werden nur Daten aus der Quelldatenbank in die Datei .csv oder .parquet 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 istfalse, aber wenn auf true oder gesetzt cdcInsertsAndUpdates isty, INSERTs und UPDATEs aus der Quelldatenbank werden in die .csv- oder .parquet-Datei migriert.

Wie diese INSERTs Daten nur im CSV-Dateiformat aufgezeichnet UPDATEs werden, hängt vom Wert des Parameters ab. includeOpForFullLoad 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 den AWS DMS Versionen 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 DataFormat S3-Einstellung 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.

Anmerkung

Ab AWS DMS Version 3.5.3 hängt die Häufigkeit der confirmed_flush_lsn Aktualisierungen bei der Verwendung von PostgreSQL oder Aurora PostgreSQL als Quelle und Amazon S3 mit Parquet als Ziel von der Datenmenge ab, die der Zielendpunkt so konfiguriert ist, dass er im Speicher aufbewahrt. AWS DMS sendet die Daten erst confirmed_flush_lsn zurück an die Quelle, nachdem die Daten im Speicher in Amazon S3 geschrieben wurden. Wenn Sie den CdcMaxBatchInterval Parameter auf einen höheren Wert konfigurieren, stellen Sie möglicherweise eine erhöhte Auslastung der Replikationssteckplätze in der Quelldatenbank fest.

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 DataFormat S3-Einstellung auf dem Ziel. DMS speichert Datenänderungen bei Verwendung von Parquet-Dateien nicht in der Reihenfolge der Transaktionen.

Anmerkung

Diese Einstellung wird in den AWS DMS Versionen 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 dieser Wert auf Amazon S3 als Ziel gesetzt ist true oder Amazon S3 als Ziel y verwendet wird und die Daten Anführungszeichen, Kommas oder AWS DMS Zeilenumbrüche enthalten, wird die gesamte Spalte mit einem zusätzlichen Paar doppelter Anführungszeichen („) eingeschlossen. 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üsselalias in der Liste der für Ihr Konto erstellten AWS KMS Schlüssel 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 AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen.

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

DataFormat

Das Ausgabeformat für die Dateien, das zur Erstellung von S3-Objekten AWS DMS verwendet wird. AWS DMS Unterstützt für Amazon S3 S3-Ziele 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 schließt eine zusätzliche STRING Spalte in den Objektdateien .csv oder .parquet Ihrer migrierten Daten ein, wenn Sie einen Wert angeben, der nicht leer TimestampColumnName ist.

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 gesetzt isty, werden alle TIMESTAMP Spalten mit Millisekundengenauigkeit in eine Datei im .parquet-Format AWS DMS geschrieben. Andernfalls schreibt DMS sie mit einer Genauigkeit in Mikrosekunden.

Derzeit AWS Glue kann Amazon Athena und nur Werte mit einer Genauigkeit von Millisekunden verarbeiten. TIMESTAMP 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 schreibt alle in eine S3-Datei geschriebenen TIMESTAMP Spaltenwerte im CSV-Format mit einer Genauigkeit im Mikrosekundenbereich.

  • 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 eine zu generieren AWS Glue Data Catalog, 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.

Verwendung AWS Glue Data Catalog mit einem Amazon S3 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. Sie können die Integration AWS Glue Data Catalog mit Ihrem Amazon S3 S3-Zielendpunkt durchführen und Amazon S3 S3-Daten über andere AWS Dienste wie Amazon Athena abfragen. Amazon Redshift funktioniert damit AWS Glue , unterstützt AWS DMS es aber nicht als vorgefertigte Option.

Um den Datenkatalog zu generieren, setzen Sie die GlueCatalogGeneration Endpunkteinstellung auftrue, wie im folgenden AWS CLI 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", "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 den angegebenen Daten gespeichert sind, nicht abgleichen. CdcPath

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

  • AWS Glue Data Catalog Integrieren Sie es in Ihren Amazon S3 S3-Zielendpunkt und fragen Sie Amazon S3 S3-Daten über andere Services wie Amazon Athena ab.

AWS KMS wichtige Einstellungen 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

Wenn eine CDC-Task AWS DMS ausgeführt wird, werden standardmäßig alle in Ihrer Quelldatenbank (oder Datenbanken) protokollierten Zeilenänderungen in einer oder mehreren Dateien für jede Tabelle gespeichert. Jede Gruppe von Dateien, die Änderungen für dieselbe Tabelle enthalten, befindet sich in einem einzigen Zielverzeichnis, das dieser Tabelle zugeordnet ist. AWS DMS erstellt so viele Zielverzeichnisse wie Datenbanktabellen, die auf den Amazon S3 S3-Zielendpunkt migriert wurden. 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 Verwendung 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, sodass die Zeilenänderungen für alle Datenbanktabellen in einer oder mehreren CSV-Dateien gespeichert werden, die je nach Transaktionsgröße erstellt werden. AWS DMS 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 außerdem die Transaktionsdateien, die es auf dem Amazon S3 S3-Ziel erstellt, 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

Beim Erfassen von Datenänderungen in der Reihenfolge der Transaktionen werden die Zeilenänderungen AWS DMS immer in CSV-Dateien gespeichert, unabhängig vom Wert der DataFormat S3-Einstellung auf dem Ziel. AWS DMS speichert Datenänderungen nicht in der Reihenfolge der Transaktionen mithilfe von .parquet-Dateien.

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

Gibt AWS DMS an, dass alle Zeilenänderungen in der Reihenfolge der Transaktion gespeichert werden sollen
  1. Legen Sie für die S3-Einstellung PreserveTransactions auf dem Ziel true fest.

  2. Stellen Sie die CdcPath S3-Einstellung auf dem Ziel auf einen relativen Ordnerpfad ein, in dem Sie die .csv-Transaktionsdateien speichern möchten AWS DMS .

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

Angabe von Quelldatenbankoperationen in migrierten S3-Daten

Bei der AWS DMS Migration von Datensätzen zu einem S3-Ziel kann in jedem migrierten Datensatz ein zusätzliches Feld erstellt werden. Dieses zusätzliche Feld gibt die Operation an, die auf den Datensatz in der Quelldatenbank angewendet wird. Wie dieses erste Feld AWS DMS erstellt und festgelegt wird, hängt vom Typ der Migrationsaufgabe und den Einstellungen von includeOpForFullLoadcdcInsertsOnly, und ab. cdcInsertsAndUpdates

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 ein CDC geladen cdcInsertsOnly wird false (Standardeinstellung), wird AWS DMS außerdem immer ein zusätzliches erstes Feld in jedem .csv- oder .parquet-Datensatz erstellt. 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 auf unterschiedliche Werte gesetzt cdcInsertsOnly sind, AWS DMS werden die Einstellungen für den Zieldatensatz sowohl für CDC als auch für Volllast konsistent. 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 cdcInsertsAndAktualisierungen 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

Die folgende Tabelle zeigt die Parquet-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von AWS DMS Datentypen.

Weitere Informationen zu AWS DMS Datentypen finden Sie unterDatentypen 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