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

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von Amazon S3 als Quelle für AWS DMS

Sie können Daten aus einem Amazon-S3-Bucket mithilfe von AWS DMS migrieren. Erteilen Sie dazu Zugriff auf einen Amazon-S3-Bucket, der eine oder mehrere Datendateien enthält. Fügen Sie diesem S3-Bucket eine JSON-Datei hinzu, die die Zuweisung zwischen den Daten und den Datenbanktabellen der Daten in diesen Dateien beschreibt.

Die Quelldatendateien müssen im Amazon-S3-Bucket enthalten sein, bevor die Volllastaufgabe beginnt. Geben Sie den Bucket-Namen mit dem bucketName-Parameter an.

Die Quelldatendateien müssen im CSV-Format vorliegen. Verwenden Sie die folgende Namenskonvention, wenn Sie sie benennen. In dieser Konvention ist schemaName das Quellschema und tableName ist der Name einer Tabelle in diesem Schema.

/schemaName/tableName/LOAD001.csv /schemaName/tableName/LOAD002.csv /schemaName/tableName/LOAD003.csv ...

Angenommen, Ihre Datendateien befinden sich in mybucket im folgenden Amazon-S3-Pfad.

s3://mybucket/hr/employee

Zur Ladezeit nimmt AWS DMS an, dass der Name des Quellschemas hr und der Name der Quelltabelle employee ist.

Zusätzlich zu bucketName (erforderlich) können Sie optional einen bucketFolder-Parameter bereitstellen, um anzugeben, wo AWS DMS im Amazon-S3-Bucket nach Datendateien suchen soll. Wenn Sie im vorherigen Beispiel bucketFolder auf sourcedata setzen, liest AWS DMS die Datendateien im folgenden Pfad.

s3://mybucket/sourcedata/hr/employee

Sie können mithilfe der zusätzlichen Verbindungsattribute die Trennzeichen für die Spalte und die Zeile sowie den Nullwertindikator und andere Parameter festlegen. Weitere Informationen finden Sie unter Endpunkteinstellungen für Amazon S3 als Quelle für AWS DMS.

Sie können einen Bucket-Eigentümer angeben und Sniping verhindern, wenn 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"}'

Definieren von externen Tabellen für Amazon S3 als Quelle für AWS DMS

Zusätzlich zu den Datendateien müssen Sie auch eine externe Tabellendefinition bereitstellen. Eine externe Tabellendefinition ist ein JSON-Dokument, in dem beschrieben wird, wie AWS DMS die Daten aus Amazon S3 interpretieren soll. Die maximale Größe dieses Dokuments ist 2 MB. Wenn Sie einen Quellendpunkt mithilfe der AWS DMS-Managementkonsole erstellen, können Sie JSON direkt in das Tabellenzuweisungsfeld eingeben. Wenn Sie die AWS Command Line Interface (AWS CLI) oder AWS DMS-API zum Durchführen von Migrationen verwenden, können Sie eine JSON-Datei zur Angabe der externen Tabellendefinition erstellen.

Angenommen, Sie haben eine Datei mit den folgenden Daten.

101,Smith,Bob,2014-06-04,New York 102,Smith,Bob,2015-10-08,Los Angeles 103,Smith,Bob,2017-03-13,Dallas 104,Smith,Bob,2017-03-13,Dallas

Im Folgenden sehen Sie ein Beispiel für eine externe Tabellendefinition für diese Daten.

{ "TableCount": "1", "Tables": [ { "TableName": "employee", "TablePath": "hr/employee/", "TableOwner": "hr", "TableColumns": [ { "ColumnName": "Id", "ColumnType": "INT8", "ColumnNullable": "false", "ColumnIsPk": "true" }, { "ColumnName": "LastName", "ColumnType": "STRING", "ColumnLength": "20" }, { "ColumnName": "FirstName", "ColumnType": "STRING", "ColumnLength": "30" }, { "ColumnName": "HireDate", "ColumnType": "DATETIME" }, { "ColumnName": "OfficeLocation", "ColumnType": "STRING", "ColumnLength": "20" } ], "TableColumnsTotal": "5" } ] }

In diesem JSON-Dokument sind folgende Elemente enthalten:

TableCount – die Anzahl der Quelltabellen. In diesem Beispiel es nur eine Tabelle.

Tables – ein Array bestehend aus einer JSON-Zuweisung je Quelltabelle. In diesem Beispiel es nur eine Zuweisung. Jede Zuweisung umfasst die folgenden Schlüsselelemente:

  • TableName – der Name der Quelltabelle.

  • TablePath – der Pfad in Ihrem Amazon-S3-Bucket, in dem AWS DMS die Datei mit den Daten für die Volllastaufgabe finden kann. Wenn ein bucketFolder-Wert angegeben ist, wird dieser Wert dem Pfad vorangestellt.

  • TableOwner – der Name des Schemas für diese Tabelle.

  • TableColumns – ein Array einer oder mehrerer Zuweisungen, die jeweils eine Spalte in der Quelltabelle beschreiben:

    • ColumnName – der Name einer Spalte in der Quelltabelle.

    • ColumnType – der Datentyp für die Spalte. Die zulässigen Datentypen finden Sie unter Quelldatentypen für Amazon S3.

    • ColumnLength – die Anzahl an Bytes in dieser Spalte. Die maximale Spaltenlänge ist auf 2 147 483 647 Bytes (2 047 MegaBytes) begrenzt, da eine S3-Quelle den Modus FULL LOB nicht unterstützt. ColumnLength gilt für die folgenden Datentypen:

      • BYTE

      • STRING

    • ColumnNullable – ein boolescher Wert, der true lautet, wenn diese Spalte NULL-Werte enthalten darf (Standard = false).

    • ColumnIsPk – ein boolescher Wert, der true lautet, wenn diese Spalte Teil des Primärschlüssels ist (Standard = false).

    • ColumnDateFormat – das Eingabedatumsformat für eine Spalte mit den Typen DATE, TIME und DATETIME, das verwendet wird, um eine Datenzeichenfolge in ein Datumsobjekt zu analysieren. Mögliche Werte sind:

      - YYYY-MM-dd HH:mm:ss - YYYY-MM-dd HH:mm:ss.F - YYYY/MM/dd HH:mm:ss - YYYY/MM/dd HH:mm:ss.F - MM/dd/YYYY HH:mm:ss - MM/dd/YYYY HH:mm:ss.F - YYYYMMdd HH:mm:ss - YYYYMMdd HH:mm:ss.F
  • TableColumnsTotal – die Gesamtanzahl der Spalten. Diese Anzahl muss der Anzahl der Elemente im TableColumns-Array entsprechen.

Wenn Sie nichts anderes angeben, geht AWS DMS davon aus, dass ColumnLength Null ist.

Anmerkung

In unterstützten Versionen von AWS DMS können die S3-Quelldaten auch eine optionale Operationsspalte als erste Spalte vor dem Spaltenwert TableName enthalten. Diese Operationsspalte identifiziert die Operation (INSERT), die verwendet wird, um die Daten während eines vollständigen Ladevorgangs zu einem S3-Zielendpunkt zu migrieren.

Falls vorhanden, ist der Wert dieser Spalte das erste Zeichen des INSERT-Schlüsselworts der Operation (I). Sofern vorhanden, gibt diese Spalte in der Regel an, dass die S3-Quelle während einer früheren Migration durch DMS als S3-Ziel erstellt wurde.

In früheren DMS-Versionen als 3.4.2 war diese Spalte in S3-Quelldaten, die aus einer früheren DMS-Volllastaufgabe erstellt wurden, nicht vorhanden. Durch das Hinzufügen dieser Spalte zu den S3-Zieldaten werden alle Zeilen in einem konsistenten Format zum S3-Ziel geschrieben. Dies geschieht unabhängig davon, ob die Daten während eines vollständigen oder während eines CDC-Ladevorgangs geschrieben werden. Weitere Informationen zu den Optionen zum Formatieren von S3-Zieldaten finden Sie unter Angabe von Quelldatenbankoperationen in migrierten S3-Daten.

Für eine Spalte des Typs NUMERIC müssen Sie die Genauigkeit und Skalierung festlegen. Genauigkeit ist die Gesamtanzahl der Stellen in einer Zahl und Skalierung die Anzahl der Dezimalstellen. Dafür verwenden Sie die Elemente ColumnPrecision und ColumnScale, wie im Folgenden dargestellt.

... { "ColumnName": "HourlyRate", "ColumnType": "NUMERIC", "ColumnPrecision": "5" "ColumnScale": "2" } ...

Geben Sie für eine Spalte vom Typ DATETIME mit Daten, die Sekundenbruchteile enthalten, die Skalierung an. Skalierung ist die Anzahl der Dezimalstellen für die Sekundenbruchteile. Diese kann zwischen 0 und 9 liegen. Verwenden Sie dafür das Element ColumnScale, wie im Folgenden dargestellt.

... { "ColumnName": "HireDate", "ColumnType": "DATETIME", "ColumnScale": "3" } ...

Wenn Sie nichts anderes angeben, geht AWS DMS davon aus, dass ColumnScale Null ist, und die Sekundenbruchteile werden gekürzt.

Verwenden von CDC mit Amazon S3 als Quelle für AWS DMS

Nachdem AWS DMS einen vollständigen Datenladevorgang ausgeführt hat, können optional Datenänderungen für den Zielendpunkt repliziert werden. Zu diesem Zweck laden Sie Dateien zur Erfassung von Datenänderungen (Change Data Capture (CDC)-Dateien) in Ihren Amazon-S3-Bucket hoch. AWS DMS liest diese CDC-Dateien, wenn Sie sie hochladen. Anschließend werden die Änderungen für den Zielendpunkt übernommen.

Die CDC-Dateien werden wie folgt benannt:

CDC00001.csv CDC00002.csv CDC00003.csv ...
Anmerkung

Um CDC-Dateien im Änderungsdatenordner zu replizieren, laden Sie sie erfolgreich in lexikalischer (sequenzieller) Reihenfolge hoch. Laden Sie z. B. die Datei „CDC00002.csv“ vor der Datei „CDC00003.csv“ hoch. Andernfalls wird die Datei „CDC00002.csv“ übersprungen und nicht repliziert, wenn Sie sie zeitlich nach „CDC00003.csv“ laden. Die Datei „CDC00004.csv“ wird jedoch erfolgreich repliziert, wenn sie nach der Datei „CDC00003.csv“ geladen wird.

Um anzugeben, wo AWS DMS die Dateien finden kann, legen Sie den Parameter cdcPath fest. Wenn Sie im vorherigen Beispiel cdcPath auf changedata setzen, liest AWS DMS die CDC-Dateien im folgenden Pfad.

s3://mybucket/changedata

Wenn Sie cdcPath auf changedata und bucketFolder auf myFolder setzen, liest AWS DMS die CDC-Dateien im folgenden Pfad.

s3://mybucket/myFolder/changedata

Die Datensätze in einer CDC-Datei werden wie folgt formatiert:

  • Operation – die Änderungsoperation, die ausgeführt werden soll: INSERT oder I, UPDATE oder U oder DELETE oder D. Diese Schlüsselwort- und Zeichenwerte unterscheiden zwischen Groß- und Kleinschreibung.

    Anmerkung

    In unterstützten AWS DMS-Versionen kann AWS DMS die Operation, die für jeden Ladedatensatz ausgeführt werden soll, auf zwei Arten identifizieren. AWS DMS kann diese anhand des Schlüsselwortwerts des Datensatzes (z. B.INSERT) oder anhand des Anfangszeichens des Schlüsselworts (z. B. I) ermitteln. In früheren Versionen konnte AWS DMS die Ladeoperation nur am vollständigen Wert des Schlüsselworts erkennen.

    In früheren Versionen von AWS DMS wurde der vollständige Wert des Schlüsselworts geschrieben, um die CDC-Daten zu protokollieren. Vorherige Versionen schrieben den Operationswert darüber hinaus nur mit dem Anfangszeichen des Schlüsselworts in S3-Ziele.

    Dadurch, dass nun beide Formate erkannt werden, kann AWS DMS die Operation verarbeiten, unabhängig davon, wie die Operationsspalte zum Erstellen der S3-Quelldaten geschrieben wurde. Dieser Ansatz unterstützt die Verwendung von S3-Zieldaten als Quelle für eine spätere Migration. Dank dieses Ansatzes müssen Sie nicht länger das Format des Anfangszeichens eines Schlüsselworts ändern, das in der Operationsspalte der späteren S3-Quelle erscheint

  • Tabellenname – der Name der Quelltabelle.

  • Schemaname – der Name des Quellschemas.

  • Daten – eine oder mehrere Spalten, die die zu ändernden Daten darstellen.

Im Folgenden sehen Sie ein Beispiel einer CDC-Datei für eine Tabelle mit dem Namen employee.

INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas

Voraussetzungen für die Verwendung von Amazon S3 als Quelle für AWS DMS

Wenn Sie Amazon S3 als Quelle für AWS DMS verwenden möchten, muss sich der S3-Quell-Bucket in derselben AWS-Region wie die DMS-Replikations-Instance befinden, mit der Sie Ihre Daten migrieren. Darüber hinaus muss das AWS-Konto, das Sie für die Migration verwenden, über Lesezugriff auf den Quell-Bucket verfügen.

Die dem Benutzerkonto zugewiesene AWS Identity and Access Management (IAM)-Rolle, mit der die Migrationsaufgabe erstellt wird, muss den folgenden Satz von Berechtigungen aufweisen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

Die dem Benutzerkonto zugewiesene AWS Identity and Access Management (IAM)-Rolle, mit der die Migrationsaufgabe erstellt wird, muss den folgenden Satz von Berechtigungen aufweisen, wenn die Versionsverwaltung für den Amazon-S3-Bucket aktiviert ist.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "S3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

Einschränkungen bei Verwendung von Amazon S3 als Quelle für AWS DMS

Die folgenden Einschränkungen gelten bei Verwendung von Amazon S3 als Quelle:

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

Endpunkteinstellungen für Amazon S3 als Quelle für AWS DMS

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer Amazon-S3-Quelldatenbank verwenden. Sie legen die Einstellungen fest, wenn Sie den Quellendpunkt mithilfe der AWS DMS-Konsole erstellen oder indem Sie den Befehl create-endpoint in der AWS CLI aufrufen. Verwenden Sie die JSON-Syntax --s3-settings '{"EndpointSetting": "value", ...}'.

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

Option Beschreibung
BucketFolder

(Optional) Ein Ordnername im S3-Bucket. Wenn dieses Attribut angegeben ist, werden die Quelldatendateien und CDC-Dateien im Pfad s3://myBucket/bucketFolder/schemaName/tableName/ bzw. s3://myBucket/bucketFolder/ gelesen. Wenn dieses Attribut nicht angegeben ist, wird der Pfad schemaName/tableName/ verwendet.

'{"BucketFolder": "sourceData"}'

BucketName

Der Name des S3-Buckets.

'{"BucketName": "myBucket"}'

CdcPath Der Speicherort von CDC-Dateien. Dieses Attribut ist erforderlich, wenn eine Aufgabe Änderungsdaten erfasst. Andernfalls ist es optional. Wenn CdcPath vorhanden ist, liest AWS DMS CDC-Dateien von diesem Pfad und repliziert die Datenänderungen auf dem Zielendpunkt. Weitere Informationen finden Sie unter Verwenden von CDC mit Amazon S3 als Quelle für AWS DMS.

'{"CdcPath": "changeData"}'

CsvDelimiter

Das Trennzeichen, das zum Trennen von Spalten in den Quelldateien dient. Standardmäßig wird ein Komma verwendet. Ein Beispiel folgt.

'{"CsvDelimiter": ","}'

CsvNullValue

Eine benutzerdefinierte Zeichenfolge, die AWS DMS beim Lesen aus der Quelle als Null behandelt. Der Standardwert ist eine leere Zeichenfolge. Wenn Sie diesen Parameter nicht festlegen, behandelt AWS DMS eine leere Zeichenfolge als Nullwert. Wenn Sie diesen Parameter auf eine Zeichenfolge wie „\N“ setzen, behandelt AWS DMS diese Zeichenfolge als Nullwert und leere Zeichenfolgen als leere Zeichenfolgewerte.

CsvRowDelimiter

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

'{"CsvRowDelimiter": "\n"}'

IgnoreHeaderRows

Wenn dieser Wert auf 1 eingestellt ist, ignoriert AWS DMS die erste Zeile in einer CSV-Datei. Mit dem Wert 1 wird die Funktion aktiviert, mit 0 deaktiviert.

Der Standardwert ist 0.

'{"IgnoreHeaderRows": 1}'

Rfc4180

Wenn dieser Wert auf true oder y gesetzt ist, muss auf jedes führende doppelte Anführungszeichen ein endendes doppeltes Anführungszeichen folgen. Diese Formatierung entspricht RFC 4180. Wenn dieser Parameter auf false oder n gesetzt ist, werden Zeichenfolgen-Literale wie vorhanden in das Ziel kopiert. In diesem Fall signalisiert ein Trennzeichen (Zeile oder Spalte) das Ende des Feldes. Daher können Sie keine Trennzeichen als Teil der Zeichenfolge verwenden, da diese das Ende des Werts bezeichnen.

Der Standardwert ist true.

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

'{"Rfc4180": false}'

Quelldatentypen für Amazon S3

Bei einer Datenmigration, die Amazon S3 als Quelle für AWS DMS verwendet, müssen die Daten aus Amazon S3 den AWS DMS-Datentypen zugeordnet werden. Weitere Informationen finden Sie unter Definieren von externen Tabellen für Amazon S3 als Quelle für AWS DMS.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

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

Die folgenden AWS DMS-Datentypen werden mit Amazon S3 als Quelle verwendet: