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.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 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 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 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
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
- AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen
- 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
- Verwendung AWS Glue Data Catalog mit einem Amazon S3 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-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-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 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
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 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:
-
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 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 |
|
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.
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
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 unter https://console.aws.amazon.com/iam/
die IAM-Konsole. -
Wählen Sie im Navigationsbereich die Option Policies (Richtlinien) aus. Die Seite Policies (Richtlinien) wird geöffnet.
-
Wählen Sie Create Policy (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. Die Seite Create role (Rolle erstellen) wird geöffnet.
-
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.
-
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: 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.
-
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 Informationen zur AWS DMS Funktionsweise mit AWS KMS Verschlüsselungsschlüsseln finden Sie unter. Einen Verschlüsselungsschlüssel festlegen und Berechtigungen angeben AWS KMS
-
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
. -
Um das zu ändern AWS-Region, 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 Dienste, wie 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 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
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 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 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. Es verwendet die --s3-settings '{
Option von AWS CLI. json-settings
}'create-endpoint
Befehl.
--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
, 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. 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.
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 an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des create-endpoint
Befehls in AWS CLI, mit der --s3-settings '{"
JSON-Syntax erstellen.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 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 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 |
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: |
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 Wie diese INSERTs Daten nur im CSV-Dateiformat aufgezeichnet UPDATEs werden, hängt vom Wert des Parameters ab. 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 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. |
|
Bedingung für die maximale Intervalllänge, definiert in Sekunden, für die Ausgabe einer Datei in Amazon S3. Standardwert: 60 Sekunden Wenn AnmerkungAb AWS DMS Version 3.5.3 hängt die Häufigkeit der |
|
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 DataFormat S3-Einstellung auf dem Ziel. DMS speichert Datenänderungen bei Verwendung von Parquet-Dateien nicht in der Reihenfolge der Transaktionen. AnmerkungDiese 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 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 dieser Wert auf Amazon S3 als Ziel gesetzt ist 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, 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: 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 schließt 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 AWS Glue kann Amazon Athena und nur Werte mit einer Genauigkeit von Millisekunden verarbeiten. Anmerkung
Standardwert: Zulässige Werte: Beispiel: |
GlueCatalogGeneration |
Um eine zu generieren AWS Glue Data Catalog, setzen Sie diese Endpunkteinstellung auf. Standardwert: Zulässige Werte: Beispiel: Hinweis: Verwenden Sie |
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
-
Weitere Informationen zu AWS Glue finden Sie unter Konzepte im Entwicklerhandbuch.AWS Glue
-
Weitere Informationen finden AWS Glue Data Catalog 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
-
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
,...
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 außerdem die Transaktionsdateien, die es auf dem Amazon S3 S3-Ziel erstellt, 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
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
-
Legen Sie für die S3-Einstellung
PreserveTransactions
auf dem Zieltrue
fest. -
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 includeOpForFullLoad
cdcInsertsOnly
, 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 |