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.csvdatabase_schema_name
/table_name
/LOAD00000002.csv ...database_schema_name
/table_name
/LOAD00000009.csvdatabase_schema_name
/table_name
/LOAD0000000A.csvdatabase_schema_name
/table_name
/LOAD0000000B.csv ...database_schema_name
/table_name
/LOAD0000000F.csvdatabase_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 QuelldatenbankINSERT
ed (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-TabelleUPDATE
d (aktualisiert) wurde, um Bobs neuen Firmenstandort widerzuspiegeln. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach demUPDATE
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 erneutUPDATE
d (aktualisiert) wurde. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach demUPDATE
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 QuelltabelleDELETE
d (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
Themen
- Voraussetzungen für die Verwendung von Amazon S3 als Ziel
- Einschränkungen bei der Verwendung von Amazon S3 als Ziel
- Sicherheit
- Speichern von Amazon-S3-Objekten mithilfe von Apache Parquet
- Markieren von Amazon-S3-Objekten
- Erstellen von AWS KMS-Schlüsseln zum Verschlüsseln von Amazon-S3-Zielobjekten
- Verwenden einer datumsbasierten Ordnerpartitionierung
- Paralleles Laden partitionierter Quellen bei Verwendung von Amazon S3 als Ziel für AWS DMS
- Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS
- Verwenden von AWS Glue Data Catalog mit einem Amazon-S3-Ziel für AWS DMS
- Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel
- Angabe von Quelldatenbankoperationen in migrierten S3-Daten
- Zieldatentypen für S3 Parquet
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-AufgabeneinstellungBatchApplyEnabled
) für ein S3-Ziel kann es zu einem Datenverlust kommen. -
Sie können
DatePartitionEnabled
oderaddColumnName
nicht zusammen mitPreserveTransactions
oderCdcPath
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
vonDO_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
-Einstellungtrue
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:
-
Endpunkteinstellungen, die Sie bei der Erstellung des Endpunkts mithilfe der AWS CLI oder der API für AWS DMS als Parameter für ein JSON-Objekt angeben. Weitere Informationen finden Sie unter Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel.
-
Zusätzliche Verbindungsattribute, die Sie bei der Erstellung des Endpunkts als eine durch Semikolons getrennte Liste bereitstellen. Weitere Informationen finden Sie unter Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS.
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 |
|
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
|
tag-set |
|
Die Namen und Werte für ein oder mehrere Tags, die für die einzelnen erstellten S3-Objekte festgelegt werden sollen, welche dem angegebenen Sie können auch einen dynamischen Wert für alle oder einen Teil des Werts für die AnmerkungWichtigWenn Sie einen dynamischen Wert für den |
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
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.your-KMS-key-ARN
-
Richten Sie für das zusätzliche Verbindungsattribut
encryptionMode
den WertSSE_KMS
und für das zusätzliche VerbindungsattributserverSideEncryptionKmsKeyId
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
Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich die Option Policies (Richtlinien) aus. Die Seite Policies (Richtlinien) wird geöffnet.
-
Wählen Sie Richtlinie erstellen aus. Die Seite Create policy (Richtlinie erstellen) wird geöffnet.
-
Wählen Sie Service und anschließend die Option S3 aus. Es wird eine Liste mit den Aktionsberechtigungen angezeigt.
-
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.
-
-
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.
-
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).
-
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. -
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
-
Wählen Sie im Navigationsbereich Ihrer IAM-Konsole Rollen aus. Die Detailseite Roles (Rollen) wird geöffnet.
-
Wählen Sie Rolle erstellen aus. Die Seite Create role (Rolle erstellen) wird geöffnet.
-
Wenn AWS-Service als vertrauenswürdige Entität auswählt ist, wählen Sie DMS als den Service aus, der die IAM-Rolle verwendet.
-
Wählen Sie Weiter: Berechtigungen aus. Die Ansicht Attach permissions policies (Berechtigungsrichtlinien hinzufügen) wird auf der Seite Create role (Rolle erstellen) angezeigt.
-
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. -
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.
-
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.
-
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.
-
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.
-
Wenn Sie die AWS-Region ändern möchten, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.
-
Klicken Sie im Navigationsbereich auf Kundenverwaltete Schlüssel.
-
Klicken Sie auf Create key. Die Seite Configure key (Schlüssel konfigurieren) wird geöffnet.
-
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.
-
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.
-
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. -
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.
-
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.
-
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.
-
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
. -
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
undUser1
) 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 } } } ]
-
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 auftrue
, um S3-Bucket-Ordner basierend auf den Commit-Daten von Transaktionen zu partitionieren.Sie können diese Einstellung nicht zusammen mit
PreserveTransactions
oderCdcPath
verwenden.Der Standardwert ist
false
. -
DatePartitionSequence
– Identifiziert die Reihenfolge des Datumsformats, das bei der Ordnerpartitionierung verwendet werden soll. Setzen Sie diese ENUM-Option aufYYYYMMDD
,YYYYMMDDHH
,YYYYMM
,MMYYYYDD
oderDDMMYYYY
. Der Standardwert istYYYYMMDD
. Verwenden Sie diese Einstellung, wennDatePartitionEnabled
auftrue.
gesetzt ist. -
DatePartitionDelimiter
– Gibt ein Datumstrennzeichen für die Ordnerpartitionierung an. Setzen Sie diese ENUM-Option aufSLASH
,DASH
,UNDERSCORE
oderNONE
. Der Standardwert istSLASH
. Verwenden Sie diese Einstellung, wennDatePartitionEnabled
auftrue
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 '{
des AWS CLI-Befehls json-settings
}'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
, der einer gleichnamigen Quellpartition entspricht. In diesem Unterordner partition_name
werden dann eine oder mehrere Dateien partition_name
LOAD
mit Daten gespeichert, die von der angegebenen Quellpartition migriert wurden. seq_num
.csv
ist hier der Sequenznummer-Nachsatz im Namen der CSV-Datei, also beispielsweise seq_num
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
-Unterordner. Hier stellt AWS DMS den Dateinamen jeder Serie von CSV-Dateien den Namen des laufenden Quellsegmentindex voran, wie im Folgenden dargestellt.table_name
.../
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 '{"
an.EndpointSetting"
:
"value"
, ...
}'
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 Standardwert: Gültige Werte: jede gültige Zeichenfolge Beispiel: |
AddColumnName |
Ein optionaler Parameter, den sie, sofern er auf Sie können diesen Parameter nicht zusammen mit Standardwert: Zulässige Werte: Beispiel: |
AddTrailingPaddingCharacter |
Verwenden Sie die S3-Zielendpunkteinstellung Typ: Boolesch Beispiel: |
BucketFolder |
Ein optionaler Parameter zum Festlegen eines Ordnernamens im S3-Bucket. Wenn angegeben, werden Zielobjekte als CSV- oder Parquet-Dateien im Pfad Beispiel: |
BucketName |
Der Name des S3-Buckets, in dem S3-Zielobjekte als CSV- oder Parquet-Dateien erstellt werden. Beispiel: |
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: |
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 Im Fall von CSV-Dateien ist die Art der Aufzeichnung dieser INSERTs vom Wert für Standardwert: Zulässige Werte: Beispiel: |
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 Nur für das CSV-Dateiformat hängt die Art und Weise, wie diese INSERTs und UPDATEs aufgezeichnet werden, vom Wert des Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter Angabe von Quelldatenbankoperationen in migrierten S3-Daten. Anmerkung
Standardwert: Zulässige Werte: Beispiel: |
|
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 Sie können diesen Parameter nicht zusammen mit Typ: Zeichenfolge Wenn Sie beispielsweise Wenn Sie denselben AnmerkungDiese 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. |
|
Bedingung für die maximale Intervalllänge, definiert in Sekunden, für die Ausgabe einer Datei in Amazon S3. Standardwert: 60 Sekunden Wenn |
|
Bedingung für die minimale Dateigröße, definiert in Kilobyte, für die Ausgabe einer Datei in Amazon S3. Standardwert: 32000 KB Wenn |
|
Wenn hier Sie können diesen Parameter nicht zusammen mit 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. AnmerkungDiese 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 AnmerkungDieser Parameter funktioniert mit Standardwert: Zulässige Werte: Beispiel: |
CompressionType |
Ein optionaler Parameter verwendet, sofern er auf Standardwert: Gültige Werte: Beispiel: |
CsvDelimiter |
Das Trennzeichen, das zum Trennen von Spalten in den CSV-Quelldateien dient. Standardmäßig wird ein Komma (,) verwendet. Beispiel: |
CsvRowDelimiter |
Das Trennzeichen, das zum Trennen von Zeilen in den CSV-Quelldateien dient. Standardmäßig wird ein Zeilenumbruch (\n) verwendet. Beispiel: |
|
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: |
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 Standardwert: Zulässige Werte: Beispiel: |
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 AnmerkungSie können auch den CLI-Befehl Standardwert: Gültige Werte: Beispiel: |
ServerSideEncryptionKmsKeyId |
Wenn Sie Beispiel: |
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: Gültige Werte: Beispiel: |
EncodingType |
Der Parquet-Kodierungstyp. Die Kodierungstypoptionen umfassen Folgendes:
Standardwert: Gültige Werte: Beispiel: |
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: |
RowGroupLength |
Die Anzahl der Zeilen einer Zeilengruppe in einer Parquet-Datei. Standardwert: 10.024 (10 KB) Zulässige Werte: Jede gültige Ganzzahl Beispiel: |
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: |
ParquetVersion |
Die Version des Parquet-Dateiformats. Standardwert: Gültige Werte: Beispiel: |
EnableStatistics |
Legen Sie Standardwert: Zulässige Werte: Beispiel: |
TimestampColumnName |
Ein optionaler Parameter, um eine Zeitstempelspalte in die S3-Zielendpunktdaten einzufügen. AWS DMS enthält eine zusätzliche 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 Wenn für den Parameter Beispiel: |
UseTaskStartTimeForFullLoadTimestamp |
Bei Einstellung von Wenn Standardwert: Zulässige Werte: Beispiel:
|
ParquetTimestampInMillisecond |
Ein optionaler Parameter, der die Genauigkeit der Wenn dieses Attribut auf Derzeit können Amazon Athena und AWS Glue nur Millisekunden-Genauigkeit für Anmerkung
Standardwert: Zulässige Werte: Beispiel: |
GlueCatalogGeneration |
Um einen AWS Glue Data Catalog zu generieren, setzen Sie diese Endpunkteinstellung auf Standardwert: Zulässige Werte: Beispiel: Hinweis: Verwenden Sie |
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
-
Weitere Informationen zum Konfigurieren einer Regel in AWS Glue finden Sie unter https://docs.aws.amazon.com/glue/latest/dg/components-key-concepts.html im AWS Glue-Entwicklerhandbuch.
-
Weitere Informationen zu AWS Glue Data Catalog finden Sie unter Komponenten im AWS Glue-Entwicklerhandbuch.
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
,...
ist hier der Transaktionsvorgang für die geänderte Zeile, operation
der Name der Datenbanktabelle, in der die Zeile geändert wurde, table_name
der Name des Datenbankschemas, in dem sich die Tabelle befindet, und database_schema_name
der erste von einem oder mehreren Feldwerten, die die Daten für die Zeile angeben.field_value
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
ist hier der Zeitpunkt, zu dem die Transaktionsdatei erstellt wurde, wie im folgenden Beispiel dargestellt. timestamp
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
-
Legen Sie für die S3-Einstellung
PreserveTransactions
auf dem Zieltrue
fest. -
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
undBucketFolder
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 |