

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.

# Ziele für die Datenmigration
<a name="CHAP_Target"></a>

AWS Database Migration Service (AWS DMS) kann viele der gängigsten Datenbanken als Ziel für die Datenreplikation verwenden. Das Ziel kann sich auf einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance, einer Amazon Relational Database Service (Amazon RDS) -Instance oder einer lokalen Datenbank befinden. 

Eine umfassende Liste gültiger Ziele finden Sie unter [Ziele für AWS DMS](CHAP_Introduction.Targets.md).

**Anmerkung**  
AWS DMS unterstützt keine regionsübergreifende AWS Migration für die folgenden Zielendpunkttypen:  
Amazon-DynamoDB
 OpenSearch Amazon-Dienst
Amazon Kinesis Data Streams
Amazon Aurora PostgreSQL Limitless ist als Ziel für AWS Database Migration Service () verfügbar.AWS DMS Weitere Informationen finden Sie unter [Verwenden einer PostgreSQL-Datenbank als Ziel für](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html). AWS Database Migration Service

**Topics**
+ [Verwendung einer Oracle-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.Oracle.md)
+ [Verwenden einer Microsoft SQL Server-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.SQLServer.md)
+ [Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.PostgreSQL.md)
+ [Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.MySQL.md)
+ [Verwenden einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.Redshift.md)
+ [Verwendung einer SAP ASE-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.SAP.md)
+ [Verwendung von Amazon S3 als Ziel für AWS Database Migration Service](CHAP_Target.S3.md)
+ [Verwenden einer Amazon DynamoDB DynamoDB-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.DynamoDB.md)
+ [Verwendung von Amazon Kinesis Data Streams als Ziel für AWS Database Migration Service](CHAP_Target.Kinesis.md)
+ [Verwendung von Apache Kafka als Ziel für AWS Database Migration Service](CHAP_Target.Kafka.md)
+ [Verwendung eines Amazon OpenSearch Service-Clusters als Ziel für AWS Database Migration Service](CHAP_Target.Elasticsearch.md)
+ [Amazon DocumentDB als Ziel für den AWS Database Migration Service verwenden](CHAP_Target.DocumentDB.md)
+ [Verwendung von Amazon Neptune als Ziel für AWS Database Migration Service](CHAP_Target.Neptune.md)
+ [Verwenden von Redis OSS als Ziel für AWS Database Migration Service](CHAP_Target.Redis.md)
+ [Babelfish als Ziel verwenden für AWS Database Migration Service](CHAP_Target.Babelfish.md)
+ [Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service](CHAP_Target.Timestream.md)
+ [Verwendung von Amazon RDS for Db2 und IBM Db2 LUW als Ziel für AWS DMS](CHAP_Target.DB2.md)

# Verwendung einer Oracle-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Oracle"></a>

Sie können Daten entweder aus einer anderen Oracle-Datenbank oder aus einer der anderen unterstützten Datenbanken zu Oracle-Datenbankzielen migrieren. AWS DMS Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem Oracle-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Hinweise zur Verwendung von SSL mit einem Oracle-Endpunkt finden Sie unter[Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md). AWS DMS unterstützt auch die Verwendung von Oracle Transparent Data Encryption (TDE) zur Verschlüsselung ruhender Daten in der Zieldatenbank, da Oracle TDE zum Schreiben in die Datenbank weder einen Verschlüsselungsschlüssel noch ein Kennwort benötigt.

Hinweise zu Versionen von Oracle, die als Ziel AWS DMS unterstützen, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md) 

Wenn Sie Oracle als Ziel verwenden, gehen wir davon aus, dass die Daten in das Schema oder den Benutzer migriert werden sollen, das bzw. der für die Zielverbindung verwendet wird. Wenn Sie Daten in ein anderes Schema migrieren möchten, verwenden Sie dazu eine Schematransformation. Nehmen wir an, Ihr Zielendpunkt stellt eine Verbindung mit dem Benutzer `RDSMASTER` her und Sie möchten vom Benutzer `PERFDATA1` zu `PERFDATA2` migrieren. Erstellen Sie in diesem Fall eine Transformation, die dem folgenden Beispiel ähnelt.

```
{
   "rule-type": "transformation",
   "rule-id": "2",
   "rule-name": "2",
   "rule-action": "rename",
   "rule-target": "schema",
   "object-locator": {
   "schema-name": "PERFDATA1"
},
"value": "PERFDATA2"
}
```

Wenn Sie Oracle als Ziel verwenden, AWS DMS migriert alle Tabellen und Indizes in Standardtabellen- und Index-Tablespaces im Ziel. Wenn Sie Tabellen und Indizes in verschiedene Tabellen- und Index-Tablespaces migrieren möchten, verwenden Sie hierfür eine Tablespace-Transformation. Angenommen, Sie verfügen über eine Reihe von Tabellen im `INVENTORY`-Schema, die einigen Tablespaces in der Oracle-Quelldatenbank zugeordnet sind. Für die Migration möchten Sie all diese Tabellen zu einem einzelnen `INVENTORYSPACE`-Tabellenraum in der Zieldatenbank zuweisen. Erstellen Sie in diesem Fall eine Transformation, die dem folgenden Beispiel ähnelt.

```
{
   "rule-type": "transformation",
   "rule-id": "3",
   "rule-name": "3",
   "rule-action": "rename",
   "rule-target": "table-tablespace",
   "object-locator": {
      "schema-name": "INVENTORY",
      "table-name": "%",
      "table-tablespace-name": "%"
   },
   "value": "INVENTORYSPACE"
}
```

Weitere Informationen zu Umwandlungen finden Sie unter [Festlegen der Tabellenauswahl- und Transformationsregeln mit JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Wenn Oracle sowohl Quelle als auch Ziel ist, können Sie vorhandene Tabellen- oder Index-Tablespace-Zuweisungen beibehalten, indem Sie das zusätzliche Verbindungsattribut für Oracle Source, `enableHomogenousTablespace=true`, festlegen. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.ConnectionAttrib).

Weitere Informationen zur Arbeit mit Oracle-Datenbanken als Ziel für finden Sie in den AWS DMS folgenden Abschnitten: 

**Topics**
+ [Einschränkungen von Oracle als Ziel für AWS Database Migration Service](#CHAP_Target.Oracle.Limitations)
+ [Benutzerkontoberechtigungen, die bei der Verwendung von Oracle als Ziel erforderlich sind](#CHAP_Target.Oracle.Privileges)
+ [Konfiguration einer Oracle-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.Oracle.Configuration)
+ [Endpunkteinstellungen bei Verwendung von Oracle als Ziel für AWS DMS](#CHAP_Target.Oracle.ConnectionAttrib)
+ [Zieldatentypen für Oracle](#CHAP_Target.Oracle.DataTypes)

## Einschränkungen von Oracle als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Oracle.Limitations"></a>

Bei der Verwendung von Oracle als Ziel für die Datenmigration gelten folgende Einschränkungen:
+ AWS DMS erstellt kein Schema in der Oracle-Zieldatenbank. Sie müssen gewünschte Schemata selbst in der Oracle-Zieldatenbank erstellen. Der Schemaname muss für das Oracle-Ziel bereits vorhanden sein. Tabellen aus dem Quellschema werden in den Benutzer oder das Schema importiert, das für die Verbindung mit der Zielinstanz AWS DMS verwendet wird. Um mehrere Schemata zu migrieren, können Sie mehrere Replikationsaufgaben erstellen. Sie können Daten auch in verschiedene Schemata auf einem Ziel migrieren. Dazu müssen Sie Schematransformationsregeln für die AWS DMS Tabellenzuordnungen verwenden.
+ AWS DMS unterstützt die `Use direct path full load` Option für Tabellen mit INDEXTYPE CONTEXT nicht. Um dieses Problem zu umgehen, können Sie den Array-Ladevorgang ausführen. 
+ Mit der Batch-optimierten Option „Apply (Anwenden)“ wird beim Laden in die Nettoänderungstabelle ein direkter Pfad verwendet, der den XML-Typ nicht unterstützt. Um dieses Problem zu umgehen, können Sie den transaktionalen Modus „Apply (Anwenden)“ verwenden.
+ Leere Zeichenfolgen, die aus Quelldatenbanken migriert werden, können vom Oracle-Ziel unterschiedlich behandelt (z. B. in eine Leerzeichenfolge konvertiert) werden. Dies kann dazu führen, dass bei der AWS DMS Überprüfung eine Nichtübereinstimmung gemeldet wird.
+ Sie können die Gesamtzahl der Spalten pro Tabelle, die im stapeloptimierten Anwendungsmodus unterstützt werden, mit der folgenden Formel ausdrücken:

  ```
  2 * columns_in_original_table + columns_in_primary_key <= 999
  ```

  Wenn die Originaltabelle beispielsweise 25 Spalten hat und ihr Primärschlüssel aus 5 Spalten besteht, beträgt die Gesamtzahl der Spalten 55. Wenn eine Tabelle die unterstützte Anzahl von Spalten überschreitet, werden alle Änderungen im one-by-one Modus übernommen.
+ AWS DMS unterstützt Autonomous DB auf Oracle Cloud Infrastructure (OCI) nicht.
+ Im transaktionalen Apply-Modus kann ein Oracle-Ziel DML-Anweisungen mit einer Größe von bis zu 32 KB verarbeiten. Dieses Limit ist zwar für viele Anwendungsfälle ausreichend, DML-Anweisungen mit einer Größe von mehr als 32 KB schlagen jedoch fehl und es wird folgende Fehlermeldung angezeigt: „ORA-01460: unimplemented or unreasonable conversion requested“. Um dieses Problem zu beheben, müssen Sie die Batch-Anwendungsfunktion aktivieren, indem Sie die Task-Einstellung auf setzen. `BatchApplyEnabled` `true` Batch Apply reduziert die Gesamtgröße der Anweisung, sodass Sie die Beschränkung von 32 KB umgehen können. Weitere Informationen finden Sie unter [Ziel-Metadaten-Aufgabeneinstellungen](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md).
+ AWS DMS Das vollständige Laden von LOB-Tabellen über den direkten Pfad kann aufgrund besonderer Anforderungen an die Verarbeitung von LOB-Daten mit dem Fehler ORA-39777 fehlschlagen. Dieser Fehler tritt beim Laden des direkten Pfads auf und kann Migrationsaufgaben, die LOB-Spalten betreffen, unterbrechen. Um das Problem zu beheben, deaktivieren Sie die `useDirectPathFullLoad` Einstellung auf dem Zielendpunkt und wiederholen Sie den Ladevorgang.

## Benutzerkontoberechtigungen, die bei der Verwendung von Oracle als Ziel erforderlich sind
<a name="CHAP_Target.Oracle.Privileges"></a>

Um ein Oracle-Ziel in einer AWS Database Migration Service Aufgabe zu verwenden, gewähren Sie die folgenden Rechte in der Oracle-Datenbank. Sie erteilen diese Berechtigungen dem Benutzerkonto, das in den Oracle-Datenbankdefinitionen für AWS DMS angegeben wurde.
+ SELECT ANY TRANSACTION 
+ SELECT on V\$1NLS\$1PARAMETERS 
+ SELECT on V\$1TIMEZONE\$1NAMES 
+ SELECT on ALL\$1INDEXES 
+ SELECT on ALL\$1OBJECTS 
+ SELECT on DBA\$1OBJECTS
+ SELECT on ALL\$1TABLES 
+ SELECT on ALL\$1USERS 
+ SELECT on ALL\$1CATALOG 
+ SELECT on ALL\$1CONSTRAINTS 
+ SELECT on ALL\$1CONS\$1COLUMNS 
+ SELECT on ALL\$1TAB\$1COLS 
+ SELECT on ALL\$1IND\$1COLUMNS 
+ DROP ANY TABLE 
+ SELECT ANY TABLE
+ INSERT ANY TABLE 
+ UPDATE ANY TABLE
+ CREATE ANY VIEW
+ DROP ANY VIEW
+ CREATE ANY PROCEDURE
+ ALTER ANY PROCEDURE
+ DROP ANY PROCEDURE
+ CREATE ANY SEQUENCE
+ ALTER ANY SEQUENCE
+ DROP ANY SEQUENCE 
+ DELETE ANY TABLE

Erteilen Sie für die folgenden Anforderungen diese zusätzlichen Berechtigungen:
+ Um eine bestimmte Tabellenliste zu verwenden, weisen Sie den replizierten Tabellen die Berechtigungen SELECT und auch ALTER zu.
+ Damit ein Benutzer in einem Standardtabellenbereich eine Tabelle erstellen kann, erteilen Sie die Berechtigung GRANT UNLIMITED TABLESPACE.
+ Für die Anmeldung gewähren Sie die Berechtigung CREATE SESSION.
+ Wenn Sie einen direkten Pfad verwenden (Standard bei Volllast), `GRANT LOCK ANY TABLE to dms_user;`.
+ Wenn das Schema bei Verwendung des Tabellenvorbereitungsmodus „DROP and CREATE“ anders ist, `GRANT CREATE ANY INDEX to dms_user;`.
+ Bei einigen Szenarien mit Volllast können Sie die Option „DROP und CREATE Tabelle“ oder „TRUNCATE vor dem Laden“ wählen, wobei sich ein Zieltabellenschema vom DMS-Benutzer unterscheidet. Erteilen Sie in diesem Fall die Berechtigung DROP ANY TABLE.
+ Um Änderungen in Änderungstabellen oder einer Audit-Tabelle zu speichern, in der sich das Zieltabellenschema vom DMS-Benutzer unterscheidet, gewähren Sie CREATE ANY TABLE und CREATE ANY INDEX.
+ Um LOB-Spalten mit der Validierungsfunktion zu validieren, gewähren Sie dem DMS-Benutzer die `SYS.DBMS_CRYPTO` EXECUTE-Berechtigung.

### Für die Zieldatenbank sind Leserechte erforderlich AWS Database Migration Service
<a name="CHAP_Target.Oracle.Privileges.Read"></a>

Dem AWS DMS Benutzerkonto müssen Leseberechtigungen für die folgenden DBA-Tabellen gewährt werden:
+ SELECT on DBA\$1USERS
+ SELECT on DBA\$1TAB\$1PRIVS
+ SELECT on DBA\$1OBJECTS
+ SELECT on DBA\$1SYNONYMS
+ SELECT on DBA\$1SEQUENCES
+ SELECT on DBA\$1TYPES
+ SELECT on DBA\$1INDEXES
+ SELECT on DBA\$1TABLES
+ SELECT on DBA\$1TRIGGERS
+ SELECT on SYS.DBA\$1REGISTRY

Wenn eine der erforderlichen Berechtigungen V\$1xxx nicht erteilt werden kann, erteilen Sie sie V\$1\$1xxx.

### Bewertungen vor der Migration
<a name="CHAP_Target.Oracle.Privileges.Premigration"></a>

Um die unter [Bewertungen von Oracle](CHAP_Tasks.AssessmentReport.Oracle.md) Mit Oracle als Ziel aufgeführten Bewertungen vor der Migration verwenden zu können, müssen Sie dem im Zielendpunkt der Oracle-Datenbank angegebenen Benutzerkonto die folgenden Berechtigungen hinzufügen:

```
GRANT SELECT ON V_$INSTANCE TO dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

## Konfiguration einer Oracle-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Oracle.Configuration"></a>

Bevor Sie eine Oracle-Datenbank als Datenmigrationsziel verwenden können, müssen Sie ein Oracle-Benutzerkonto für angeben AWS DMS. Das Benutzerkonto muss über read/write Berechtigungen für die Oracle-Datenbank verfügen, wie unter angegeben[Benutzerkontoberechtigungen, die bei der Verwendung von Oracle als Ziel erforderlich sind](#CHAP_Target.Oracle.Privileges).

## Endpunkteinstellungen bei Verwendung von Oracle als Ziel für AWS DMS
<a name="CHAP_Target.Oracle.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer Oracle-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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Oracle.html)

## Zieldatentypen für Oracle
<a name="CHAP_Target.Oracle.DataTypes"></a>

Eine Oracle-Zieldatenbank, die mit verwendet wird, AWS DMS unterstützt die meisten Oracle-Datentypen. Die folgende Tabelle zeigt die Oracle-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS sowie die Standardzuweisung von AWS DMS Datentypen. Weitere Informationen zum Anzeigen der Datentypen, die von der Quelle zugeordnet werden, finden Sie im Abschnitt für die Quelle, die Sie verwenden.


|  AWS DMS Datentyp  |  Oracle-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  NUMBER (1)  | 
|  BYTES  |  RAW (Länge)  | 
|  DATE  |  DATETIME  | 
|  TIME  | TIMESTAMP (0) | 
|  DATETIME  |  TIMESTAMP (Skalierung)  | 
|  INT1  | NUMBER (3) | 
|  INT2  |  NUMBER (5)  | 
|  INT4  | NUMBER (10) | 
|  INT8  |  NUMBER (19)  | 
|  NUMERIC  |  NUMBER (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  | FLOAT | 
|  STRING  |  Mit Datumsangabe: DATE  Mit Zeitangabe: TIMESTAMP  Mit Zeitstempelangabe: TIMESTAMP  Mit Angabe von "timestamp\$1with\$1timezone": TIMESTAMP WITH TIMEZONE  Mit Angabe von "timestamp\$1with\$1local\$1timezone": TIMESTAMP WITH LOCAL TIMEZONE Mit Angabe von "interval\$1year\$1to\$1month": INTERVAL YEAR TO MONTH  Mit Angabe von "interval\$1day\$1to\$1second": INTERVAL DAY TO SECOND  Wenn Länge > 4000: CLOB In allen anderen Fällen: VARCHAR2 (Länge)  | 
|  UINT1  |  NUMBER (3)  | 
|  UINT2  |  NUMBER (5)  | 
|  UINT4  |  NUMBER (10)  | 
|  UINT8  |  NUMBER (19)  | 
|  WSTRING  |  Wenn Länge > 2000: NCLOB In allen anderen Fällen: NVARCHAR2 (Länge)  | 
|  BLOB  |  BLOB Um diesen Datentyp mit verwenden zu können AWS DMS, müssen Sie die Verwendung von BLOBs für eine bestimmte Aufgabe aktivieren. BLOB-Datentypen werden nur in Tabellen unterstützt, die einen Primärschlüssel enthalten.  | 
|  CLOB  |  CLOB Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von CLOBs für eine bestimmte Aufgabe aktivieren. Bei Change Data Capture (CDC) unterstützt werden CLOB-Datentypen nur in Tabellen unterstützt, die einen Primärschlüssel enthalten. STRING Ein VARCHAR2 Oracle-Datentyp in der Quelle mit einer deklarierten Größe von mehr als 4000 Byte wird über den AWS DMS CLOB einem STRING auf dem Oracle-Ziel zugeordnet.  | 
|  NCLOB  |  NCLOB Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von NCLOBs für eine bestimmte Aufgabe aktivieren. Bei CDC werden NCLOB-Datentypen nur in Tabellen unterstützt, die einen Primärschlüssel enthalten. WSTRING Ein VARCHAR2 Oracle-Datentyp in der Quelle mit einer deklarierten Größe von mehr als 4000 Byte wird über den AWS DMS NCLOB einem WSTRING auf dem Oracle-Ziel zugeordnet.   | 
| XMLTYPE |  Der XMLTYPE-Zieldatentyp ist nur für Replikationsaufgaben relevant. Oracle-to-Oracle Wenn die Quelldatenbank Oracle ist, werden die Quelldatentypen unverändert in der Oracle-Zieldatenbank repliziert. Beispiel: Ein XMLTYPE-Datentyp in der Quelldatenbank wird als XMLTYPE-Datentyp in der Zieldatenbank erstellt.  | 

# Verwenden einer Microsoft SQL Server-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SQLServer"></a>

Sie können Daten mit Hilfe von zu Microsoft SQL Server-Datenbanken migrieren AWS DMS. Mit einer SQL Server-Datenbank als Ziel können Sie Daten aus einer anderen SQL Server-Datenbank oder einer der anderen unterstützten Datenbanken migrieren.

Informationen zu Versionen von SQL Server, die als Ziel AWS DMS unterstützt werden, finden Sie unter[Ziele für AWS DMS](CHAP_Introduction.Targets.md). 

AWS DMS unterstützt die lokalen und Amazon RDS-Editionen von Enterprise, Standard, Workgroup und Developer.

Weitere Informationen zur Arbeit mit AWS DMS und zu SQL Server-Zieldatenbanken finden Sie im Folgenden.

**Topics**
+ [Einschränkungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service](#CHAP_Target.SQLServer.Limitations)
+ [Sicherheitsanforderungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service](#CHAP_Target.SQLServer.Security)
+ [Endpunkteinstellungen bei Verwendung von SQL Server als Ziel für AWS DMS](#CHAP_Target.SQLServer.ConnectionAttrib)
+ [Zieldatentypen für Microsoft SQL Server](#CHAP_Target.SQLServer.DataTypes)

## Einschränkungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine SQL Server-Datenbank als Ziel für AWS DMS verwenden:
+ Wenn Sie eine SQL Server-Zieltabelle mit einer berechneten Spalte manuell erstellen, wird die Volllastreplikation bei Verwendung des BCP-Dienstprogramms zum Kopieren großer Datenmengen nicht unterstützt. Um eine Replikation mit vollständigem Ladevorgang zu verwenden, deaktivieren Sie das BCP-Laden, indem Sie das zusätzliche Verbindungsattribut (Extra Connection Attribute, ECA) `'useBCPFullLoad=false'` auf dem Endpunkt festlegen. Hinweise zur Einstellung von ECAs Endpunkten finden Sie unter[Erstellen der Quell- und Zielendpunkte](CHAP_Endpoints.Creating.md). Weitere Informationen zum Arbeiten mit BCP finden Sie in der [Microsoft SQL Server-Dokumentation](https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-and-export-bulk-data-by-using-the-bcp-utility-sql-server).
+  AWS DMS Ersetzt beim Replizieren von Tabellen mit räumlichen SQL Server-Datentypen (GEOMETRY und GEOGRAPHY) alle Raumbezugskennungen (SRID), die Sie möglicherweise eingefügt haben, durch die Standard-SRID. Die Standard-SRID für GEOMETRY ist 0 und für GEOGRAPHY 4326.
+ Temporäre Tabellen werden nicht unterstützt. Die Migration von temporären Tabellen ist mit einer reinen Replikationsaufgabe im transaktionalen Anwendungsmodus möglich, wenn diese Tabellen manuell auf dem Ziel erstellt werden.
+ Derzeit werden `boolean` Datentypen in einer PostgreSQL-Quelle als `bit` Datentyp mit inkonsistenten Werten in ein SQLServer Ziel migriert. 

  Führen Sie folgende Schritte aus, um dieses Problem zu umgehen:
  + Erstellen Sie die Tabelle vorab mit einem `VARCHAR(1)` Datentyp für die Spalte (oder lassen Sie AWS DMS die Tabelle erstellen). Dann lassen Sie die nachgeschaltete Verarbeitung ein „F“ als „False“ und ein „T“ als „True“ behandeln.
  + Um die nachgeschaltete Verarbeitung nicht ändern zu müssen, fügen Sie der Aufgabe eine Transformationsregel hinzu, um die „F“ -Werte in „0“ und die „T“ -Werte in „1“ zu ändern, und speichern Sie diese als SQL-Server-Bit-Datentyp.
+ AWS DMS unterstützt keine Änderungsverarbeitung, um die NULL-Zulässigkeit für Spalten festzulegen (unter Verwendung der `ALTER COLUMN [SET|DROP] NOT NULL` Klausel mit `ALTER TABLE` Anweisungen).
+ Windows-Authentifizierung wird nicht unterstützt.

## Sicherheitsanforderungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Security"></a>

Im Folgenden werden die Sicherheitsanforderungen für die Verwendung AWS DMS mit einem Microsoft SQL Server-Ziel beschrieben:
+ Das AWS DMS Benutzerkonto muss mindestens die `db_owner` Benutzerrolle in der SQL Server-Datenbank haben, zu der Sie eine Verbindung herstellen.
+ Ein SQL Server-Systemadministrator muss diese Berechtigung allen AWS DMS -Benutzerkonten erteilen.

## Endpunkteinstellungen bei Verwendung von SQL Server als Ziel für AWS DMS
<a name="CHAP_Target.SQLServer.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer SQL-Server-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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.SQLServer.html)

## Zieldatentypen für Microsoft SQL Server
<a name="CHAP_Target.SQLServer.DataTypes"></a>

Die folgende Tabelle zeigt die Microsoft SQL Server-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuordnung von AWS DMS Datentypen. Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS Datentyp  |  SQL Server-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  TINYINT  | 
|  BYTES  |  VARBINARY (Länge)  | 
|  DATE  |  Verwenden Sie für SQL Server 2008 und höher DATE. Verwenden Sie für frühere Versionen, wenn die Skalierung 3 oder weniger ist, DATETIME. Verwenden Sie in allen anderen Fällen VARCHAR (37).  | 
|  TIME  |  Verwenden Sie für SQL Server 2008 und höher DATETIME2 (%d). Verwenden Sie für frühere Versionen, wenn die Skalierung 3 oder weniger ist, DATETIME. Verwenden Sie in allen anderen Fällen VARCHAR (37).  | 
|  DATETIME  |  Verwenden Sie für SQL Server 2008 und höher DATETIME2 (scale).  Verwenden Sie für frühere Versionen, wenn die Skalierung 3 oder weniger ist, DATETIME. Verwenden Sie in allen anderen Fällen VARCHAR (37).  | 
|  INT1  | SMALLINT | 
|  INT2  |  SMALLINT  | 
|  INT4  | INT | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  NUMERIC (p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  | FLOAT | 
|  STRING  |  Wenn die Spalte eine Datums- oder Zeitspalte ist, gehen Sie wie folgt vor:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.SQLServer.html) Wenn die Spalte keine Datums- oder Zeitspalte ist, verwenden Sie VARCHAR (Länge).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR (Länge)  | 
|  BLOB  |  VARBINARY(max) IMAGE Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von BLOBs für eine bestimmte Aufgabe aktivieren. AWS DMS unterstützt BLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  CLOB  |  VARCHAR(max) Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von CLOBs für eine bestimmte Aufgabe aktivieren. Bei Change Data Capture (CDC) unterstützt AWS DMS CLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  NCLOB  |  NVARCHAR(max) Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von NCLOBs für eine bestimmte Aufgabe aktivieren. AWS DMS Unterstützt während CDC NCLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 

# Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL"></a>

Sie können Daten zu PostgreSQL-Datenbanken migrieren AWS DMS, indem Sie entweder eine andere PostgreSQL-Datenbank oder eine der anderen unterstützten Datenbanken verwenden. 

Hinweise zu Versionen von PostgreSQL, die als Ziel AWS DMS unterstützen, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md)

**Anmerkung**  
Amazon Aurora Serverless ist als Ziel für Amazon Aurora mit PostgreSQL-Kompatibilität verfügbar. Weitere Informationen zu Amazon Aurora Serverless finden Sie unter [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) im *Amazon Aurora Aurora-Benutzerhandbuch*.
Aurora-Serverless-DB-Cluster sind nur von einer Amazon VPC aus zugänglich und können keine [öffentliche IP-Adresse](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html) verwenden. Wenn Sie also eine Replikations-Instance in einer anderen Region als Aurora PostgreSQL Serverless haben möchten, müssen Sie [VPC-Peering](https://docs.aws.amazon.com//dms/latest/userguide/CHAP_ReplicationInstance.VPC.html#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer) konfigurieren. Prüfen Sie andernfalls die Verfügbarkeit von Aurora-PostgreSQL-Serverless-[Regionen](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraFeaturesRegionsDBEngines.grids.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.Serverless) und entscheiden Sie sich, eine dieser Regionen sowohl für Aurora PostgreSQL Serverless als auch für Ihre Replikations-Instance zu verwenden.
Die Babelfish-Funktion ist in Amazon Aurora integriert. Hierfür entstehen keine zusätzlichen Kosten. Weitere Informationen finden Sie unter [Verwendung von Babelfish für Aurora PostgreSQL als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish).

AWS DMS verfolgt einen table-by-table Ansatz bei der Migration von Daten von der Quelle zum Ziel in der Volllastphase. Die Tabellenreihenfolge kann während der Volllastphase nicht garantiert werden. Die Tabellen sind während der Vollastphase und während des Anwendens der zwischengespeicherten Transaktionen für einzelne Tabellen nicht synchron. Dies hat zur Folge, dass aktive referentielle Integritätseinschränkungen während der Volllastphase zu Aufgabenfehlern führen können.

In PostgreSQL werden Fremdschlüssel (referentielle Integritätseinschränkungen) mithilfe von Auslösern implementiert. AWS DMS Lädt während der Vollladephase jede Tabelle einzeln. Es wird ausdrücklich empfohlen, dass Sie Fremdschlüsseleinschränkungen während eines vollständigen Ladevorgangs mit einer der folgenden Methoden deaktivieren:
+ Deaktivieren Sie vorübergehend alle Auslöser aus der Instance und beenden Sie den vollständigen Ladevorgang.
+ Verwenden Sie den `session_replication_role`-Parameter in PostgreSQL.

Ein Auslöser kann sich zu jedem beliebigen Zeitpunkt in einem der folgenden Zustände befinden: `origin`, `replica`, `always` und `disabled`. Wenn der `session_replication_role`-Parameter auf `replica` gesetzt ist, sind nur Auslöser aktiv, die sich im Status `replica` befinden, und sie werden ausgelöst, wenn sie aufgerufen werden. Andernfalls bleiben die Auslöser inaktiv. 

PostgreSQL verfügt über einen ausfallsicheren Mechanismus, um zu verhindern, dass eine Tabelle gekürzt wird, auch dann, wenn `session_replication_role` festgelegt ist. Sie können diesen als Alternative zur Deaktivierung von Auslösern verwenden, um den vollständigen Ladevorgang abzuschließen. Legen Sie hierfür den Vorbereitungsmodus der Zieltabelle auf `DO_NOTHING` fest. Andernfalls schlagen DROP- und TRUNCATE-Operationen fehl, wenn Fremdschlüsseleinschränkungen bestehen.

In Amazon RDS können Sie diesen Parameter mithilfe einer Parametergruppe steuern/festlegen. Für eine PostgreSQL-Instance, die in Amazon EC2 ausgeführt wird, können Sie den Parameter direkt festlegen.



Weitere Informationen zur Arbeit mit einer PostgreSQL-Datenbank als Ziel für AWS DMS finden Sie in den folgenden Abschnitten: 

**Topics**
+ [Einschränkungen bei der Verwendung von PostgreSQL als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Limitations)
+ [Einschränkungen bei der Verwendung von Amazon Aurora PostgreSQL Limitless als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Aurora.Limitations)
+ [Sicherheitsanforderungen bei der Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Security)
+ [Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als Ziel für AWS DMS](#CHAP_Target.PostgreSQL.ConnectionAttrib)
+ [Zieldatentypen für PostgreSQL](#CHAP_Target.PostgreSQL.DataTypes)
+ [Verwendung von Babelfish für Aurora PostgreSQL als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish)

## Einschränkungen bei der Verwendung von PostgreSQL als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Limitations"></a>

Bei der Verwendung einer PostgreSQL-Datenbank als Ziel für AWS DMS gelten die folgenden Einschränkungen:
+ Bei heterogenen Migrationen wird der JSON-Datentyp intern in den nativen CLOB-Datentyp konvertiert.
+ Wenn bei einer Migration von Oracle nach PostgreSQL eine Spalte in Oracle ein NULL-Zeichen (Hexadezimalwert U\$10000) enthält, wird das NULL-Zeichen in ein Leerzeichen AWS DMS umgewandelt (Hexadezimalwert U\$10020). Der Grund hierfür ist eine PostgreSQL-Einschränkung.
+ AWS DMS unterstützt keine Replikation in eine Tabelle mit einem eindeutigen Index, der mit der Coalesce-Funktion erstellt wurde.
+ Wenn Ihre Tabellen Sequenzen verwenden, aktualisieren Sie den Wert von `NEXTVAL` für jede Sequenz in der Zieldatenbank, nachdem Sie die Replikation aus der Quelldatenbank beendet haben. AWS DMS kopiert Daten aus Ihrer Quelldatenbank, migriert aber während der laufenden Replikation keine Sequenzen zur Zieldatenbank.

## Einschränkungen bei der Verwendung von Amazon Aurora PostgreSQL Limitless als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Aurora.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie Amazon Aurora PostgreSQL Limitless als Ziel verwenden für: AWS DMS
+ AWS DMS Data Validation unterstützt Amazon Aurora PostgreSQL Limitless nicht.
+ AWS DMS migriert Quelltabellen als Standardtabellen, die nicht verteilt werden. Nach der Migration können Sie diese Standardtabellen in Limitless-Tabellen konvertieren, indem Sie dem offiziellen Konvertierungsleitfaden folgen.

## Sicherheitsanforderungen bei der Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Security"></a>

Aus Sicherheitsgründen muss das für die Datenmigration verwendete Benutzerkonto ein registrierter Benutzer in einer PostgreSQL-Zieldatenbank sein.

Ihr PostgreSQL-Zielendpunkt erfordert Mindestbenutzerberechtigungen, um eine AWS DMS Migration durchzuführen. Weitere Informationen finden Sie in den folgenden Beispielen.

```
    CREATE USER newuser WITH PASSWORD 'your-password';
    ALTER SCHEMA schema_name OWNER TO newuser;
```

Oder

```
    GRANT USAGE ON SCHEMA schema_name TO myuser;
    GRANT CONNECT ON DATABASE postgres to myuser;
    GRANT CREATE ON DATABASE postgres TO myuser;
    GRANT CREATE ON SCHEMA schema_name TO myuser;
    GRANT UPDATE, INSERT, SELECT, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA schema_name TO myuser;
    GRANT TRUNCATE ON schema_name."BasicFeed" TO myuser;
```

## Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als Ziel für AWS DMS
<a name="CHAP_Target.PostgreSQL.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen und Zusätzliche Verbindungsattribute (ECAs) verwenden, um Ihre PostgreSQL-Zieldatenbank zu konfigurieren. 

Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in der mit der [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)`--postgre-sql-settings '{"EndpointSetting": "value", ...}'`JSON-Syntax erstellen.

Sie geben dies ECAs mithilfe des `ExtraConnectionAttributes` Parameters für Ihren Endpunkt an.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

## Zieldatentypen für PostgreSQL
<a name="CHAP_Target.PostgreSQL.DataTypes"></a>

Der PostgreSQL-Datenbankendpunkt für AWS DMS unterstützt die meisten PostgreSQL-Datenbankdatentypen. Die folgende Tabelle zeigt die Zieldatentypen der PostgreSQL-Datenbank, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuordnung von AWS DMS Datentypen.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  AWS DMS Datentyp  |  PostgreSQL-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEAN  | 
|  BLOB  |  BYTEA  | 
|  BYTES  |  BYTEA  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIME  |  Wenn die Skalierung 0 bis 6 ist, verwenden Sie TIMESTAMP. Wenn die Skalierung 7 bis 9 ist, verwenden Sie VARCHAR (37).  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  DECIMAL (P,S)  | 
|  REAL4  |  FLOAT4  | 
|  REAL8  |  FLOAT8  | 
|  STRING  |  Ist die Länge 1 bis 21.845, verwenden Sie VARCHAR (Länge in Byte).  Ist die Länge 21.846 bis 2.147.483.647, verwenden Sie VARCHAR (65535).  | 
|  UINT1  |  SMALLINT  | 
|  UINT2  |  INTEGER  | 
|  UINT4  |  BIGINT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  Ist die Länge 1 bis 21.845, verwenden Sie VARCHAR (Länge in Byte).  Ist die Länge 21.846 bis 2.147.483.647, verwenden Sie VARCHAR (65535).  | 
|  NCLOB  |  TEXT  | 
|  CLOB  |  TEXT  | 

**Anmerkung**  
 AWS DMS Erstellt bei der Replikation aus einer PostgreSQL-Quelle die Zieltabelle mit den gleichen Datentypen für alle Spalten, mit Ausnahme von Spalten mit benutzerdefinierten Datentypen. In solchen Fällen wird der Datentyp als "character varying" im Ziel erstellt.

## Verwendung von Babelfish für Aurora PostgreSQL als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Babelfish"></a>

Sie können SQL-Server-Quelltabellen unter Verwendung von AWS Database Migration Service zu einem Babelfish-für-Amazon-Aurora-PostgreSQL-Ziel migrieren. Mithilfe von Babelfish versteht Aurora PostgreSQL T-SQL, den proprietären SQL-Dialekt von Microsoft SQL Server, und unterstützt dasselbe Kommunikationsprotokoll. Somit können für SQL Server geschriebene Anwendungen jetzt mit weniger Codeänderungen mit Aurora verwendet werden. Die Babelfish-Funktion ist in Amazon Aurora integriert. Hierfür entstehen keine zusätzlichen Kosten. Sie können Babelfish über die Amazon-RDS-Konsole in Ihrem Amazon-Aurora-Cluster aktivieren.

**Wenn Sie Ihren AWS DMS Zielendpunkt mithilfe der AWS DMS Konsolen-, API- oder CLI-Befehle erstellen, geben Sie als Ziel-Engine **Amazon Aurora PostgreSQL** an und nennen Sie die Datenbank babelfish\$1db.** Fügen Sie im Abschnitt **Endpunkteinstellungen** Einstellungen hinzu, um für `DatabaseMode` `Babelfish`und für `BabelfishDatabaseName` den Namen der Babelfish-T-SQL-Zieldatenbank festzulegen.

### Hinzufügen von Transformationsregeln zu Ihrer Migrationsaufgabe
<a name="CHAP_Target.PostgreSQL.Babelfish.transform"></a>

Wenn Sie eine Migrationsaufgabe für ein Babelfish-Ziel definieren, müssen Sie Transformationsregeln einbeziehen, die sicherstellen, dass DMS die vorab erstellten T-SQL-Babelfish-Tabellen in der Zieldatenbank verwendet.

Fügen Sie Ihrer Migrationsaufgabe zunächst eine Transformationsregel hinzu, die alle Tabellennamen in Kleinbuchstaben umschreibt. Babelfish speichert die Namen von Tabellen, die Sie mit T-SQL erstellen, in Kleinbuchstaben im PostgreSQL-Katalog `pg_class`. Wenn Sie jedoch über SQL-Server-Tabellen mit Namen in Groß- und Kleinschreibung verfügen, erstellt DMS die Tabellen unter Verwendung von systemeigenen PostgreSQL-Datentypen anstelle der T-SQL-kompatiblen Datentypen. Aus diesem Grund sollten Sie unbedingt eine Transformationsregel hinzufügen, die alle Tabellennamen in Kleinbuchstaben umschreibt. Beachten Sie, dass Spaltennamen nicht in Kleinbuchstaben umgewandelt werden sollten.

Wenn Sie bei der Definition Ihres Clusters den Migrationsmodus für mehrere Datenbanken verwendet haben, fügen Sie als Nächstes eine Transformationsregel hinzu, die das ursprüngliche SQL-Server-Schema umbenennt. Achten Sie darauf, das SQL-Server-Schema so umzubenennen, dass der Name den Namen der T-SQL-Datenbank beinhaltet. Wenn der ursprüngliche SQL Server-Schemaname beispielsweise dbo lautet und Ihr T-SQL-Datenbankname mydb lautet, benennen Sie das Schema mithilfe einer Transformationsregel in mydb\$1dbo um.

**Anmerkung**  
Wenn Sie Babelfish für Aurora PostgreSQL 16 oder höher verwenden, ist der Standard-Migrationsmodus „Mutidatabase“. Achten Sie bei der Ausführung von DMS-Migrationsaufgaben darauf, den Parameter für den Migrationsmodus zu überprüfen und die Transformationsregeln bei Bedarf zu aktualisieren.

Wenn Sie den Einzeldatenbankmodus verwenden, benötigen Sie keine Transformationsregel, um Schemanamen umzubenennen. Schemanamen haben eine one-to-one Zuordnung zur T-SQL-Zieldatenbank in Babelfish.

Die folgende Beispieltransformationsregel schreibt alle Tabellennamen in Kleinbuchstaben um und benennt den ursprünglichen SQL-Server-Schemanamen von `dbo` in `mydb_dbo` um.

```
{
   "rules": [
   {
      "rule-type": "transformation",
      "rule-id": "566251737",
      "rule-name": "566251737",
      "rule-target": "schema",
      "object-locator": {
         "schema-name": "dbo"
      },
      "rule-action": "rename",
      "value": "mydb_dbo",
      "old-value": null
   },
   {
      "rule-type": "transformation",
      "rule-id": "566139410",
      "rule-name": "566139410",
      "rule-target": "table",
      "object-locator": {
         "schema-name": "%",
         "table-name": "%"
      },
      "rule-action": "convert-lowercase",
      "value": null,
      "old-value": null
   },
   {
      "rule-type": "selection",
      "rule-id": "566111704",
      "rule-name": "566111704",
      "object-locator": {
         "schema-name": "dbo",
         "table-name": "%"
      },
      "rule-action": "include",
      "filters": []
   }
]
}
```

### Einschränkungen bei der Verwendung eines PostgreSQL-Zielendpunkts mit Babelfish-Tabellen
<a name="CHAP_Target.PostgreSQL.Babelfish.limitations"></a>

Bei der Verwendung eines PostgreSQL-Zielendpunkts mit Babelfish-Tabellen gelten folgende Einschränkungen:
+ Verwenden Sie für den **Zieltabellen-Vorbereitungsmodus** nur die Modi **Nichts unternehmen** oder **Kürzen**. Verwenden Sie nicht den Modus **Tabellen am Ziel ablegen**. In diesem Modus erstellt DMS die Tabellen als PostgreSQL-Tabellen, die T-SQL möglicherweise nicht erkennt.
+ AWS DMS unterstützt den Datentyp sql\$1variant nicht.
+ Babelfish unter dem Postgres-Endpunkt unterstützt keine Datentypen `HEIRARCHYID` `GEOMETRY` (vor 3.5.4) und `GEOGRAPHY` (vor 3.5.4). Um diese Datentypen zu migrieren, können Sie Transformationsregeln hinzufügen, um den Datentyp in wstring (250) zu konvertieren.
+ Babelfish unterstützt nur die Migration der Datentypen `BINARY`, `VARBINARY` und `IMAGE` unter Verwendung des Datentyps `BYTEA`. Für frühere Versionen von Aurora PostgreSQL können Sie DMS verwenden, um diese Tabellen zu einem [Babelfish-Zielendpunkt](CHAP_Target.Babelfish.md) zu migrieren. Sie müssen keine Länge für den Datentyp `BYTEA` angeben, wie im folgenden Beispiel zu sehen.

  ```
  [Picture] [VARBINARY](max) NULL
  ```

  Ändern Sie den vorherigen T-SQL-Datentyp in den von T-SQL unterstützten Datentyp `BYTEA`.

  ```
  [Picture] BYTEA NULL
  ```
+ Wenn Sie in früheren Versionen von Aurora PostgreSQL Babelfish eine Migrationsaufgabe für die laufende Replikation von SQL Server zu Babelfish unter Verwendung des PostgreSQL-Zielendpunkts erstellen, müssen Sie den Datentyp `SERIAL` allen Tabellen zuweisen, die Spalten `IDENTITY` verwenden. Ab Aurora PostgreSQL (Version 15.3/14.8 und höher) und Babelfish (Version 3.2.0 und höher) wird die Identitätsspalte unterstützt und es ist nicht mehr erforderlich, den Datentyp SERIAL zuzuweisen. Weitere Informationen finden Sie unter [Verwendung von SERIAL](https://docs.aws.amazon.com/dms/latest/sql-server-to-aurora-postgresql-migration-playbook/chap-sql-server-aurora-pg.tsql.sequences..html) im Abschnitt zu Sequenzen und Identität des *Playbooks zur Migration von SQL Server zu Aurora PostgreSQL*. Wenn Sie dann die Tabelle in Babelfish erstellen, ändern Sie die Spaltendefinition der folgenden Angabe.

  ```
      [IDCol] [INT] IDENTITY(1,1) NOT NULL PRIMARY KEY
  ```

  Ändern Sie die vorherige Angabe in Folgendes.

  ```
      [IDCol] SERIAL PRIMARY KEY
  ```

  Das Babelfish-kompatible Aurora PostgreSQL erstellt eine Sequenz mit der Standardkonfiguration und fügt der Spalte eine Einschränkung `NOT NULL` hinzu. Die neu erstellte Sequenz verhält sich wie eine reguläre Sequenz (um 1 erhöht) und enthält keine zusammengesetzte Option `SERIAL`.
+ Nachdem Sie Daten mit Tabellen migriert haben, die Spalten `IDENTITY` oder den Datentyp `SERIAL` verwenden, setzen Sie das PostgreSQL-basierte Sequenzobjekt auf der Grundlage des Maximalwerts für die Spalte zurück. Wenn die Tabellen vollständig geladen sind, verwenden Sie die folgende T-SQL-Abfrage, um Anweisungen zu generieren, um das zugehörige Sequenzobjekt zu setzen.

  ```
  DECLARE @schema_prefix NVARCHAR(200) = ''
  
  IF current_setting('babelfishpg_tsql.migration_mode') = 'multi-db'
          SET @schema_prefix = db_name() + '_'
  
  SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + schema_name(tables.schema_id) + '.' + tables.name + ''', ''' + columns.name + ''')
                 ,(select max(' + columns.name + ') from ' + schema_name(tables.schema_id) + '.' + tables.name + '));'
  FROM sys.tables tables
  JOIN sys.columns columns ON tables.object_id = columns.object_id
  WHERE columns.is_identity = 1
  
  UNION ALL
  
  SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + table_schema + '.' + table_name + ''', 
  ''' + column_name + '''),(select max(' + column_name + ') from ' + table_schema + '.' + table_name + '));'
  FROM information_schema.columns
  WHERE column_default LIKE 'nextval(%';
  ```

  Die Abfrage generiert eine Reihe von SELECT-Anweisungen, die Sie ausführen, um die maximalen IDENTITY- und SERIAL-Werte zu aktualisieren.
+ Bei Babelfish-Versionen vor 3.2 kann **Vollständiger LOB-Modus** zu einem Tabellenfehler führen. Erstellen Sie in diesem Fall eine separate Aufgabe für die Tabellen, die nicht geladen werden konnten. Verwenden Sie dann **Limitierter LOB-Modus**, um den entsprechenden Wert für **Maximale LOB-Größe (KB)** anzugeben. Eine weitere Option besteht darin, für das SQL-Server-Endpunkt-Verbindungsattribut die Einstellung `ForceFullLob=True` festzulegen.
+ Bei Babelfish-Versionen vor 3.2 wird bei der Datenvalidierung mit Babelfish-Tabellen, die keine auf Ganzzahlen basierenden Primärschlüssel verwenden, eine Meldung generiert, dass kein geeigneter eindeutiger Schlüssel gefunden werden kann. Ab Aurora PostgreSQL (Version 15.3/14.8 und höher) und Babelfish (Version 3.2.0 und höher) wird die Datenvalidierung für nicht ganzzahlige Primärschlüssel unterstützt. 
+ Aufgrund von Genauigkeitsunterschieden bei der Anzahl der Dezimalstellen für Sekunden meldet DMS Datenvalidierungsfehler für Babelfish-Tabellen, die Datentypen `DATETIME` verwenden. Um diese Fehler zu unterdrücken, können Sie den folgenden Validierungsregeltyp für Datentypen `DATETIME` hinzufügen.

  ```
  {
           "rule-type": "validation",
           "rule-id": "3",
           "rule-name": "3",
           "rule-target": "column",
           "object-locator": {
               "schema-name": "dbo",
               "table-name": "%",
               "column-name": "%",
               "data-type": "datetime"
           },
           "rule-action": "override-validation-function",
           "source-function": "case when ${column-name} is NULL then NULL else 0 end",
           "target-function": "case when ${column-name} is NULL then NULL else 0 end"
       }
  ```

# Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.MySQL"></a>

Sie können Daten mit AWS DMS jeder der unterstützten Quell-Daten-Engines in jede MySQL-kompatible Datenbank migrieren. AWS DMS Wenn Sie zu einer lokalen MySQL-kompatiblen Datenbank migrieren, AWS DMS muss sich Ihre Quell-Engine innerhalb des Ökosystems befinden. AWS Die Engine kann sich in einem AWS verwalteten Service wie Amazon RDS, Amazon Aurora oder Amazon S3 befinden. Alternativ kann sich die Engine in einer selbstverwalteten Datenbank auf Amazon EC2 befinden. 

Sie können mit SSL Verbindungen zwischen Ihrem MySQL-kompatiblen Endpunkt und der Replikations-Instance verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem MySQL-kompatiblen Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md). 

Hinweise zu Versionen von MySQL, die als Ziel AWS DMS unterstützen, finden Sie unter[Ziele für AWS DMS](CHAP_Introduction.Targets.md).

Sie können die folgenden MySQL-kompatiblen Datenbanken als Ziele verwenden für: AWS DMS
+ MySQL Community Edition
+ MySQL Standard Edition
+ MySQL Enterprise Edition
+ MySQL Cluster Carrier Grade Edition
+ MariaDB Community Edition
+ MariaDB Enterprise Edition
+ MariaDB Column Store
+ Amazon Aurora MySQL

**Anmerkung**  
Unabhängig von der Quell-Speicher-Engine (MyISAM, MEMORY usw.) erstellt AWS DMS eine MySQL-kompatible Zieltabelle standardmäßig als InnoDB-Tabelle.   
Wenn Sie eine Tabelle benötigen, die eine andere Speicher-Engine als InnoDB verwendet, können Sie die Tabelle in der MySQL-kompatiblen Zieldatenbank manuell erstellen und die Tabelle mithilfe des Modus **Nichts unternehmen** migrieren. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für vollständiges Laden](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

Weitere Details zum Arbeiten mit einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS finden Sie in den folgenden Abschnitten. 

**Topics**
+ [Verwendung einer beliebigen MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.MySQL.Prerequisites)
+ [Einschränkungen bei der Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.MySQL.Limitations)
+ [Endpunkteinstellungen bei Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS](#CHAP_Target.MySQL.ConnectionAttrib)
+ [Zieldatentypen für MySQL](#CHAP_Target.MySQL.DataTypes)

## Verwendung einer beliebigen MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.MySQL.Prerequisites"></a>

Bevor Sie mit einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS arbeiten, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:
+ Geben Sie ein Benutzerkonto an AWS DMS , das über read/write Rechte für die MySQL-kompatible Datenbank verfügt. Führen Sie die folgenden Befehle aus, um die erforderlichen Berechtigungen zu erstellen.

  ```
  CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>';
  GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES  ON <schema>.* TO 
  '<user acct>'@'%';
  GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  ```
+ Während der Volllast-Migrationsphase müssen Sie Fremdschlüssel in Ihren Zieltabellen deaktivieren. Um Fremdschlüsselprüfungen in einer MySQL-kompatiblen Datenbank während eines vollen Ladevorgangs zu deaktivieren, können Sie den folgenden Befehl zum Abschnitt **Zusätzliche Verbindungsattribute** der AWS DMS Konsole für Ihren Zielendpunkt hinzufügen.

  ```
  Initstmt=SET FOREIGN_KEY_CHECKS=0;
  ```
+ Legen Sie den Datenbankparameter `local_infile = 1` fest, um AWS DMS das Laden von Daten in die Zieldatenbank zu ermöglichen.
+ Erteilen Sie die folgenden Berechtigungen, wenn Sie MySQL-spezifische Bewertungen vor der Migration verwenden.

  ```
  grant select on mysql.user to <dms_user>;
  grant select on mysql.db to <dms_user>;
  grant select on mysql.tables_priv to <dms_user>;
  grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
  ```

## Einschränkungen bei der Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.MySQL.Limitations"></a>

Wenn Sie eine MySQL-Datenbank als Ziel verwenden, unterstützt Folgendes AWS DMS nicht:
+ Die DDL-Anweisungen (Data Definition Language) TRUNCATE PARTITION, DROP TABLE und RENAME TABLE.
+ Verwenden einer `ALTER TABLE table_name ADD COLUMN column_name`-Anweisung zum Hinzufügen von Spalten an den Anfang oder in die Mitte einer Tabelle
+ Beim Laden von Daten in ein MySQL-kompatibles Ziel in einer Vollladeaufgabe werden AWS DMS keine Fehler gemeldet, die durch Einschränkungen in den Task-Logs verursacht werden, was zu doppelten Schlüsselfehlern oder Nichtübereinstimmungen mit der Anzahl der Datensätze führen kann. Dies ist auf die Art und Weise zurückzuführen, wie MySQL lokale Daten mit dem Befehl `LOAD DATA` behandelt. Während der Volllastphase müssen Sie folgende Schritte ausführen: 
  + Einschränkungen deaktivieren
  + Stellen Sie mithilfe der AWS DMS Validierung sicher, dass die Daten konsistent sind.
+ Wenn Sie den Wert einer Spalte auf den vorhandenen Wert aktualisieren, geben MySQL-kompatible Datenbanken die Warnung `0 rows affected` zurück. Obwohl dieses Verhalten technisch gesehen kein Fehler ist, unterscheidet es sich von der Art und Weise, wie andere Datenbank-Engines mit solchen Fällen umgehen. Oracle führt beispielsweise eine Aktualisierung einer Zeile durch. AWS DMS Generiert für MySQL-kompatible Datenbanken einen Eintrag in der Steuertabelle awsdms\$1apply\$1exceptions und protokolliert die folgende Warnung.

  ```
  Some changes from the source database had no impact when applied to
  the target database. See awsdms_apply_exceptions table for details.
  ```
+ Aurora Serverless ist als Ziel für Amazon Aurora Version 2, kompatibel mit MySQL Version 5.7, verfügbar. (Wählen Sie Aurora-MySQL-Version 2.07.1 aus, um Aurora Serverless mit MySQL-5.7-Kompatibilität verwenden zu können.) Weitere Informationen zu Aurora Serverless finden Sie unter [Using Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) im *Amazon Aurora Aurora-Benutzerhandbuch*.
+ AWS DMS unterstützt nicht die Verwendung eines Reader-Endpunkts für Aurora oder Amazon RDS, es sei denn, die Instances befinden sich im Schreibmodus, d. h. die `innodb_read_only` Parameter `read_only` und sind auf `0` oder `OFF` gesetzt. Weitere Informationen zur Verwendung von Amazon RDS und Aurora als Ziele finden Sie in folgenden Themen:
  +  [ Feststellen, mit welcher DB-Instance Sie verbunden sind](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.BestPractices.html#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection) 
  +  [ Aktualisieren von Lesereplikaten mit MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.ReadReplicas.html#USER_MySQL.Replication.ReadReplicas.Updates) 
+ Bei der Replikation des TIME-Datentyps wird der Bruchteil des Zeitwerts nicht repliziert.
+ Bei der Replikation des TIME-Datentyps mit dem zusätzlichen Verbindungsattribut ist der Zeitwert auf den Bereich `loadUsingCSV=false` begrenzt. `[00:00:00, 23:59:59]`

## Endpunkteinstellungen bei Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS
<a name="CHAP_Target.MySQL.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer MySQL-kompatiblen 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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--my-sql-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.MySQL.html)

Sie können auch zusätzliche Verbindungsattribute verwenden, um Ihre MySQL-kompatible Zieldatenbank zu konfigurieren.

Die folgende Tabelle zeigt die zusätzlichen Verbindungsattribute, die Sie verwenden können, wenn MySQL das Ziel ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.MySQL.html)

Alternativ können Sie den Parameter `AfterConnectScript` des Befehls `--my-sql-settings` verwenden, um Fremdschlüsselprüfungen zu deaktivieren und die Zeitzone für Ihre Datenbank anzugeben.

## Zieldatentypen für MySQL
<a name="CHAP_Target.MySQL.DataTypes"></a>

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

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS Datentypen  |  MySQL-Datentypen  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEAN  | 
|  BYTES  |  Ist die Länge 1 bis 65.535, verwenden Sie VARBINARY (Länge).  Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGLOB.  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  Ist die Skalierung => 0 und =< 6, dann: DATETIME (Skalierung) Ist die Skalierung => 7 und =< 9, dann: VARCHAR (37)  | 
|  INT1  |  TINYINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  DECIMAL (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  |  DOUBLE PRECISION  | 
|  STRING  |  Ist die Länge 1 bis 21.845, verwenden Sie VARCHAR (Länge). Ist die Länge 21.846 bis 2.147.483.647, verwenden Sie LONGTEXT.  | 
|  UINT1  |  UNSIGNED TINYINT  | 
|  UINT2  |  UNSIGNED SMALLINT  | 
|  UINT4  |  UNSIGNED INTEGER  | 
|  UINT8  |  UNSIGNED BIGINT  | 
|  WSTRING  |  Ist die Länge 1 bis 32.767, verwenden Sie VARCHAR (Länge).  Ist die Länge 32.768 bis 2.147.483.647, verwenden Sie LONGTEXT.  | 
|  BLOB  |  Ist die Länge 1 bis 65.535, verwenden Sie BLOB. Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGBLOB. Ist die Länge 0, verwenden Sie LONGBLOB (vollständige LOB-Unterstützung).  | 
|  NCLOB  |  Ist die Länge 1 bis 65.535, verwenden Sie TEXT. Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGTEXT mit ucs2 für CHARACTER SET. Ist die Länge 0, verwenden Sie LONGTEXT (vollständige LOB-Unterstützung) mit ucs2 für CHARACTER SET.  | 
|  CLOB  |  Ist die Länge 1 bis 65.535, verwenden Sie TEXT. Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGTEXT. Ist die Länge 0, verwenden Sie LONGTEXT (vollständige LOB-Unterstützung).  | 

# Verwenden einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift"></a>

Sie können Daten zu Amazon Redshift Redshift-Datenbanken migrieren mit AWS Database Migration Service. Amazon Redshift ist ein vollständig verwalteter Data-Warehouse-Service in Petabytegröße in der Cloud. Mit einer Amazon-Redshift-Datenbank als Ziel können Sie Daten aus allen anderen unterstützten Quelldatenbanken migrieren.

Sie können Amazon Redshift Serverless als Ziel für verwenden. AWS DMS Weitere Informationen finden Sie unter [Verwendung AWS DMS mit Amazon Redshift Serverless als ZielAmazon Redshift Serverless](#CHAP_Target.Redshift.RSServerless).

 Der Amazon Redshift Redshift-Cluster muss sich im selben AWS Konto und in derselben AWS Region wie die Replikationsinstanz befinden. 

Verschiebt während einer Datenbankmigration zu Amazon Redshift AWS DMS zunächst Daten in einen Amazon S3 S3-Bucket. Wenn sich die Dateien in einem Amazon S3 S3-Bucket befinden, AWS DMS werden sie in die richtigen Tabellen im Amazon Redshift Data Warehouse übertragen. AWS DMS erstellt den S3-Bucket in derselben AWS Region wie die Amazon Redshift Redshift-Datenbank. Die AWS DMS Replikationsinstanz muss sich in derselben AWS Region befinden. 

Wenn Sie die AWS CLI oder DMS-API verwenden, um Daten zu Amazon Redshift zu migrieren, richten Sie eine AWS Identity and Access Management (IAM-) Rolle ein, um den S3-Zugriff zu ermöglichen. Weitere Informationen zum Erstellen dieser IAM-Rolle finden Sie unter [Die IAM-Rollen zur Verwendung mit erstellen AWS DMS](security-iam.md#CHAP_Security.APIRole).

Der Amazon-Redshift-Endpunkt bietet eine vollständige Automatisierung für die folgenden Aufgaben:
+ Schemagenerierung und Datentypzuweisung
+ Vollständiges Laden von Quelldatenbanktabellen
+ Inkrementelles Laden der an Quelltabellen vorgenommenen Änderungen
+ Anwendung von Schemaänderungen in DDL (Data Definition Language), die an Quelltabellen vorgenommen wurden
+ Synchronisierung zwischen vollständigen Ladevorgängen und CDC-Prozessen (Change Data Capture, Erfassung von Änderungsdaten)

AWS Database Migration Service unterstützt sowohl Volllast- als auch Änderungsverarbeitungsvorgänge. AWS DMS liest die Daten aus der Quelldatenbank und erstellt eine Reihe von Dateien mit kommagetrennten Werten (.csv). AWS DMS Erstellt bei Vollladevorgängen Dateien für jede Tabelle. AWS DMS kopiert dann die Tabellendateien für jede Tabelle in einen separaten Ordner in Amazon S3. Wenn die Dateien auf Amazon S3 hochgeladen werden, AWS DMS sendet ein Kopierbefehl und die Daten in den Dateien werden nach Amazon Redshift kopiert. AWS DMS Kopiert bei der Bearbeitung von Änderungen die Nettoänderungen in die CSV-Dateien. AWS DMS lädt dann die Net-Change-Dateien auf Amazon S3 hoch und kopiert die Daten nach Amazon Redshift.

Weitere Informationen zur Arbeit mit Amazon Redshift als Ziel für AWS DMS finden Sie in den folgenden Abschnitten: 

**Topics**
+ [Voraussetzungen für die Verwendung einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.Prerequisites)
+ [Erforderliche Berechtigungen für die Verwendung von Redshift als Ziel](#CHAP_Target.Redshift.Privileges)
+ [Einschränkungen bei der Verwendung von Amazon Redshift als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.Limitations)
+ [Konfiguration einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.Configuration)
+ [Verwendung von erweitertem VPC-Routing mit Amazon Redshift als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC)
+ [Erstellen und Verwenden von AWS KMS Schlüsseln zur Verschlüsselung von Amazon Redshift Redshift-Zieldaten](#CHAP_Target.Redshift.KMSKeys)
+ [Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib)
+ [Verwenden eines Datenverschlüsselungsschlüssels und eines Amazon-S3-Buckets als Zwischenspeicher](#CHAP_Target.Redshift.EndpointSettings)
+ [Multithread-Aufgabeneinstellungen für Amazon Redshift](#CHAP_Target.Redshift.ParallelApply)
+ [Zieldatentypen für Amazon Redshift](#CHAP_Target.Redshift.DataTypes)
+ [Verwendung AWS DMS mit Amazon Redshift Serverless als Ziel](#CHAP_Target.Redshift.RSServerless)

## Voraussetzungen für die Verwendung einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.Prerequisites"></a>

In der folgenden Liste werden die erforderlichen Voraussetzungen für die Arbeit mit Amazon Redshift als Ziel für die Datenmigration beschrieben:
+ Verwenden Sie die AWS Management Console, um einen Amazon Redshift Redshift-Cluster zu starten. Notieren Sie sich die grundlegenden Informationen zu Ihrem AWS Konto und Ihrem Amazon Redshift Redshift-Cluster, wie z. B. Ihr Passwort, Ihren Benutzernamen und Ihren Datenbanknamen. Sie benötigen diese Werte beim Erstellen des Amazon-Redshift-Zielendpunkts. 
+ Der Amazon Redshift Redshift-Cluster muss sich im selben AWS Konto und in derselben AWS Region wie die Replikationsinstanz befinden.
+ Die AWS DMS Replikationsinstanz benötigt Netzwerkkonnektivität zum Amazon Redshift Redshift-Endpunkt (Hostname und Port), den Ihr Cluster verwendet.
+ AWS DMS verwendet einen Amazon S3 S3-Bucket, um Daten in die Amazon Redshift Redshift-Datenbank zu übertragen. Damit AWS DMS den Bucket erstellen kann, verwendet die Konsole eine IAM-Rolle, `dms-access-for-endpoint`. Wenn Sie die AWS CLI oder DMS-API verwenden, um eine Datenbankmigration mit Amazon Redshift als Zieldatenbank zu erstellen, müssen Sie diese IAM-Rolle erstellen. Weitere Informationen zum Erstellen dieser Rolle finden Sie unter [Die IAM-Rollen zur Verwendung mit erstellen AWS DMS](security-iam.md#CHAP_Security.APIRole). 
+ AWS DMS konvertiert BLOBs CLOBs, und NCLOBs in ein VARCHAR auf der Amazon Redshift Redshift-Zielinstanz. Amazon Redshift unterstützt keine VARCHAR-Datentypen, die größer als 64 KB sind, sodass Sie herkömmliche Datentypen nicht LOBs auf Amazon Redshift speichern können. 
+ Setzen Sie die Einstellung für die Zielmetadaten-Aufgabe [BatchApplyEnabled](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)auf `true` for AWS DMS , um Änderungen an Amazon Redshift Redshift-Zieltabellen während der CDC zu verarbeiten. Ein Primärschlüssel für die Quell- und Zieltabelle ist erforderlich. Ohne Primärschlüssel werden Änderungen Anweisung für Anweisung angewendet. Dies kann sich negativ auf die Aufgabenleistung während der CDC auswirken, indem Ziellatenz verursacht wird und sich auf die Cluster-Commit-Warteschlange auswirkt. 
+ Wenn Row Level Security für die Tabellen in Redshift aktiviert ist, müssen Sie allen Ihren DMS-Benutzern die entsprechenden Berechtigungen gewähren.

## Erforderliche Berechtigungen für die Verwendung von Redshift als Ziel
<a name="CHAP_Target.Redshift.Privileges"></a>

Verwenden Sie den Befehl GRANT, um Zugriffsberechtigungen für einen Benutzer oder eine Benutzergruppe zu definieren. Zu den Rechten gehören Zugriffsoptionen wie das Lesen von Daten in Tabellen und Ansichten, das Schreiben von Daten und das Erstellen von Tabellen. Weitere Informationen über die Verwendung von GRANT mit Amazon Redshift finden Sie unter [GRANT](https://docs.aws.amazon.com//redshift/latest/dg/r_GRANT.html) im *Datenbankentwicklerhandbuch zu Amazon Redshift*. 

Im Folgenden ist die Syntax zum Erteilen von bestimmten Berechtigungen für eine Tabelle, eine Datenbank, ein Schema, eine Funktion oder eine Prozedur oder von Berechtigungen auf Sprachebene für Amazon-Redshift-Tabellen und -Ansichten dargestellt.

```
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE db_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT USAGE 
    ON LANGUAGE language_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]
```

Im Folgenden finden Sie die Syntax für Berechtigungen auf Spaltenebene für Amazon-Redshift-Tabellen und -Ansichten. 

```
GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) }
     ON { [ TABLE ] table_name [, ...] }
     TO { username | GROUP group_name | PUBLIC } [, ...]
```

Im Folgenden finden Sie die Syntax für das ASSUMEROLE-Recht, das Benutzern und Gruppen mit einer spezifizierten Rolle gewährt wird.

```
GRANT ASSUMEROLE
    ON { 'iam_role' [, ...] | ALL }
    TO { username | GROUP group_name | PUBLIC } [, ...]
    FOR { ALL | COPY | UNLOAD } [, ...]
```

## Einschränkungen bei der Verwendung von Amazon Redshift als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine Amazon-Redshift-Datenbank als Ziel verwenden:
+ Aktivieren Sie nicht die Versionsverwaltung für den S3-Bucket, den Sie als Zwischenspeicher für Ihr Amazon-Redshift-Ziel verwenden. Wenn Sie eine S3-Versionsverwaltung 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Informationen zum Löschen einer Version eines S3-Objekts finden Sie unter [Löschen von Objekten aus einem versionsverwaltungsfähigen Bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ Die folgende DDL wird nicht unterstützt:

  ```
  ALTER TABLE table name MODIFY COLUMN column name data type;
  ```
+  AWS DMS kann keine Änderungen an einem Schema migrieren oder replizieren, dessen Name mit einem Unterstrich (\$1) beginnt. Verwenden Sie für Schemata, deren Namen mit einem Unterstrich beginnen, Zuweisungstransformationen, um das Schema im Ziel umzubenennen. 
+  Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. LOBs aus herkömmlichen Datenbanken können nicht in Amazon Redshift gespeichert werden.
+  Das Anwenden einer DELETE-Anweisung auf eine Tabelle mit einem mehrspaltigen Primärschlüssel wird nicht unterstützt, wenn einer der Primärschlüsselspaltennamen ein reserviertes Wort verwendet. Eine Liste der reservierten Wörter in Amazon Redshift finden Sie [hier](https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html).
+ Es kann zu Leistungsproblemen kommen, wenn Ihr Quellsystem UPDATE-Operationen für den Primärschlüssel einer Quelltabelle ausführt. Diese Leistungsprobleme treten auf, wenn Änderungen auf das Ziel angewendet werden. Das liegt daran, dass UPDATE- (und DELETE-)Operationen auf den Primärschlüsselwert angewiesen sind, um die Zielzeile zu identifizieren. Wenn Sie den Primärschlüssel einer Quelltabelle aktualisieren, enthält Ihr Aufgabenprotokoll Meldungen wie die folgende:

  ```
  Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  ```
+ DMS unterstützt keine benutzerdefinierten DNS-Namen, wenn Sie einen Endpunkt für einen Redshift-Cluster konfigurieren, und Sie müssen den von Amazon bereitgestellten DNS-Namen verwenden. Da sich der Amazon Redshift Redshift-Cluster in demselben AWS Konto und derselben Region wie die Replikationsinstanz befinden muss, schlägt die Validierung fehl, wenn Sie einen benutzerdefinierten DNS-Endpunkt verwenden.
+ In Amazon Redshift gilt ein standardmäßiges Timeout für inaktive Sitzungen von 4 Stunden. Wenn im Rahmen der DMS-Replikationsaufgabe keine Aktivität stattfindet, unterbricht Redshift die Sitzung nach 4 Stunden. Fehler können darauf zurückzuführen sein, dass DMS keine Verbindung herstellen kann und möglicherweise neu gestartet werden muss. Um das Problem zu umgehen, legen Sie für den DMS-Replikationsbenutzer einen Grenzwert für SESSION TIMEOUT von mehr als 4 Stunden fest. Sie können sich auch die Beschreibung von [ALTER USER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html) im *Datenbankentwicklerhandbuch für Amazon Redshift* ansehen.
+ Wenn Quelltabellendaten ohne einen primären oder eindeutigen Schlüssel AWS DMS repliziert werden, kann die CDC-Latenz hoch sein, was zu einem inakzeptablen Leistungsniveau führen kann.
+ Das Kürzen von Partitionen wird während der CDC-Replikation von der Oracle-Quelle zum Redshift-Ziel nicht unterstützt.
+ Doppelte Datensätze können in Zieltabellen erscheinen, da Amazon Redshift Primärschlüssel nicht erzwingt und AWS DMS CDC möglicherweise erneut abspielt, wenn eine Aufgabe wieder aufgenommen wird. Verwenden Sie die Einstellung, um Duplikate zu vermeiden. `ApplyErrorInsertPolicy=INSERT_RECORD` Weitere Informationen finden Sie unter [Aufgabeneinstellungen zur Fehlerbehandlung](CHAP_Tasks.CustomizingTasks.TaskSettings.ErrorHandling.md). Alternativ können Sie Verfahren zur Duplikaterkennung auf Anwendungsebene und zur Bereinigung nach der Migration implementieren.

## Konfiguration einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.Configuration"></a>

AWS Database Migration Service muss für die Verwendung mit der Amazon Redshift Redshift-Instance konfiguriert sein. Die folgende Tabelle beschreibt die verfügbaren Konfigurationseigenschaften für den Amazon-Redshift-Endpunkt.


| Property (Eigenschaft) | Description (Beschreibung) | 
| --- | --- | 
| server | Der Name des verwendeten Amazon-Redshift-Clusters. | 
| port | Die Portnummer für Amazon Redshift. Der Standardwert lautet 5439. | 
| username | Ein Amazon-Redshift-Benutzername eines registrierten Benutzers. | 
| password | Das Passwort für den Benutzer, der in der Eigenschaft "Benutzername" angegeben ist. | 
| Datenbank | Der Name des Amazon Redshift Data Warehouse (Service), mit dem Sie arbeiten. | 

Wenn Sie zusätzliche Attribute für Verbindungszeichenfolgen zu Ihrem Amazon-Redshift-Endpunkt hinzufügen möchten, können Sie die Attribute `maxFileSize` und `fileTransferUploadStreams` festlegen. Weitere Informationen zu diesen Attributen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

## Verwendung von erweitertem VPC-Routing mit Amazon Redshift als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.EnhancedVPC"></a>

Wenn Sie Enhanced VPC Routing mit Ihrem Amazon-Redshift-Ziel verwenden, wird der gesamte COPY-Datenverkehr zwischen Ihrem Amazon-Redshift-Cluster und Ihren Daten-Repositorys über Ihre VPC geleitet. Da Enhanced VPC Routing sich darauf auswirkt, wie Amazon Redshift auf andere Ressourcen zugreift, schlagen COPY-Befehle möglicherweise fehl, wenn die VPC nicht ordnungsgemäß konfiguriert wurde.

AWS DMS kann von diesem Verhalten beeinflusst werden, da der Befehl COPY verwendet wird, um Daten in S3 in einen Amazon Redshift-Cluster zu verschieben.

Die folgenden Schritte sind AWS DMS erforderlich, um Daten in ein Amazon Redshift Redshift-Ziel zu laden:

1. AWS DMS kopiert Daten aus der Quelle in CSV-Dateien auf dem Replikationsserver.

1. AWS DMS verwendet das AWS SDK, um die .csv-Dateien in einen S3-Bucket auf Ihrem Konto zu kopieren.

1. AWS DMS verwendet dann den COPY-Befehl in Amazon Redshift, um Daten aus den CSV-Dateien in S3 in eine entsprechende Tabelle in Amazon Redshift zu kopieren.

Wenn Enhanced VPC Routing nicht aktiviert ist, leitet Amazon Redshift den Datenverkehr über das Internet weiter, einschließlich des Datenverkehrs zu anderen Diensten innerhalb des AWS Netzwerks. Bei deaktivierter Funktion müssen Sie den Netzwerkpfad nicht konfigurieren. Wenn die Funktion aktiviert ist, müssen Sie speziell einen Netzwerkpfad zwischen Ihrem VPC-Cluster und Ihren Datenressourcen erstellen. Weitere Informationen zu der erforderlichen Konfiguration finden Sie unter [Enhanced VPC Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) in der Amazon-Redshift-Dokumentation. 

## Erstellen und Verwenden von AWS KMS Schlüsseln zur Verschlüsselung von Amazon Redshift Redshift-Zieldaten
<a name="CHAP_Target.Redshift.KMSKeys"></a>

Sie können Ihre an Amazon S3 übertragenen Zieldaten verschlüsseln, bevor Sie diese nach Amazon Redshift kopieren. Dazu können Sie benutzerdefinierte AWS KMS Schlüssel erstellen und verwenden. Sie können den Schlüssel verwenden, den Sie zur Verschlüsselung Ihrer Zieldaten erstellt haben. Verwenden Sie dazu beim Erstellen des Amazon-Redshift-Zielendpunkts einen der folgenden Mechanismen:
+ Verwenden Sie die folgende Option beim Ausführen des `create-endpoint`-Befehls mithilfe der AWS CLI.

  ```
  --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-kms-key-ARN"}'
  ```

  Hier handelt es sich bei `your-kms-key-ARN` um den Amazon-Ressourcennamen (ARN) für Ihren KMS-Schlüssel. Weitere Informationen finden Sie unter [Verwenden eines Datenverschlüsselungsschlüssels und eines Amazon-S3-Buckets als Zwischenspeicher](#CHAP_Target.Redshift.EndpointSettings).
+ Richten Sie für das zusätzliche Verbindungsattribut `encryptionMode` den Wert `SSE_KMS` und für das zusätzliche Verbindungsattribut `serverSideEncryptionKmsKeyId` den ARN für Ihren KMS-Schlüssel ein. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

Um Amazon Redshift Redshift-Zieldaten mit einem KMS-Schlüssel zu verschlüsseln, benötigen Sie eine AWS Identity and Access Management (IAM-) Rolle, die über Berechtigungen für den Zugriff auf Amazon Redshift Redshift-Daten verfügt. 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 IAM-Rolle mit einer verwalteten Richtlinie. AWS
+ Einen KMS-Schlüssel mit einer Schlüsselrichtlinie, die sich auf diese Rolle bezieht.

Die entsprechende Vorgehensweise wird nachfolgend beschrieben.

**Um eine IAM-Rolle mit der erforderlichen verwalteten Richtlinie zu erstellen AWS**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich **Rollen**. Die Seite **Roles (Rollen)** wird geöffnet.

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

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

1. Wählen Sie **Weiter: Berechtigungen** aus. Die Seite **Attach permissions policies (Berechtigungsrichtlinien anfügen)** wird angezeigt.

1. Suchen und wählen Sie die `AmazonDMSRedshiftS3Role`-Richtlinie aus.

1. Wählen Sie **Next: Markierungen (Weiter: Markierungen)**. Die Seite **Add tags (Tags hinzufügen)** wird angezeigt. Hier können Sie alle gewünschten Tags hinzufügen.

1. Wählen Sie **Next: Review (Weiter: Prüfen)** aus und überprüfen Sie Ihre Ergebnisse.

1. Wenn die Einstellungen Ihren Vorstellungen entsprechen, geben Sie einen Namen für die Rolle (z. B. `DMS-Redshift-endpoint-access-role`) sowie eine zusätzliche Beschreibung ein und wählen Sie anschließend **Create role (Rolle erstellen)** aus. Die Seite **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-Redshift-Ressourcen zugreifen können, um diese mit einem angegebenen Namen, z. B. `DMS-Redshift-endpoint-access-role`, zu verschlüsseln.

**Um einen AWS KMS Verschlüsselungsschlüssel mit einer Schlüsselrichtlinie zu erstellen, die auf Ihre IAM-Rolle verweist**
**Anmerkung**  
Weitere Informationen zur AWS DMS Funktionsweise mit AWS KMS Verschlüsselungsschlüsseln finden Sie unter[Einen Verschlüsselungsschlüssel festlegen und AWS KMS Berechtigungen angeben](CHAP_Security.md#CHAP_Security.EncryptionKey).

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

1. Um das zu ändern AWS-Region, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.

1. Klicken Sie im Navigationsbereich auf **Kundenverwaltete Schlüssel**.

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

1. 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 Redshift, nur mit symmetrischen Verschlüsselungsschlüsseln arbeiten.

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

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

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

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

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

1. Wählen Sie unter **Dieses Konto** die verfügbaren Benutzer aus, die kryptografische Operationen für Amazon-Redshift-Ziele 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-Redshift-Zielobjekten zu ermöglichen (z. B. `DMS-Redshift-endpoint-access-role`).

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

------
#### [ JSON ]

****  

   ```
   {
       "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-Redshift-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-Redshift-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
                   }
               }
           }
       ]
   }
   ```

------

1. Wählen Sie **Finish** (Abschließen). Die Seite mit den **Verschlüsselungsschlüsseln** wird mit einer Meldung geöffnet, die darauf hinweist, dass Ihr AWS KMS key Schlüssel erstellt wurde.

Damit haben Sie einen neuen KMS-Schlüssel mit einem angegebenen Alias (z. B. `DMS-Redshift-endpoint-encryption-key`) erstellt. Dieser Schlüssel ermöglicht die Verschlüsselung AWS DMS von Amazon Redshift Redshift-Zieldaten.

## Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS
<a name="CHAP_Target.Redshift.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zur Konfiguration Ihrer Amazon-Redshift-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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--redshift-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Redshift.html)

## Verwenden eines Datenverschlüsselungsschlüssels und eines Amazon-S3-Buckets als Zwischenspeicher
<a name="CHAP_Target.Redshift.EndpointSettings"></a>

Sie können die Einstellungen für den Amazon-Redshift-Zielendpunkt verwenden, um Folgendes zu konfigurieren:
+ Ein benutzerdefinierter AWS KMS Datenverschlüsselungsschlüssel. Sie können dann diesen Schlüssel verwenden, um Ihre an Amazon S3 übertragenen Daten zu verschlüsseln, bevor sie nach Amazon Redshift kopiert werden.
+ Einen benutzerdefinierten S3-Bucket als Zwischenspeicher für die zu Amazon Redshift migrierten Daten.
+ Mapping von BOOLEAN als BOOLEAN aus einer PostgreSQL-Quelle. Standardmäßig wird ein BOOLEAN-Typ als varchar(1) migriert. Sie können `MapBooleanAsBoolean` angeben, damit das Redshift-Ziel den BOOLEAN-Typ als BOOLEAN migriert, wie im folgenden Beispiel gezeigt.

  ```
  --redshift-settings '{"MapBooleanAsBoolean": true}'
  ```

  Beachten Sie, dass Sie diese Einstellung sowohl am Quell- als auch am Zielendpunkt festlegen müssen, damit sie wirksam wird.

### KMS-Schlüsseleinstellungen für die Datenverschlüsselung
<a name="CHAP_Target.Redshift.EndpointSettings.KMSkeys"></a>

Die folgenden Beispiele veranschaulichen die Konfiguration eines benutzerdefinierten KMS-Schlüssels, um Ihre per Push an S3 übertragenen Daten zu verschlüsseln. Um zu beginnen, können Sie den folgenden `create-endpoint`-Aufruf in der AWS CLI ausführen.

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"EncryptionMode": "SSE_KMS", 
"ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'
```

Das durch die `--redshift-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/24c3c5a1-f34a-4519-a85b-2debbef226d1`. Bei diesem Wert handelt es sich um einen Amazon-Ressourcenname (ARN) für Ihren benutzerdefinierten KMS-Schlüssel.

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

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"EncryptionMode": "SSE_S3"}'
```

Weitere Informationen zur Verwendung der serverseitigen S3-Verschlüsselung finden Sie unter [Schutz von Daten mittels serverseitiger Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) im *Amazon-Simple-Storage-Service-Benutzerhandbuch*.

**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 von Amazon-S3-Buckets
<a name="CHAP_Target.Redshift.EndpointSettings.S3Buckets"></a>

Wenn Sie Daten auf einen Amazon Redshift-Zielendpunkt migrieren, AWS DMS verwendet es einen standardmäßigen Amazon S3 S3-Bucket als Zwischenspeicher für Aufgaben, bevor die migrierten Daten nach Amazon Redshift kopiert werden. Beispielsweise wird in den dargelegten Beispielen für das Erstellen eines Amazon-Redshift-Zielendpunkts mit einem AWS KMS -Datenverschlüsselungsschlüssel dieser Standard-S3-Bucket verwendet (siehe [KMS-Schlüsseleinstellungen für die Datenverschlüsselung](#CHAP_Target.Redshift.EndpointSettings.KMSkeys)). 

Sie können stattdessen einen benutzerdefinierten S3-Bucket für diesen Zwischenspeicher angeben, indem Sie die folgenden Parameter in den Wert Ihrer `--redshift-settings` Option für den Befehl aufnehmen: AWS CLI `create-endpoint`
+ `BucketName` – Eine Zeichenfolge, die Sie als Namen des S3-Bucket-Speichers angeben. Wenn Ihre Servicezugriffsrolle auf der Richtlinie `AmazonDMSRedshiftS3Role` basiert, muss dieser Wert das Präfix `dms-` haben, also beispielsweise `dms-my-bucket-name` lauten.
+ `BucketFolder` – (Optional) Eine Zeichenfolge die Sie als Namen des Speicherordners im angegebenen S3-Bucket angeben können.
+ `ServiceAccessRoleArn` – Der ARN einer IAM-Rolle, die administrativen Zugriff auf den S3-Bucket erlaubt. In der Regel erstellen Sie diese Rolle auf Grundlage der `AmazonDMSRedshiftS3Role`-Richtlinie. Ein Beispiel finden Sie unter dem Vorgehen zum Erstellen einer IAM-Rolle mit der erforderlichen von AWS verwalteten Richtlinie in [Erstellen und Verwenden von AWS KMS Schlüsseln zur Verschlüsselung von Amazon Redshift Redshift-Zieldaten](#CHAP_Target.Redshift.KMSKeys).
**Anmerkung**  
Wenn Sie mithilfe der `--service-access-role-arn` Option des `create-endpoint`-Befehls den ARN einer anderen IAM-Rolle angeben, hat diese IAM-Rollenoption Priorität.

Das folgende Beispiel gezeigt, wie Sie diese Parameter verwenden können, um einen benutzerdefinierten Amazon-S3-Bucket im folgenden Aufruf `create-endpoint` über die AWS CLI anzugeben. 

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", 
"BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'
```

## Multithread-Aufgabeneinstellungen für Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply"></a>

Sie können die Leistung von Aufgaben zum vollständigen Laden und CDC-Aufgaben (CDC = Change Data Capture) für einen Amazon-Redshift-Zielendpunkt verbessern, indem Sie Multithread-Aufgabeneinstellungen verwenden. Auf diese Weise können Sie die Anzahl der gleichzeitigen Threads und die Anzahl der Datensätze angeben, die in einem Puffer gespeichert werden sollen.

### Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge für Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.FullLoad"></a>

Zur Förderung der Leistung beim vollständigen Laden können Sie die folgenden `ParallelLoad*`-Aufgabeneinstellungen verwenden:
+ `ParallelLoadThreads` – Gibt die Anzahl der gleichzeitigen Threads an, die DMS während eines vollständigen Ladevorgangs verwendet, um Datensätze an einen Amazon-Redshift-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für vollständiges Laden](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

  Das Attribut `enableParallelBatchInMemoryCSVFiles` kann auf `false` gesetzt sein, wenn Sie die `ParallelLoadThreads`-Aufgabeneinstellung verwenden. Das Attribut verbessert die Leistung umfangreicherer Aufgaben für vollständige Multithread-Ladevorgänge, da DMS auf die Festplatte und nicht in den Arbeitsspeicher schreibt. Der Standardwert ist `true`.
+ `ParallelLoadBufferSize` – Gibt die maximale Anzahl von Datensatzanforderungen bei Verwendung von Threads für paralleles Laden mit dem Redshift-Ziel an. Der Standardwert ist 100 und der maximale Wert 1 000. Wir empfehlen, diese Option zu verwenden, wenn ParallelLoadThreads > 1 (mehr als eins) ist.

**Anmerkung**  
Support für die Verwendung von `ParallelLoad*` Task-Einstellungen während FULL LOAD auf Amazon Redshift Redshift-Zielendpunkte ist in den AWS DMS Versionen 3.4.5 und höher verfügbar.  
Die Redshift-Endpunkteinstellung `ReplaceInvalidChars` wird nicht für die Verwendung während eines CDC-Vorgangs (Change Data Capture) oder während einer FULL-LOAD-Migrationsaufgabe mit aktiviertem parallelem Laden unterstützt. Sie wird für die FULL-LOAD-Migration unterstützt, wenn paralleles Laden nicht aktiviert ist. *Weitere Informationen finden Sie [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)in der API-Referenz AWS Database Migration Service *

### Multithread-CDC-Aufgabeneinstellungen für Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.CDC"></a>

Zur Förderung der CDC-Leistung können Sie die folgenden `ParallelApply*`-Aufgabeneinstellungen verwenden:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladens AWS DMS verwendet werden, um Datensätze an einen Amazon Redshift Redshift-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32. Der empfohlene Mindestwert entspricht der Anzahl der Slices in Ihrem Cluster.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensatzanforderungen bei Verwendung von Threads für parallele Anwendung mit dem Redshift-Ziel an. Der Standardwert ist 100 und der maximale Wert 1 000. Wir empfehlen, diese Option zu verwenden, wenn ParallelApplyThreads > 1 (größer als eins) ist. 

  Um Redshift als Ziel optimal zu nutzen, sollte der Wert von `ParallelApplyBufferSize` mindestens dem Zweifachen der Anzahl von `ParallelApplyThreads` entsprechen (also mindestens doppelt so groß sein).

**Anmerkung**  
Support für die Verwendung von `ParallelApply*` Aufgabeneinstellungen während der Übertragung von CDC zu Amazon Redshift Redshift-Zielendpunkten ist in den AWS DMS Versionen 3.4.3 und höher verfügbar.

Der Grad der angewandten Parallelität hängt von der Korrelation zwischen der gesamten *Stapelgröße* und der *maximalen Dateigröße* ab, die für die Übertragung von Daten verwendet wird. Wenn Sie Multithread-CDC-Aufgabeneinstellungen mit einem Redshift-Ziel verwenden, erzielen Sie Vorteile, wenn die Stapelgröße im Verhältnis zur maximalen Dateigröße groß ist. Sie können beispielsweise die folgende Kombination aus Endpunkt- und Aufgabeneinstellungen verwenden, um eine optimale Leistung zu erzielen. 

```
// Redshift endpoint setting
                
        MaxFileSize=250000;

// Task settings

        BatchApplyEnabled=true;
        BatchSplitSize =8000;
        BatchApplyTimeoutMax =1800;
        BatchApplyTimeoutMin =1800;
        ParallelApplyThreads=32;
        ParallelApplyBufferSize=100;
```

Bei Verwendung der Einstellungen im vorherigen Beispiel profitiert ein Kunde mit einer hohen Transaktions-Workload von der Tatsache, dass sein Stapelpuffer, der 8 000 Datensätze enthält, innerhalb von 1 800 Sekunden gefüllt wird und 32 parallele Threads mit einer maximalen Dateigröße von 250 MB verwendet werden.

Weitere Informationen finden Sie unter [Einstellungen für die Optimierung der Verarbeitung von Änderungen](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md).

**Anmerkung**  
DMS-Abfragen, die während der laufenden Replikation auf einen Redshift-Cluster ausgeführt werden, können dieselbe WLM-Warteschlange (WLM = Workload Management) gemeinsam mit anderen laufenden Anwendungsabfragen nutzen. Daher sollten Sie die WLM-Eigenschaften ordnungsgemäß konfigurieren, um die Leistung während der laufenden Replikation auf ein Redshift-Ziel zu beeinflussen. Wenn beispielsweise andere parallele ETL-Abfragen ausgeführt werden, läuft DMS langsamer und die Leistungsverbesserungen gehen verloren.

## Zieldatentypen für Amazon Redshift
<a name="CHAP_Target.Redshift.DataTypes"></a>

Der Amazon Redshift Redshift-Endpunkt für AWS DMS unterstützt die meisten Amazon Redshift Redshift-Datentypen. Die folgende Tabelle zeigt die Amazon Redshift Redshift-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 unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


| AWS DMS Datentypen | Amazon-Redshift-Datentypen | 
| --- | --- | 
| BOOLEAN | BOOL | 
| BYTES | VARCHAR (Länge) | 
| DATE | DATE | 
| TIME | VARCHAR(20) | 
| DATETIME |  Wenn die Skala => 0 und =< 6 ist, je nach Redshift-Zielspaltentyp einer der folgenden: TIMESTAMP (s) TIMESTAMPTZ (s) – Wenn der Quell-Zeitstempel einen Zonen-Offset enthält (wie in SQL Server oder Oracle), wird er beim Einfügen/Aktualisieren in UTC konvertiert. Wenn er keinen Offset enthält, wird die Zeit bereits in UTC berücksichtigt. Ist die Skalierung => 7 und =< 9, dann:  VARCHAR (37) | 
| INT1 | INT2 | 
| INT2 | INT2 | 
| INT4 | INT4 | 
| INT8 | INT8 | 
| NUMERIC | Ist die Skalierung => 0 und =< 37, dann:  NUMERIC (p,s)  Ist die Skalierung => 38 und =< 127, dann:  VARCHAR (Länge) | 
| REAL4 | FLOAT4 | 
| REAL8 | FLOAT8 | 
| STRING | Bei einer Länge von 1 bis 65 535 Verwendung von VARCHAR (Länge in Byte)  Bei einer Länge von 65 536 bis 2 147 483 647 Verwendung von VARCHAR (65535) | 
| UINT1 | INT2 | 
| UINT2 | INT2 | 
| UINT4 | INT4 | 
| UINT8 | NUMERIC (20,0) | 
| WSTRING |  Bei einer Länge von 1 bis 65 535 Verwendung von NVARCHAR (Länge in Byte)  Bei einer Länge von 65 536 bis 2 147 483 647 Verwendung von NVARCHAR (65535) | 
| BLOB | VARCHAR (maximale LOB-Größe \$1 2)  Die maximale LOB-Größe darf 31 KB nicht überschreiten. Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. | 
| NCLOB | NVARCHAR (maximale LOB-Größe)  Die maximale LOB-Größe darf 63 KB nicht überschreiten. Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. | 
| CLOB | VARCHAR (maximale LOB-Größe)  Die maximale LOB-Größe darf 63 KB nicht überschreiten. Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. | 

## Verwendung AWS DMS mit Amazon Redshift Serverless als Ziel
<a name="CHAP_Target.Redshift.RSServerless"></a>

AWS DMS unterstützt die Verwendung von Amazon Redshift Serverless als Zielendpunkt. Informationen zur Verwendung von Amazon Redshift Serverless finden Sie unter [Amazon Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-serverless.html) im [Amazon-Redshift-Verwaltungshandbuch](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html).

In diesem Thema wird beschrieben, wie Sie einen Amazon Redshift Serverless-Endpoint mit verwenden. AWS DMS

**Anmerkung**  
Wenn Sie einen Amazon Redshift Serverless-Endpunkt erstellen, verwenden Sie für das **DatabaseName**Feld Ihrer [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)Endpunktkonfiguration entweder den Namen des Amazon Redshift Data Warehouse oder den Namen des Arbeitsgruppen-Endpunkts. Verwenden Sie für das **ServerName**Feld den Wert für Endpoint, der auf der **Arbeitsgruppenseite** für den serverlosen Cluster angezeigt wird (z. B.). `default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com` Weitere Informationen zum Erstellen eines Endpunkts finden Sie unter [Erstellen der Quell- und Zielendpunkte](CHAP_Endpoints.Creating.md). Informationen zum Arbeitsgruppenendpunkt finden Sie unter [Verbinden mit Amazon Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-connecting.html).

### Vertrauensrichtlinie mit Amazon Redshift Serverless als Ziel
<a name="CHAP_Target.Redshift.RSServerless.policy"></a>

Wenn Sie Amazon Redshift Serverless als Zielendpunkt verwenden, müssen Sie Ihrer Vertrauensrichtlinie den folgenden hervorgehobenen Abschnitt hinzufügen. Diese Vertrauensrichtlinie wird der Rolle `dms-access-for-endpoint` angefügt.

Weitere Informationen zur Verwendung einer Vertrauensrichtlinie mit finden Sie AWS DMS unter. [Die IAM-Rollen zur Verwendung mit erstellen AWS DMS](security-iam.md#CHAP_Security.APIRole)

### Einschränkungen bei Verwendung von Amazon Redshift Serverless als Ziel
<a name="CHAP_Target.Redshift.RSServerless.Limitations"></a>

Bei Verwendung von Redshift Serverless als Ziel gelten folgende Einschränkungen:
+ AWS DMS unterstützt Amazon Redshift Serverless nur als Endpunkt in Regionen, die Amazon Redshift Serverless unterstützen. Informationen über die Regionen, die Amazon Redshift Serverless unterstützen, finden Sie unter **Redshift Serverless API** im Thema [Endpunkte und Kontingente von Amazon Redshift](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html) in der [Allgemeinen AWS -Referenz](https://docs.aws.amazon.com/general/latest/gr/Welcome.html).
+ Wenn Sie Enhanced VPC Routing verwenden, stellen Sie sicher, dass Sie einen Amazon-S3-Endpunkt in derselben VPC erstellen, in der sich auch Ihr Redshift-Serverless-Cluster oder Ihr von Redshift bereitgestellter Cluster befindet. Weitere Informationen finden Sie unter [Verwendung von erweitertem VPC-Routing mit Amazon Redshift als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC).
+ AWS DMS unterstützt Enhanced Throughput für Amazon Redshift Serverless nicht als Ziel. Weitere Informationen finden Sie unter [Verbesserter Durchsatz für Volllast-Migrationen von Oracle zu Amazon Redshift und Amazon S3](CHAP_Serverless.Components.md#CHAP_Serverless.Throughput).
+ AWS DMS unterstützt keine Verbindungen zu Amazon Redshift Redshift Serverless, wenn der SSL-Modus auf eingestellt ist. `verify-full` Verwenden Sie für Verbindungen, die eine SSL-Überprüfung zu Amazon Redshift Serverless-Zielen erfordern, alternative SSL-Modi wie `require` oder. `verify-ca`

# Verwendung einer SAP ASE-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SAP"></a>

Sie können Daten zu Datenbanken von SAP Adaptive Server Enterprise (ASE) — früher bekannt als Sybase — migrieren AWS DMS, indem Sie entweder eine der unterstützten Datenbankquellen verwenden.

Hinweise zu Versionen von SAP ASE, die als Ziel AWS DMS unterstützt werden, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md)

## Voraussetzungen für die Verwendung einer SAP ASE-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SAP.Prerequisites"></a>

Bevor Sie beginnen, mit einer SAP ASE-Datenbank als Ziel für zu arbeiten AWS DMS, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
+ Gewähren Sie dem AWS DMS Benutzer Zugriff auf das SAP ASE-Konto. Dieser Benutzer muss über read/write Berechtigungen in der SAP ASE-Datenbank verfügen.
+ In einigen Fällen kann es vorkommen, dass Sie auf eine SAP-ASE-Version 15.7 replizieren, die auf einer Amazon-EC2-Instance unter Microsoft Windows installiert ist, die mit nicht-lateinischen Zeichen (z. B. Chinesisch) konfiguriert ist. In solchen Fällen AWS DMS muss SAP ASE 15.7 SP121 auf dem SAP ASE-Zielcomputer installiert sein.

## Einschränkungen bei der Verwendung einer SAP ASE-Datenbank als Ziel für AWS DMS
<a name="CHAP_Target.SAP.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine SAP-ASE-Datenbank als Ziel für AWS DMS verwenden:
+ AWS DMS unterstützt keine Tabellen, die Felder mit den folgenden Datentypen enthalten. Replizierte Spalten mit diesen Datentypen werden als Null angezeigt. 
  + Benutzerdefinierter Typ (UDT)

## Endpunkteinstellungen bei Verwendung von SAP ASE als Ziel für AWS DMS
<a name="CHAP_Target.SAP.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer SAP-ASE-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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--sybase-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.SAP.html)

## Zieldatentypen für SAP ASE
<a name="CHAP_Target.SAP.DataTypes"></a>

Die folgende Tabelle zeigt die Zieldatentypen der SAP ASE-Datenbank, die bei der Verwendung unterstützt werden, AWS DMS sowie die Standardzuweisung von AWS DMS Datentypen.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS Datentypen  |  SAP ASE-Datentypen  | 
| --- | --- | 
| BOOLEAN | BIT | 
| BYTES | VARBINARY (Länge) | 
| DATE | DATE | 
| TIME | TIME | 
| TIMESTAMP (ZEITSTEMPEL) |  Ist die Skalierung => 0 und =< 6, dann: BIGDATETIME  Ist die Skalierung => 7 und =< 9, dann: VARCHAR (37)  | 
| INT1 | TINYINT | 
| INT2 | SMALLINT | 
| INT4 | INTEGER | 
| INT8 | BIGINT | 
| NUMERIC | NUMERIC (p,s) | 
| REAL4 | REAL | 
| REAL8 | DOUBLE PRECISION | 
| STRING | VARCHAR (Länge) | 
| UINT1 | TINYINT | 
| UINT2 | UNSIGNED SMALLINT | 
| UINT4 | UNSIGNED INTEGER | 
| UINT8 | UNSIGNED BIGINT | 
| WSTRING | VARCHAR (Länge) | 
| BLOB | IMAGE | 
| CLOB | UNITEXT | 
| NCLOB | TEXT | 

# Verwendung von Amazon S3 als Ziel für AWS Database Migration Service
<a name="CHAP_Target.S3"></a>

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 .csv,... LOAD00001 LOAD00002 , LOAD00009, LOAD0000 A 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 [MaxFileSize](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html#DMS-Type-S3Settings-MaxFileSize)Endpunkteinstellung steuern. 

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

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

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

Um Spoofing zu verhindern, AWS DMS überprüft die Inhaberschaft des Buckets, bevor Operationen ausgeführt werden. Wenn die `ExpectedBucketOwner` Amazon S3 S3-Endpunkteinstellung nicht angegeben ist, wird standardmäßig die AWS Konto-ID AWS DMS verwendet, der die AWS DMS Servicerolle gehört, als erwarteter Bucket-Besitzer.

Um Daten in einen S3-Bucket zu migrieren, der einem anderen AWS Konto gehört, müssen Sie den tatsächlichen Bucket-Besitzer in der `ExpectedBucketOwner` Amazon S3 S3-Endpunkteinstellung explizit angeben, wie im Folgenden dargestellt. Andernfalls schlägt die kontoübergreifende Replikationsaufgabe fehl.

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

Wenn Sie Datenänderungen mithilfe einer CDC-Aufgabe replizieren, gibt die erste Spalte der CSV- oder .parquet-Ausgabedatei an, wie die Zeilendaten geändert wurden, wie in der folgenden CSV-Datei gezeigt. AWS DMS 

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

Nehmen wir für dieses Beispiel an, dass die Quelldatenbank eine `EMPLOYEE` Tabelle enthält. AWS DMS schreibt als Reaktion auf die folgenden Ereignisse Daten in die .csv- oder .parquet-Datei:
+ Ein neuer Mitarbeiter (Bob Smith, Mitarbeiter-ID 101) wird am 04. Juni 2014 in der Niederlassung in New York eingestellt. In der CSV- oder Parquet-Datei gibt das `I` in der ersten Spalte an, dass eine neue Zeile in die MITARBEITER-Tabelle in der Quelldatenbank `INSERT`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-Tabelle `UPDATE`d (aktualisiert) wurde, um Bobs neuen Firmenstandort widerzuspiegeln. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach dem `UPDATE` angezeigt wird. 
+ Am 13. März 2017 wechselt Bob erneut zur Niederlassung in Dallas. In der CSV- oder Parquet-Datei gibt das `U` an, dass diese Zeile erneut `UPDATE`d (aktualisiert) wurde. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach dem `UPDATE` angezeigt wird.
+ Nach einiger Zeit der Arbeit in Dallas verlässt Bob die Firma. In der CSV- oder Parquet-Datei gibt das `D` an, dass die Zeile in der Quelltabelle `DELETE`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](#CHAP_Target.S3.EndpointSettings.CdcPath).

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](#CHAP_Target.S3.Configuring). 

**Topics**
+ [Voraussetzungen für die Verwendung von Amazon S3 als Ziel](#CHAP_Target.S3.Prerequisites)
+ [Einschränkungen bei der Verwendung von Amazon S3 als Ziel](#CHAP_Target.S3.Limitations)
+ [Sicherheit](#CHAP_Target.S3.Security)
+ [Speichern von Amazon-S3-Objekten mithilfe von Apache Parquet](#CHAP_Target.S3.Parquet)
+ [Markieren von Amazon-S3-Objekten](#CHAP_Target.S3.Tagging)
+ [AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen](#CHAP_Target.S3.KMSKeys)
+ [Verwenden einer datumsbasierten Ordnerpartitionierung](#CHAP_Target.S3.DatePartitioning)
+ [Paralleles Laden partitionierter Quellen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.ParallelLoad)
+ [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring)
+ [Verwendung AWS Glue Data Catalog mit einem Amazon S3 S3-Ziel für AWS DMS](#CHAP_Target.S3.GlueCatalog)
+ [Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel](#CHAP_Target.S3.EndpointSettings)
+ [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps)
+ [Zieldatentypen für S3 Parquet](#CHAP_Target.S3.DataTypes)

## Voraussetzungen für die Verwendung von Amazon S3 als Ziel
<a name="CHAP_Target.S3.Prerequisites"></a>

Ü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. [Konfiguration von VPC-Endpunkten für AWS DMS](CHAP_VPC_Endpoints.md)

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.

------
#### [ JSON ]

****  

```
{
    "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](CHAP_Validating_S3.md#CHAP_Validating_S3_prerequisites).

## Einschränkungen bei der Verwendung von Amazon S3 als Ziel
<a name="CHAP_Target.S3.Limitations"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Informationen zum Löschen einer Version eines S3-Objekts finden Sie unter [Löschen von Objekten aus einem versionsverwaltungsfähigen Bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ 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 den Umgang mit der DDL-Änderungsverarbeitung](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).
+ Der vollständige LOB-Modus wird nicht unterstützt.
+ Änderungen an der Quelltabellenstruktur während des vollständigen Ladevorgangs werden nicht unterstützt. Änderungen an Daten werden während des vollständigen Ladevorgangs unterstützt.
+ Mehrere Aufgaben, die Daten aus derselben Quelltabelle in denselben S3-Ziel-Endpunkt-Bucket replizieren, führen dazu, dass diese Aufgaben in dieselbe Datei schreiben. Wir empfehlen, unterschiedliche Zielendpunkte (Buckets) anzugeben, wenn die Datenquelle aus derselben Tabelle stammt.
+ `BatchApply` wird für einen S3-Endpunkt nicht unterstützt. Bei Verwendung von Batch Apply (z. B. der Zielmetadaten-Aufgabeneinstellung `BatchApplyEnabled`) für ein S3-Ziel kann es zu einem Datenverlust kommen.
+ Sie können `DatePartitionEnabled` oder `addColumnName` nicht zusammen mit `PreserveTransactions` oder `CdcPath` verwenden.
+ AWS DMS unterstützt nicht das Umbenennen mehrerer Quelltabellen in denselben Zielordner mithilfe von Transformationsregeln.
+ Wenn während der Vollladephase intensiv in die Quelltabelle geschrieben wird, schreibt DMS möglicherweise doppelte Datensätze in den S3-Bucket oder zwischengespeicherte Änderungen.
+ Wenn Sie die Aufgabe mit einem `TargetTablePrepMode` von `DO_NOTHING` konfigurieren, schreibt DMS möglicherweise doppelte Datensätze in den S3-Bucket, wenn die Aufgabe während der Vollladephase unterbrochen und abrupt wieder aufgenommen wird.
+ Wenn Sie den Zielendpunkt mit der `PreserveTransactions`-Einstellung `true` konfigurieren, werden zuvor generierte CDC-Dateien beim erneuten Laden einer Tabelle nicht gelöscht. Weitere Informationen finden Sie unter [Erfassen von Datenänderungen (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel](#CHAP_Target.S3.EndpointSettings.CdcPath).

Die Einschränkungen für die Verwendung der Validierung mit S3 als Ziel finden Sie unter [Einschränkungen bei Verwendung der S3-Zielvalidierung](CHAP_Validating_S3.md#CHAP_Validating_S3_limitations).

## Sicherheit
<a name="CHAP_Target.S3.Security"></a>

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](#CHAP_Target.S3.Configuring). Weitere Informationen zu Amazon S3 Canned finden Sie ACLs unter [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#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
<a name="CHAP_Target.S3.Parquet"></a>

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/](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](#CHAP_Target.S3.EndpointSettings).
+ 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](#CHAP_Target.S3.Configuring).

## Markieren von Amazon-S3-Objekten
<a name="CHAP_Target.S3.Tagging"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) 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](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

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.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.S3.html)

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.

**Example 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"
              }                                     
           ]
        }
    ]
}
```

**Example 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.

**Example 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
<a name="CHAP_Target.S3.KMSKeys"></a>

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 `your-KMS-key-ARN` ist Ihr- der Amazon-Ressourcenname (ARN) für Ihren KMS-Schlüssel und es ist erforderlich, dass Ihre IAM-Rolle über Zugriffsberechtigungen verfügt, siehe[Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel](#CHAP_Target.S3.EndpointSettings).
+ Richten Sie für das zusätzliche Verbindungsattribut `encryptionMode` den Wert `SSE_KMS` und für das zusätzliche Verbindungsattribut `serverSideEncryptionKmsKeyId` den ARN für Ihren KMS-Schlüssel ein. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring).

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

Die entsprechende Vorgehensweise wird nachfolgend beschrieben.

**So erstellen Sie eine IAM-Richtlinie mit Berechtigungen für den Zugriff auf den Amazon-S3-Bucket**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

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

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

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

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

1. 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)**.

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

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

------
#### [ JSON ]

****  

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

------

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

**So erstellen Sie eine IAM-Rolle mit dieser Richtlinie**

1. Wählen Sie im Navigationsbereich Ihrer IAM-Konsole **Rollen** aus. Die Detailseite **Roles (Rollen)** wird geöffnet.

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

1. Wenn der AWS Service als vertrauenswürdige Entität ausgewählt ist, wählen Sie **DMS** als den Service aus, um die IAM-Rolle zu verwenden.

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

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

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

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

1. 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 AWS KMS Berechtigungen angeben](CHAP_Security.md#CHAP_Security.EncryptionKey)

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

1. Um das zu ändern AWS-Region, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.

1. Klicken Sie im Navigationsbereich auf **Kundenverwaltete Schlüssel**.

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

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

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

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

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

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

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

1. 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`.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
                   }
               }
           }
       ]
   }
   ```

------

1. 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
<a name="CHAP_Target.S3.DatePartitioning"></a>

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 \$1 CDC) oder wenn Sie nur Datenänderungen replizieren (nur CDC). Wenn Sie bestehende Daten migrieren und laufende Änderungen replizieren, werden nur laufende Änderungen partitioniert. Verwenden Sie die folgenden Einstellungen für den Zielendpunkt:
+ `DatePartitionEnabled` – Gibt an, dass eine Partitionierung auf der Grundlage von Datumsangaben erfolgen soll. Setzen Sie diese boolesche Option auf `true`, um S3-Bucket-Ordner basierend auf den Commit-Daten von Transaktionen zu partitionieren. 

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

  Der Standardwert ist `false`. 
+ `DatePartitionSequence` – Identifiziert die Reihenfolge des Datumsformats, das bei der Ordnerpartitionierung verwendet werden soll. Setzen Sie diese ENUM-Option auf `YYYYMMDD`,`YYYYMMDDHH`, `YYYYMM`, `MMYYYYDD` oder `DDMMYYYY`. Der Standardwert ist `YYYYMMDD`. Verwenden Sie diese Einstellung, wenn `DatePartitionEnabled` auf `true.` gesetzt ist.
+ `DatePartitionDelimiter` – Gibt ein Datumstrennzeichen für die Ordnerpartitionierung an. Setzen Sie diese ENUM-Option auf `SLASH`,`DASH`, `UNDERSCORE` oder `NONE`. Der Standardwert ist `SLASH`. Verwenden Sie diese Einstellung, wenn `DatePartitionEnabled` auf `true` festgelegt ist.
+ `DatePartitionTimezone`— Legen Sie beim Erstellen eines S3-Zielendpunkts fest`DatePartitionTimezone`, dass die aktuelle UTC-Zeit in eine angegebene Zeitzone konvertiert wird. Die Konvertierung erfolgt, wenn ein Datumspartitionsordner erstellt und ein CDC-Dateiname generiert wird. Das Zeitzonenformat ist Gebiet/Ort. Verwenden Sie diesen Parameter, wenn er auf gesetzt `DatePartitionedEnabled` ist`true`, wie im folgenden Beispiel gezeigt:

  ```
  s3-settings='{"DatePartitionEnabled": true, "DatePartitionSequence": "YYYYMMDDHH", "DatePartitionDelimiter": "SLASH", "DatePartitionTimezone":"Asia/Seoul", "BucketName": "dms-nattarat-test"}'
  ```

Das folgende Beispiel zeigt, wie die datumsbasierte Ordnerpartitionierung mit Standardwerten für die Reihenfolge der Datenpartitionen und das Trennzeichen aktiviert wird. Es verwendet die `--s3-settings '{json-settings}'` Option von AWS CLI. `create-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
<a name="CHAP_Target.S3.ParallelLoad"></a>

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](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

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

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

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

Bei einigen Datenbank-Engines, wie MongoDB und DocumentDB, gibt es das Konzept der Partitionen jedoch nicht. AWS DMS Fügt für diese Datenbank-Engines den Index des laufenden Quellsegments wie folgt als Präfix zum Namen der Ziel-.csv-Datei hinzu.

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

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

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

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

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

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

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

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

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

## Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS
<a name="CHAP_Target.S3.Configuring"></a>

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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--s3-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

**Anmerkung**  
DMS schreibt Änderungen auf der Grundlage der Commit-Reihenfolge aus der Quelldatenbank in Parquet-Dateien. Bei der Migration mehrerer Tabellen wird jedoch die ursprüngliche Transaktionsreihenfolge aufgrund der Partitionierung auf Tabellenebene nicht beibehalten. Um die Informationen zur Transaktionssequenz beizubehalten, konfigurieren Sie die `TimestampColumnName` Endpunkteinstellung so, dass sie den Quell-Commit-Zeitstempel für jede Zeile enthält, den Sie dann in der Downstream-Verarbeitung verwenden können, um die ursprüngliche Transaktionssequenz zu rekonstruieren. Im Gegensatz zum CSV-Format, das diese `PreserveTransactions` Einstellung bietet, behandeln Parquet-Dateien Transaktionen aufgrund ihrer spaltenförmigen Speicherstruktur unterschiedlich. Dieser Ansatz ermöglicht jedoch eine genaue Nachverfolgung der Quell-Commit-Zeiten, unterstützt die Rekonstruktion der Transaktionsreihenfolge nach der Migration und ermöglicht eine effiziente Datenverarbeitung bei gleichzeitiger Wahrung der Datenkonsistenz.

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.  Standardwert: `""` Gültige Werte: jede gültige Zeichenfolge Beispiel: `--s3-settings '{"CsvNullValue": "NULL"}'` Wenn der Spaltenwert der Quelldatenbank Null ist, lautet der Spaltenwert in der S3-CSV-Datei `NULL` anstelle der Zeichenfolge „“.  | 
| AddColumnName |  Ein optionaler Parameter, den sie, sofern er auf `true` oder `y` festgelegt ist, verwenden können, um der CSV-Ausgabedatei Informationen zu Spaltennamen hinzuzufügen. Sie können diesen Parameter nicht zusammen mit `PreserveTransactions` oder `CdcPath` verwenden. Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"AddColumnName": true}'`  | 
| AddTrailingPaddingCharacter |  Verwenden Sie die S3-Zielendpunkteinstellung `AddTrailingPaddingCharacter`, um Zeichenfolgedaten aufzufüllen. Der Standardwert ist `false`. Typ: Boolescher Wert Beispiel: `--s3-settings '{"AddTrailingPaddingCharacter": true}'`  | 
| BucketFolder |  Ein optionaler Parameter zum Festlegen eines Ordnernamens im S3-Bucket. Wenn angegeben, werden Zielobjekte als CSV- oder Parquet-Dateien im Pfad `BucketFolder/schema_name/table_name/` erstellt. Wenn dieser Parameter nicht festgelegt ist, wird der Pfad `schema_name/table_name/` verwendet.  Beispiel: `--s3-settings '{"BucketFolder": "testFolder"}'`  | 
| BucketName |  Der Name des S3-Buckets, in dem S3-Zielobjekte als CSV- oder Parquet-Dateien erstellt werden. Beispiel: `--s3-settings '{"BucketName": "buckettest"}'`  | 
| CannedAclForObjects |  Ein Wert, der es AWS DMS ermöglicht, eine vordefinierte (gespeicherte) Zugriffskontrollliste für Objekte anzugeben, die im S3-Bucket als CSV- oder .parquet-Dateien erstellt wurden. Weitere Informationen zu Amazon S3 Canned ACLs finden Sie unter [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) im *Amazon S3 Developer Guide.* Standardwert: KEINE Gültige Werte für dieses Attribut sind: NONE; PRIVATE; PUBLIC\$1READ; PUBLIC\$1READ\$1WRITE; AUTHENTICATED\$1READ; \$1READ; BUCKET\$1OWNER\$1READ; BUCKET\$1OWNER\$1FULL\$1CONTROL. AWS\$1EXEC Beispiel: `--s3-settings '{"CannedAclForObjects": "PUBLIC_READ"}'`  | 
| CdcInsertsOnly |  Ein optionaler Parameter während der Erfassung von Änderungsdaten (Change Data Capture, CDC), um nur die INSERT-Operationen in die CSV- oder Parquet-Ausgabedateien zu schreiben. Standardmäßig (die `false`-Einstellung) enthält das erste Feld in einem CSV- oder PARTETT-Datensatz den Buchstaben I (INSERT), U (UPDATE) oder D (DELETE). Dieser Buchstabe gibt an, ob die Zeile für einen CDC-Ladenvorgang in das Ziel in der Quelldatenbank eingefügt, aktualisiert oder gelöscht wurde. Wenn `cdcInsertsOnly` auf `true` oder gesetzt INSERTs ist, `y` werden nur Daten aus der Quelldatenbank in die .csv- oder .parquet-Datei migriert. Im Fall von CSV-Dateien ist die Art der Aufzeichnung dieser INSERTs vom Wert für `IncludeOpForFullLoad` abhängig. Wenn `IncludeOpForFullLoad` auf `true` festgelegt ist, wird das erste Feld jedes CDC-Datensatzes auf I festgelegt, um die INSERT-Operation an der Quelle anzugeben. Wenn `IncludeOpForFullLoad` auf `false` festgelegt ist, wird jeder CDC-Datensatz ohne erstes Feld geschrieben, um die INSERT-Operation an der Quelle anzugeben. Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps). Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"CdcInsertsOnly": true}'`  | 
| CdcInsertsAndUpdates |  Aktiviert eine CDC (Change Data Capture)-Last zum Schreiben von INSERT- und UPDATE-Operationen in .csv- oder .parquet-Ausgabedateien (Columnar Storage). Die Standardeinstellung ist`false`, aber wenn auf `true` oder gesetzt `cdcInsertsAndUpdates` ist`y`, INSERTs und UPDATEs aus der Quelldatenbank werden in die .csv- oder .parquet-Datei migriert.  Nur im CSV-Dateiformat hängt die Art INSERTs und Weise, wie diese Daten aufgezeichnet UPDATEs werden, vom Wert des Parameters ab. `includeOpForFullLoad` Wenn `includeOpForFullLoad` auf `true` gesetzt ist, wird das erste Feld jedes CDC-Datensatzes entweder auf `I` oder `U` gesetzt, um INSERT- und UPDATE-Operationen an der Quelle anzuzeigen. Wenn `includeOpForFullLoad` jedoch auf `false` gesetzt ist, werden CDC-Datensätze ohne Anzeige von INSERT- oder UPDATE-Operationen an der Quelle geschrieben.   Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps).  `CdcInsertsOnly` und `cdcInsertsAndUpdates` können nicht beide für denselben Endpunkt auf „true“ gesetzt werden. Setzen Sie entweder `cdcInsertsOnly` oder `cdcInsertsAndUpdates` auf `true` für denselben Endpunkt, aber nicht beide.   Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"CdcInsertsAndUpdates": true}'`  | 
|  `CdcPath`  |  Gibt den Ordnerpfad von CDC-Dateien an. Für eine S3-Quelle ist diese Einstellung erforderlich, wenn eine Aufgabe Änderungsdaten erfasst; ansonsten ist sie optional. Wenn `CdcPath` festgelegt ist, liest DMS CDC-Dateien aus diesem Pfad und repliziert die Datenänderungen auf dem Zielendpunkt. Wenn Sie für ein S3-Ziel `PreserveTransactions` auf „true“ gesetzt haben, prüft DMS, ob Sie für diesen Parameter einen Ordnerpfad auf Ihrem S3-Ziel festgelegt haben, in dem DMS die Transaktionsreihenfolge für den CDC-Ladevorgang speichern kann. DMS erstellt diesen CDC-Ordnerpfad in Ihrem S3-Zielarbeitsverzeichnis oder an dem durch `BucketFolder` und `BucketName` angegebenen S3-Zielort. Sie können diesen Parameter nicht zusammen mit `DatePartitionEnabled` oder `AddColumnName` verwenden. Typ: Zeichenfolge Wenn Sie beispielsweise `CdcPath` als `MyChangedData` und `BucketName` als `MyTargetBucket`, `BucketFolder` aber nicht angeben, erstellt DMS den folgenden CDC-Ordnerpfad: `MyTargetBucket/MyChangedData`.  Wenn Sie denselben `CdcPath` und `BucketName` als `MyTargetBucket` sowie `BucketFolder` als `MyTargetData` angeben, erstellt DMS den folgenden CDC-Ordnerpfad: `MyTargetBucket/MyTargetData/MyChangedData`. Diese Einstellung wird in den AWS DMS Versionen 3.4.2 und höher unterstützt. Bei der Erfassung von Datenänderungen in der Reihenfolge der Transaktionen speichert DMS die Zeilenänderungen immer in CSV-Dateien, unabhängig vom Wert der DataFormat S3-Einstellung auf dem Ziel.   | 
|  `CdcMaxBatchInterval`  |  Bedingung für die maximale Intervalllänge, definiert in Sekunden, für die Ausgabe einer Datei in Amazon S3. Standardwert: 60 Sekunden Wenn `CdcMaxBatchInterval` und `CdcMinFileSize` angegeben sind, wird das Schreiben der Datei durch die Parameterbedingung ausgelöst, die zuerst erfüllt wird.  Ab AWS DMS Version 3.5.3 hängt die Häufigkeit der `confirmed_flush_lsn` Aktualisierungen bei der Verwendung von PostgreSQL oder Aurora PostgreSQL als Quelle und Amazon S3 mit Parquet als Ziel von der Datenmenge ab, die der Zielendpunkt so konfiguriert ist, dass er im Speicher aufbewahrt. AWS DMS sendet die Daten erst `confirmed_flush_lsn` zurück an die Quelle, nachdem die Daten im Speicher in Amazon S3 geschrieben wurden. Wenn Sie den `CdcMaxBatchInterval` Parameter auf einen höheren Wert konfigurieren, stellen Sie möglicherweise eine erhöhte Auslastung der Replikationssteckplätze in der Quelldatenbank fest.   | 
|  `CdcMinFileSize`  |  Bedingung für die minimale Dateigröße, definiert in Kilobyte, für die Ausgabe einer Datei in Amazon S3. Standardwert: 32000 KB Wenn `CdcMinFileSize` und `CdcMaxBatchInterval` angegeben sind, wird das Schreiben der Datei durch die Parameterbedingung ausgelöst, die zuerst erfüllt wird.  | 
|  `PreserveTransactions`  |  Wenn hier `true` festgelegt ist, speichert DMS die Transaktionsreihenfolge für Change Data Capture (CDC) auf dem Amazon-S3-Ziel, das durch `CdcPath` angegeben ist. Sie können diesen Parameter nicht zusammen mit `DatePartitionEnabled` oder `AddColumnName` verwenden. Typ: Boolescher Wert 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. Diese Einstellung wird in den AWS DMS Versionen 3.4.2 und höher unterstützt.   | 
| IncludeOpForFullLoad |  Ein optionaler Parameter während eines vollständigen Ladevorgangs, um die INSERT-Operationen nur zu CSV-Ausgabedateien zu schreiben. Bei vollständigen Ladevorgängen können Datensätze nur eingefügt werden. Standardmäßig (Einstellung `false`) werden in diesen Ausgabedateien für einen vollständigen Ladevorgang keine Informationen aufgezeichnet, um anzugeben, dass die Zeilen in der Quelldatenbank eingefügt wurden. Wenn `IncludeOpForFullLoad` auf `true` oder `y` festgelegt ist, wird die INSERT-Operation als I-Anmerkung im ersten Feld der CSV-Datei aufgezeichnet.  Dieser Parameter funktioniert mit `CdcInsertsOnly` oder `CdcInsertsAndUpdates` nur für die Ausgabe zu .csv-Dateien. Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps).  Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"IncludeOpForFullLoad": true}'`  | 
| CompressionType |  Ein optionaler Parameter, wenn er auf gesetzt ist, `GZIP` verwendet GZIP, um die CSV-Zieldateien zu komprimieren. Wenn dieser Parameter auf den Standardwert gesetztist, bleiben die Dateien unkomprimiert. Standardwert: `NONE` Gültige Werte: `GZIP` oder `NONE`. Beispiel: `--s3-settings '{"CompressionType": "GZIP"}'`  | 
| CsvDelimiter |  Das Trennzeichen, das zum Trennen von Spalten in den CSV-Quelldateien dient. Standardmäßig wird ein Komma (,) verwendet. Beispiel: `--s3-settings '{"CsvDelimiter": ","}'`  | 
| CsvRowDelimiter |  Das Trennzeichen, das zum Trennen von Zeilen in den CSV-Quelldateien dient. Standardmäßig wird ein Zeilenumbruch (\$1n) verwendet. Beispiel: `--s3-settings '{"CsvRowDelimiter": "\n"}'`  | 
|   `MaxFileSize`   |  Ein Wert, der die maximale Größe (in KB) der CSV-Datei angibt, die erstellt werden soll, während die Migration zum S3-Ziel in der Volllast-Phase ausgeführt wird. Standardwert: 1048576 KB (1 GB) Gültige Werte: 1 bis 1 048 576 Beispiel: `--s3-settings '{"MaxFileSize": 512}'`  | 
| Rfc4180 |  Ein optionaler Parameter, der verwendet wird, um das Verhalten so einzustellen, dass es RFC für Daten entspricht, die nur im CSV-Format zu Amazon S3 migriert werden. Wenn dieser Wert auf Amazon S3 als Ziel gesetzt ist `true` oder Amazon S3 als Ziel `y` verwendet wird und die Daten Anführungszeichen, Kommas oder AWS DMS Zeilenumbrüche enthalten, wird die gesamte Spalte mit einem zusätzlichen Paar doppelter Anführungszeichen („) eingeschlossen. Jedes Anführungszeichen innerhalb der Daten wird zweimal wiederholt. Diese Formatierung entspricht RFC 4180. Standardwert: `true` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"Rfc4180": false}'`  | 
| EncryptionMode |  Der serverseitige Verschlüsselungsmodus, mit dem Sie Ihre CSV- oder Parquet-Objektdateien, die Sie nach S3 kopiert haben, verschlüsseln möchten, Die gültigen Werte sind `SSE_S3` (S3-serverseitige Verschlüsselung) oder `SSE_KMS` (KMS-Verschlüsselung). Wenn Sie `SSE_KMS` auswählen, legen Sie den `ServerSideEncryptionKmsKeyId`-Parameter auf den Amazon-Ressourcennamen (ARN) fest, so dass der KMS-Schlüssel für die Verschlüsselung verwendet wird.  Sie können auch den CLI-Befehl `modify-endpoint` verwenden, um den Wert des Attributs `EncryptionMode` für einen vorhandenen Endpunkt von `SSE_KMS` in `SSE_S3` zu ändern. Sie können jedoch nicht den Wert für `EncryptionMode` von `SSE_S3` in `SSE_KMS` ändern.  Standardwert: `SSE_S3` Gültige Werte: `SSE_S3` oder `SSE_KMS`. Beispiel: `--s3-settings '{"EncryptionMode": SSE_S3}'`  | 
| ServerSideEncryptionKmsKeyId |  Wenn Sie `EncryptionMode` auf `SSE_KMS` setzen, legen Sie für diesen Parameter den Amazon-Ressourcennamen (ARN) für den KMS-Schlüssel fest. Sie finden diesen ARN, indem Sie den Schlüsselalias in der Liste der für Ihr Konto erstellten AWS KMS Schlüssel auswählen. Wenn Sie den Schlüssel erstellen, müssen Sie ihm auch bestimmte Richtlinien und Rollen, die mit diesem KMS-Schlüssel verknüpft sind, zuweisen. Weitere Informationen finden Sie unter [AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen](#CHAP_Target.S3.KMSKeys). Beispiel: `--s3-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'`  | 
| DataFormat |  Das Ausgabeformat für die Dateien, das zur Erstellung von S3-Objekten AWS DMS verwendet wird. AWS DMS Unterstützt für Amazon S3 S3-Ziele entweder .csv- oder .parquet-Dateien. Die Parquet-Dateien verfügen über ein binäres spaltenbasiertes Speicherformat mit effizienten Komprimierungsoptionen und schnellerer Abfrageleistung. Weitere Informationen über Parquet-Dateien finden Sie unter [https://parquet.apache.org/](https://parquet.apache.org/). Standardwert: `csv` Gültige Werte: `csv` oder `parquet`. Beispiel: `--s3-settings '{"DataFormat": "parquet"}'`  | 
| EncodingType |  Der Parquet-Kodierungstyp. Die Kodierungstypoptionen umfassen Folgendes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.S3.html) Standardwert: `rle-dictionary` Gültige Werte: `rle-dictionary`, `plain` oder `plain-dictionary` Beispiel: `--s3-settings '{"EncodingType": "plain-dictionary"}'`  | 
| DictPageSizeLimit |  Die zulässige Maximalgröße (in Bytes) für eine Verzeichnisseite in einer Parquet-Datei. Wenn eine Verzeichnisseite diesen Wert überschreitet, verwendet die Seite die einfache Kodierung. Standardwert: 1.024.000 (1 MB) Zulässige Werte: Jede gültige Ganzzahl Beispiel: `--s3-settings '{"DictPageSizeLimit": 2,048,000}'`  | 
| RowGroupLength |  Die Anzahl der Zeilen einer Zeilengruppe in einer Parquet-Datei. Standardwert: 10.024 (10 KB) Zulässige Werte: Jede gültige Ganzzahl Beispiel: `--s3-settings '{"RowGroupLength": 20,048}'`  | 
| DataPageSize |  Die zulässige Maximalgröße (in Bytes) für eine Datenseite in einer Parquet-Datei. Standardwert: 1.024.000 (1 MB) Zulässige Werte: Jede gültige Ganzzahl Beispiel: `--s3-settings '{"DataPageSize": 2,048,000}'`  | 
| ParquetVersion |  Die Version des Parquet-Dateiformats. Standardwert: `PARQUET_1_0` Gültige Werte: `PARQUET_1_0` oder `PARQUET_2_0`. Beispiel: `--s3-settings '{"ParquetVersion": "PARQUET_2_0"}'`  | 
| EnableStatistics |  Legen Sie `true` oder `y` fest, um Statistiken über Parquet-Dateiseiten und Zeilengruppen zu aktivieren. Standardwert: `true` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"EnableStatistics": false}'`  | 
| TimestampColumnName |  Ein optionaler Parameter, um eine Zeitstempelspalte in die S3-Zielendpunktdaten einzufügen. AWS DMS schließt eine zusätzliche `STRING` Spalte in den Objektdateien .csv oder .parquet Ihrer migrierten Daten ein, wenn Sie einen Wert angeben, der nicht leer `TimestampColumnName` ist. Bei einem vollständigen Ladevorgang enthält jede Zeile der Zeitstempelspalte einen Zeitstempel für den Zeitpunkt, an dem die Daten von DMS von der Quelle zum Ziel übertragen wurden.  Bei einem CDC-Ladevorgang enthält jede Zeile der Zeitstempelspalte den Zeitstempel für den Commit dieser Zeile in der Quelldatenbank. Das Zeichenfolgeformat für den Wert dieser Zeitstempelspalte ist `yyyy-MM-dd HH:mm:ss.SSSSSS`. Standardmäßig wird die Genauigkeit für diesen Wert in Mikrosekunden angegeben. Für einen CDC-Ladevorgang hängt die Rundung für die Genauigkeit vom Commit-Zeitstempel ab, der von DMS für die Quell-Datenbank unterstützt wird. Wenn für den Parameter `AddColumnName` `true` festgelegt ist, bezieht DMS auch den Namen für die Zeitstempelspalte ein, den Sie als den nicht leeren Wert von `TimestampColumnName` festlegen. Beispiel: `--s3-settings '{"TimestampColumnName": "TIMESTAMP"}'`  | 
| UseTaskStartTimeForFullLoadTimestamp |  Bei Einstellung von `true` verwendet dieser Parameter die Startzeit der Aufgabe als Zeitstempel-Spaltenwert anstelle der Zeit, zu der Daten in das Ziel geschrieben werden. Bei einem vollständigen Ladevorgang, wenn `UseTaskStartTimeForFullLoadTimestamp` auf `true` gesetzt ist, enthält jede Zeile der Zeitstempel-Spalte die Startzeit der Aufgabe. Bei CDC-Ladevorgängen enthält jede Zeile der Spalte Zeitstempel die Übergabezeit der Transaktion. Wenn `UseTaskStartTimeForFullLoadTimestamp` auf `false` gesetzt ist, wird der Zeitstempel des vollständigen Ladevorgangs in der Zeitstempel-Spalte um den Zeitpunkt des Eintreffens der Daten im Ziel erhöht. Standardwert: `false` Zulässige Werte: `true`, `false` Beispiel: `--s3-settings '{"UseTaskStartTimeForFullLoadTimestamp": true}'` `UseTaskStartTimeForFullLoadTimestamp: true` hilft dabei, das S3-Ziel `TimestampColumnName` für einen vollständigen Ladevorgang mit `TimestampColumnName` für einen CDC-Ladevorgang sortierbar zu machen.  | 
| ParquetTimestampInMillisecond |  Ein optionaler Parameter, der die Genauigkeit der `TIMESTAMP`-Spaltenwerte angibt, die in eine S3-Objektdatei im .parquet-Format geschrieben werden. Wenn dieses Attribut auf `true` oder gesetzt ist`y`, werden alle `TIMESTAMP` Spalten in eine Datei im .parquet-Format mit einer Genauigkeit von Millisekunden AWS DMS geschrieben. Andernfalls schreibt DMS sie mit einer Genauigkeit in Mikrosekunden. Derzeit AWS Glue kann Amazon Athena und nur Werte mit einer Genauigkeit von Millisekunden verarbeiten. `TIMESTAMP` Setzen Sie dieses Attribut für .parquet-formatierte S3-Endpunkt-Objektdateien nur dann auf „true“, wenn Sie vorhaben, die Daten mithilfe von Athena oder AWS Glue abzufragen oder zu verarbeiten.    AWS DMS schreibt alle in eine S3-Datei geschriebenen `TIMESTAMP` Spaltenwerte im CSV-Format mit einer Genauigkeit im Mikrosekundenbereich.   Die Einstellung dieses Attributs hat keine Auswirkung auf das Zeichenfolgeformat des Zeitstempelspaltenwerts; der durch Festlegen des `TimestampColumnName`-Attributs eingefügt wird.    Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"ParquetTimestampInMillisecond": true}'`  | 
| GlueCatalogGeneration |  Um eine zu generieren AWS Glue Data Catalog, setzen Sie diese Endpunkteinstellung auf. `true` Standardwert: `false` Zulässige Werte: `true`, `false` Beispiel: `--s3-settings '{"GlueCatalogGeneration": true}'` **Hinweis:** Verwenden Sie `GlueCatalogGeneration` nicht mit `PreserveTransactions` und `CdcPath`.  | 

## Verwendung AWS Glue Data Catalog mit einem Amazon S3 S3-Ziel für AWS DMS
<a name="CHAP_Target.S3.GlueCatalog"></a>

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 auf`true`, 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:

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com//glue/latest/dg/components-key-concepts.html).AWS Glue *
+ Weitere Informationen finden AWS Glue Data Catalog Sie unter [Komponenten](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html) im *AWS Glue Entwicklerhandbuch*.

## Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel
<a name="CHAP_Target.S3.EndpointSettings"></a>

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
<a name="CHAP_Target.S3.EndpointSettings.KMSkeys"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).

**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
<a name="CHAP_Target.S3.EndpointSettings.Parquet"></a>

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", "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
<a name="CHAP_Target.S3.EndpointSettings.CdcPath"></a>

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](#CHAP_Target.S3).

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

```
operation,table_name,database_schema_name,field_value,...
```

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

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

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

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

 AWS DMS Benennt außerdem die Transaktionsdateien, die es auf dem Amazon S3 S3-Ziel erstellt, mithilfe eines Zeitstempels gemäß der folgenden Namenskonvention.

```
CDC_TXN-timestamp.csv
```

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

```
CDC_TXN-20201117153046033.csv
```

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

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

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](#CHAP_Target.S3.Configuring). 

**Gibt AWS DMS an, dass alle Zeilenänderungen in der Reihenfolge der Transaktionen gespeichert werden sollen**

1. Legen Sie für die S3-Einstellung `PreserveTransactions` auf dem Ziel `true` fest.

1. 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
<a name="CHAP_Target.S3.Configuring.InsertOps"></a>

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
<a name="CHAP_Target.S3.DataTypes"></a>

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 unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


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

# Verwenden einer Amazon DynamoDB DynamoDB-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.DynamoDB"></a>

Sie können AWS DMS es verwenden, um Daten in eine Amazon DynamoDB-Tabelle zu migrieren. Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankservice, der schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit bietet. AWS DMS unterstützt die Verwendung einer relationalen Datenbank oder MongoDB als Quelle.

In DynamoDB sind Tabellen, Elemente und Attribute die zentralen Komponenten, mit denen Sie arbeiten. Eine *Tabelle* ist eine Sammlung von Elementen und jedes *Element* wiederum eine Sammlung von Attributen. DynamoDB nutzt die als Partitionsschlüssel bezeichneten Primärschlüssel, um jedes Element in einer Tabelle eindeutig zu identifizieren. Sie können auch Schlüssel und sekundäre Indizes verwenden, um die Abfrage flexibler zu gestalten.

Verwenden Sie Objektzuordnungen zum Migrieren Ihrer Daten aus einer Quelldatenbank in eine DynamoDB-Zieltabelle. Anhand von Objektzuweisungen können Sie bestimmen, wo sich die Quelldaten in der Zieltabelle befinden. 

Wenn AWS DMS Tabellen auf einem DynamoDB-Zielendpunkt erstellt werden, werden so viele Tabellen wie auf dem Quelldatenbank-Endpunkt erstellt. AWS DMS legt auch mehrere DynamoDB-Parameterwerte fest. Die Kosten für die Erstellung der Tabelle sind abhängig von der Datenmenge und der Anzahl der zu migrierenden Tabellen.

**Anmerkung**  
Die Option **SSL-Modus** auf der AWS DMS Konsole oder API gilt nicht für einige Datenstreaming- und NoSQL-Dienste wie Kinesis und DynamoDB. **Sie sind standardmäßig sicher, sodass AWS DMS angezeigt wird, dass die Einstellung für den SSL-Modus auf „Keine“ gesetzt ist (SSL-Modus=Keine).** Sie müssen keine zusätzliche Konfiguration für Ihren Endpunkt angeben, um SSL verwenden zu können. Wenn Sie beispielsweise DynamoDB als Zielendpunkt verwenden, ist dies standardmäßig sicher. Alle API-Aufrufe an DynamoDB verwenden SSL, sodass keine zusätzliche SSL-Option am Endpunkt erforderlich ist. AWS DMS Mithilfe des HTTPS-Protokolls, das AWS DMS standardmäßig verwendet, wenn eine Verbindung mit einer DynamoDB-Datenbank hergestellt wird, können Sie Daten sicher über SSL-Endpunkte einfügen und abrufen.

 AWS DMS Unterstützt eine Multithread-Volllast auf eine DynamoDB-Zielinstanz, um die Übertragungsgeschwindigkeit zu erhöhen. DMS unterstützt Multithreading u. a. mithilfe der folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle mithilfe einer dedizierten Unteraufgabe in die entsprechende DynamoDB-Zieltabelle. Der Standardwert ist 8. Der Höchstwert ist 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre DynamoDB-Zieltabelle zu laden. Der Standardwert ist 0 (Single-Thread). Der maximale Wert beträgt 200. Sie können eine Erhöhung dieses Höchstwerts anfordern.
**Anmerkung**  
DMS weist jedem Segment einer Tabelle einen eigenen Thread zum Laden zu. Geben Sie aus diesem Grund für `ParallelLoadThreads` die maximale Anzahl der Segmente an, die Sie für eine Tabelle in der Quelle verwenden werden.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die parallelen Lade-Threads zum Laden von Daten in das DynamoDB-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ Table-Mapping-Einstellungen für einzelne Tabellen – Verwenden Sie `table-settings`-Regeln, um einzelne Tabellen von der Quelle zu unterscheiden, die Sie parallel laden möchten. Verwenden Sie diese Regeln darüber hinaus, um festzulegen, wie die Zeilen jeder Tabelle für das Multithread-Laden aufgegliedert werden sollen. Weitere Informationen finden Sie unter [Regeln und Operationen für Tabellen- und Sammlungseinstellungen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

**Anmerkung**  
Wenn DynamoDB-Parameterwerte für eine Migrationsaufgabe AWS DMS festgelegt werden, ist der Standardparameterwert für Read Capacity Units (RCU) auf 200 festgelegt.  
Der Schreibkapazitätseinheiten (WCU)-Parameterwert ist auch festgelegt, aber sein Wert hängt von mehreren anderen Einstellungen ab:  
Der Standardwert für den WCU-Parameter lautet 200.
Wenn die Einstellung für die `ParallelLoadThreads`-Aufgabe größer als 1 ist (der Standard ist 0), dann wird der WCU-Parameter auf das 200-fache des `ParallelLoadThreads`-Werts festgelegt.
Für die von Ihnen verwendeten Ressourcen fallen die AWS DMS Standardnutzungsgebühren an.

## Migrieren aus einer relationalen Datenbank in eine DynamoDB-Tabelle
<a name="CHAP_Target.DynamoDB.RDBMS2DynamoDB"></a>

AWS DMS unterstützt die Migration von Daten zu skalaren DynamoDB-Datentypen. Bei der Migration von Daten aus einer relationalen Datenbank wie Oracle oder MySQL zu DynamoDB sollten Sie die Art und Weise, wie Sie diese Daten speichern, umstrukturieren.

 AWS DMS Unterstützt derzeit die Umstrukturierung von einzelnen Tabellen zu einzelnen Tabellen zu skalaren DynamoDB-Attributen. Wenn Sie Daten aus einer relationalen Datenbanktabelle zu DynamoDB migrieren, formatieren Sie die Daten aus einer Tabelle in die skalaren DynamoDB-Datentypattribute um. Diese Attribute können Daten aus mehreren Spalten aufnehmen und Sie können eine Spalte direkt einem Attribut zuweisen.

AWS DMS unterstützt die folgenden skalaren DynamoDB-Datentypen:
+ Zeichenfolge
+ Zahl
+ Boolesch

**Anmerkung**  
NULL-Daten aus der Quelle werden auf dem Ziel ignoriert.

## Voraussetzungen für die Verwendung von DynamoDB als Ziel für AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Prerequisites"></a>

Bevor Sie mit der Arbeit mit einer DynamoDB-Datenbank als Ziel für beginnen, stellen Sie sicher AWS DMS, dass Sie eine IAM-Rolle erstellen. Diese IAM-Rolle sollte es ermöglichen AWS DMS , Zugriff auf die DynamoDB-Tabellen zu übernehmen und zu gewähren, in die migriert wird. In der folgenden IAM-Richtlinie sind die Mindestzugriffsberechtigungen dargestellt.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
            "Service": "dms.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
      }
   ]
}
```

------

Die Rolle, die Sie für die Migration zu DynamoDB verwenden, muss die folgenden Berechtigungen aufweisen:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:CreateTable",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteTable",
                "dynamodb:DeleteItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:111122223333:table/name1",
                "arn:aws:dynamodb:us-west-2:111122223333:table/OtherName*",
                "arn:aws:dynamodb:us-west-2:111122223333:table/awsdms_apply_exceptions",
                "arn:aws:dynamodb:us-west-2:111122223333:table/awsdms_full_load_exceptions"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:ListTables"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Einschränkungen bei der Verwendung von DynamoDB als Ziel für AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Limitations"></a>

Die folgenden Einschränkungen gelten bei Verwendung von DynamoDB als Ziel:
+ DynamoDB begrenzt die Genauigkeit des Number-Datentyps auf 38 Stellen. Speichern Sie alle Datentypen mit einer höheren Genauigkeit als Zeichenfolge. Sie müssen dies explizit mithilfe der Objektzuweisungsfunktion festlegen.
+ Da DynamoDB keinen Date-Datentyp hat, werden die Daten, die diesen Datentyp verwenden, in Zeichenfolgen umgewandelt.
+ DynamoDB lässt keine Aktualisierungen der Primärschlüssel-Attribute zu. Diese Einschränkung ist wichtig, wenn Sie die laufende Replikation mit Change Data Capture (CDC) verwenden, da sie zu unerwünschten Daten im Ziel führen kann. Je nachdem, wie Sie das Objekt zuweisen, kann eine CDC-Operation, die den Primärschlüssel aktualisiert, Folgendes tun. Es kann entweder fehlschlagen oder ein neues Element mit dem aktualisierten Primärschlüssel und unvollständigen Daten einfügen.
+ AWS DMS unterstützt nur die Replikation von Tabellen mit nicht zusammengesetzten Primärschlüsseln. Die Ausnahme ist, wenn Sie eine Objektzuweisung für die Zieltabelle mit einem benutzerdefinierten Partitionsschlüssel oder Sortierschlüssel (oder beiden) festlegen.
+ AWS DMS unterstützt keine LOB-Daten, es sei denn, es handelt sich um ein CLOB. AWS DMS konvertiert CLOB-Daten bei der Migration der Daten in eine DynamoDB-Zeichenfolge.
+ Bei der Verwendung von DynamoDB als Ziel wird nur die Steuerungstabelle „Apply Exceptions (Ausnahmen anwenden)“ (`dmslogs.awsdms_apply_exceptions`) unterstützt. Weitere Informationen zu Steuerungstabellen finden Sie unter [Kontrolltabellen-Aufgabeneinstellungen](CHAP_Tasks.CustomizingTasks.TaskSettings.ControlTable.md).
+ AWS DMS unterstützt die Aufgabeneinstellung `TargetTablePrepMode=TRUNCATE_BEFORE_LOAD` für DynamoDB als Ziel nicht. 
+ AWS DMS unterstützt die Aufgabeneinstellung `TaskRecoveryTableEnabled` für DynamoDB als Ziel nicht. 
+ `BatchApply`wird für einen DynamoDB-Endpunkt nicht unterstützt.
+ AWS DMS kann keine Attribute migrieren, deren Namen mit reservierten Wörtern in DynamoDB übereinstimmen. Weitere Informationen finden Sie unter [Reservierte Wörter in DynamoDB im](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html) *Amazon DynamoDB Developer Guide*.

## Verwenden der Objektzuordnung zum Migrieren von Daten zu DynamoDB
<a name="CHAP_Target.DynamoDB.ObjectMapping"></a>

AWS DMS verwendet Tabellenzuordnungsregeln, um Daten aus der Quelle der DynamoDB-Zieltabelle zuzuordnen. Um Daten zu einem DynamoDB-Ziel zuzuweisen, verwenden Sie eine Art von Tabellenzuordnungsregel mit der Bezeichnung *object-mapping*. Mit Objektzuweisungen können Sie Attributnamen und die zu ihnen zu migrierenden Daten definieren. Bei der Verwendung der Objektzuweisung müssen Sie über Auswahlregeln verfügen.

DynamoDB hat keine voreingestellte Struktur, mit Ausnahme eines Partitionsschlüssels und eines optionalen Sortierschlüssels. Wenn Sie einen Primärschlüssel haben, der nicht zusammengesetzt ist, verwendet ihn. AWS DMS Wenn Sie über einen zusammengesetzten Primärschlüssel verfügen oder einen Sortierschlüssel verwenden möchten, müssen Sie diese Schlüssel und die anderen Attribute in Ihrer DynamoDB-Zieltabelle definieren.

Zum Erstellen einer Objektzuweisungsregel legen Sie `rule-type` als *object-mapping* fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. 

Die Struktur für die Regel lautet wie folgt:

```
{ "rules": [
    {
      "rule-type": "object-mapping",
      "rule-id": "<id>",
      "rule-name": "<name>",
      "rule-action": "<valid object-mapping rule action>",
      "object-locator": {
      "schema-name": "<case-sensitive schema name>",
      "table-name": ""
      },
      "target-table-name": "<table_name>"
    }
  ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den `rule-action` Parameter. Diese Werte geben an, AWS DMS was standardmäßig mit Datensätzen geschieht, die nicht in der `exclude-columns` Attributliste ausgeschlossen sind. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 
+ Sie können `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu DynamoDB verwenden. Dabei wird der Primärschlüssel aus der relationalen Datenbank als Partitionsschlüssel in DynamoDB verwendet und für jede Spalte in der Quelldatenbank wird ein Attribut erstellt. Bei Verwendung wird für jede Spalte in der Quelltabelle`map-record-to-record`, die nicht in der `exclude-columns` Attributliste aufgeführt ist, ein entsprechendes Attribut auf der DynamoDB-Zielinstanz AWS DMS erstellt. Dies geschieht unabhängig davon, ob diese Quellspalte in einer Attributzuweisung verwendet wird oder nicht. 
+ Verwenden Sie `map-record-to-document`, um Quellspalten mithilfe des Attributnamens „\$1doc“ in einer einzelnen, flachen DynamoDB-Zuordnung auf dem Ziel zu platzieren. Platziert bei Verwendung `map-record-to-document` die Daten in einem einzigen, flachen DynamoDB-Kartenattribut auf der Quelle. AWS DMS Dieses Attribut hat den Namen "\$1doc". Diese Platzierung gilt für jede Spalte der Quelltabelle, die nicht in der `exclude-columns`-Attributliste aufgeführt ist. 

Der Unterschied zwischen den `rule-action`-Parametern `map-record-to-record` und `map-record-to-document` lässt sich am besten verstehen, wenn Sie die beiden Parameter in Aktion erleben. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält:

![\[Beispieldatenbank\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-dynamodb1.png)


Um diese Informationen zu DynamoDB zu migrieren, erstellen Sie Regeln zum Zuweisen der Daten in ein DynamoDB-Tabellenelement. Beachten Sie die für den `exclude-columns`-Parameter aufgeführten Spalten. Diese Spalten werden nicht direkt dem Ziel zugewiesen. Stattdessen wird die Attributzuordnung verwendet, um die Daten zu neuen Elementen zu kombinieren, z. B. wo *FirstName*und *LastName*werden gruppiert, sodass sie *CustomerName*auf dem DynamoDB-Ziel liegen. *NickName*und *Einkommen* sind nicht ausgeschlossen.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "dynamodb-map",
                        "value": {
                            "M": {
                                "Home": {
                                    "M": {
                                        "Address": {
                                            "S": "${HomeAddress}"
                                        },
                                        "Phone": {
                                            "S": "${HomePhone}"
                                        }
                                    }
                                },
                                "Work": {
                                    "M": {
                                        "Address": {
                                            "S": "${WorkAddress}"
                                        },
                                        "Phone": {
                                            "S": "${WorkPhone}"
                                        }
                                    }
                                }
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Mithilfe des `rule-action` Parameters *map-record-to-record*werden die Daten für *NickName*und das *Einkommen* den gleichnamigen Elementen im DynamoDB-Ziel zugeordnet. 

![\[Fangen Sie an mit AWS DMS\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-dynamodb2.png)


Nehmen wir jedoch an, dass Sie dieselben Regeln verwenden, aber den `rule-action` Parameter in ändern *map-record-to-document*. In diesem Fall werden die Spalten, die nicht im `exclude-columns` Parameter aufgeführt sind, *NickName*und das *Einkommen* einem *\$1doc-Element* zugeordnet.

![\[Fangen Sie an mit AWS DMS\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-dynamodb3.png)


### Verwenden von benutzerdefinierten Bedingungsausdrücken mit Objektzuweisung
<a name="CHAP_Target.DynamoDB.ObjectMapping.ConditionExpression"></a>

Sie können das DynamoDB-Feature für Bedingungsausdrücke verwenden, um Daten zu bearbeiten, die in eine DynamoDB-Tabelle geschrieben werden. Weitere Informationen zu Bedingungsausdrücken in DynamoDB finden Sie unter [Bedingungsausdrücke](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html).

Ein Bedingungsausdruckselement besteht aus: 
+ einem Ausdruck (erforderlich) 
+ Ausdrucksattributwerte (erforderlich). Gibt eine DynamoDB-JSON-Struktur des Attributwerts an. Dies ist nützlich, um ein Attribut mit einem Wert in DynamoDB zu vergleichen, den Sie möglicherweise erst zur Laufzeit kennen. Sie können einen Ausdrucksattributwert als Platzhalter für einen tatsächlichen Wert definieren.
+ Namen von Ausdrucksattributen (erforderlich). Dadurch können potenzielle Konflikte mit reservierten DynamoDB-Wörtern, Attributnamen, die Sonderzeichen enthalten, und Ähnlichem vermieden werden.
+ Optionen für die Verwendung des Bedingungsausdrucks (optional). Die Standardeinstellung ist apply-during-cdc = falsch und apply-during-full-load = wahr

Die Struktur für die Regel lautet wie folgt:

```
"target-table-name": "customer_t",
      "mapping-parameters": {
        "partition-key-name": "CustomerName",
        "condition-expression": {
          "expression":"<conditional expression>",
          "expression-attribute-values": [
              {
                "name":"<attribute name>",
                "value":<attribute value>
              }
          ],
          "apply-during-cdc":<optional Boolean value>,
          "apply-during-full-load": <optional Boolean value>
        }
```

Im folgenden Beispiel werden die für den Bedingungsausdruck verwendeten Abschnitte hervorgehoben.

![\[Fangen Sie an mit AWS DMS\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-Tasks-conditional1.png)


### Verwenden der Attributzuweisung mit Objektzuweisung
<a name="CHAP_Target.DynamoDB.ObjectMapping.AttributeMapping"></a>

Mit Attributzuweisungen können Sie eine Vorlagenzeichenfolge festlegen, indem Sie anhand von Quellspaltennamen Daten auf dem Ziel umstrukturieren. Es wird keine Formatierung vorgenommen, außer den Angaben, die der Benutzer für die Vorlage festlegt.

Das folgende Beispiel zeigt die Struktur der Quelldatenbank und die gewünschte Struktur des DynamoDB-Ziels. Zuerst wird die Struktur der Quelle dargestellt, in diesem Fall eine Oracle-Datenbank, und dann die gewünschte Struktur der Daten in DynamoDB. Am Ende des Beispiels ist das JSON-Format dargestellt, mit dem die gewünschte Zielstruktur erstellt wird.

Die Struktur der Oracle-Daten ist im Folgenden angegeben:


****  

| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateOfBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Primärschlüssel | – |  | 
| Randy | Marsh | 5 | 221B Baker Street  | 1234567890 | 31 Spooner Street, Quahog  | 9876543210  | 02/29/1988  | 

Die Struktur der DynamoDB-Daten ist im Folgenden angegeben:


****  

| CustomerName | StoreId | ContactDetails | DateOfBirth | 
| --- | --- | --- | --- | 
| Partitionsschlüssel | Sortierschlüssel | – | 
| <pre>Randy,Marsh</pre> | <pre>5</pre> | <pre>{<br />    "Name": "Randy",<br />    "Home": {<br />        "Address": "221B Baker Street",<br />        "Phone": 1234567890<br />    },<br />    "Work": {<br />        "Address": "31 Spooner Street, Quahog",<br />        "Phone": 9876541230<br />    }<br />}</pre> | <pre>02/29/1988</pre> | 

Im folgenden JSON-Beispiel sind die Objekt- und Spaltenzuordnungen dargestellt, mit denen die DynamoDB-Struktur erzielt wird:

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "sort-key-name": "StoreId",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "StoreId",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${StoreId}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "{\"Name\":\"${FirstName}\",\"Home\":{\"Address\":\"${HomeAddress}\",\"Phone\":\"${HomePhone}\"}, \"Work\":{\"Address\":\"${WorkAddress}\",\"Phone\":\"${WorkPhone}\"}}"
                    }
                ]
            }
        }
    ]
}
```

Alternativ kann bei der Spaltenzuordnung das DynamoDB-Format als Dokumenttyp verwendet werden. Im folgenden Codebeispiel wird *dynamodb-map* als `attribute-sub-type` für die Attributzuweisung verwendet. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "sort-key-name": "StoreId",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "StoreId",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${StoreId}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "dynamodb-map",
                        "value": {
                          "M": {
                            "Name": {
                              "S": "${FirstName}"
                            },
                            "Home": {
                                    "M": {
                                        "Address": {
                                            "S": "${HomeAddress}"
                                        },
                                        "Phone": {
                                            "S": "${HomePhone}"
                                        }
                                    }
                                },
                                "Work": {
                                    "M": {
                                        "Address": {
                                            "S": "${WorkAddress}"
                                        },
                                        "Phone": {
                                            "S": "${WorkPhone}"
                                        }
                                    }
                                }
                            }
                        }        
                    }
                ]
            }
        }
    ]
}
```

Als Alternative zu `dynamodb-map` können Sie das Attribut `dynamodb-list` as attribute-sub-type for verwenden, wie im folgenden Beispiel gezeigt.

```
{
"target-attribute-name": "ContactDetailsList",
"attribute-type": "document",
"attribute-sub-type": "dynamodb-list",
"value": {
    "L": [
            {
                "N": "${FirstName}"
            },
            {   
                "N": "${HomeAddress}"
            },
            {   
                "N": "${HomePhone}"
            },
            {
                "N": "${WorkAddress}"
            },
            {
                "N": "${WorkPhone}"
            }
        ]   
    }
}
```

### Beispiel 1: Verwenden der Attributzuweisung mit Objektzuweisung
<a name="CHAP_Target.DynamoDB.ColumnMappingExample1"></a>

Im folgenden Beispiel werden Daten aus zwei MySQL-Datenbanktabellen, *nfl\$1data und *sport\$1team**, in zwei DynamoDB-Tabellen mit dem Namen und migriert. *NFLTeams*SportTeams** Unten stehend ist die Tabellenstruktur und das JSON-Format angegeben, das zum Zuweisen der Daten aus den MySQL-Datenbanktabellen zu den DynamoDB-Tabellen verwendet wird.

Die Struktur der MySQL-Datenbanktabelle *nfl\$1data* ist im Folgenden dargestellt:

```
mysql> desc nfl_data;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| Position      | varchar(5)  | YES  |     | NULL    |       |
| player_number | smallint(6) | YES  |     | NULL    |       |
| Name          | varchar(40) | YES  |     | NULL    |       |
| status        | varchar(10) | YES  |     | NULL    |       |
| stat1         | varchar(10) | YES  |     | NULL    |       |
| stat1_val     | varchar(10) | YES  |     | NULL    |       |
| stat2         | varchar(10) | YES  |     | NULL    |       |
| stat2_val     | varchar(10) | YES  |     | NULL    |       |
| stat3         | varchar(10) | YES  |     | NULL    |       |
| stat3_val     | varchar(10) | YES  |     | NULL    |       |
| stat4         | varchar(10) | YES  |     | NULL    |       |
| stat4_val     | varchar(10) | YES  |     | NULL    |       |
| team          | varchar(10) | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+
```

Die Struktur der MySQL-Datenbanktabelle *sport\$1team* ist im Folgenden dargestellt:

```
mysql> desc sport_team;
+---------------------------+--------------+------+-----+---------+----------------+
| Field                     | Type         | Null | Key | Default | Extra          |
+---------------------------+--------------+------+-----+---------+----------------+
| id                        | mediumint(9) | NO   | PRI | NULL    | auto_increment |
| name                      | varchar(30)  | NO   |     | NULL    |                |
| abbreviated_name          | varchar(10)  | YES  |     | NULL    |                |
| home_field_id             | smallint(6)  | YES  | MUL | NULL    |                |
| sport_type_name           | varchar(15)  | NO   | MUL | NULL    |                |
| sport_league_short_name   | varchar(10)  | NO   |     | NULL    |                |
| sport_division_short_name | varchar(10)  | YES  |     | NULL    |                |
```

Im Folgenden sind die Tabellenzuordnungsregeln für die Zuordnung der zwei Tabellen zu den zwei DynamoDB-Tabellen aufgeführt:

```
{
  "rules":[
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "dms_sample",
        "table-name": "nfl_data"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "selection",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "dms_sample",
        "table-name": "sport_team"
      },
      "rule-action": "include"
    },
    {
      "rule-type":"object-mapping",
      "rule-id":"3",
      "rule-name":"MapNFLData",
      "rule-action":"map-record-to-record",
      "object-locator":{
        "schema-name":"dms_sample",
        "table-name":"nfl_data"
      },
      "target-table-name":"NFLTeams",
      "mapping-parameters":{
        "partition-key-name":"Team",
        "sort-key-name":"PlayerName",
        "exclude-columns": [
          "player_number", "team", "name"
        ],
        "attribute-mappings":[
          {
            "target-attribute-name":"Team",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${team}"
          },
          {
            "target-attribute-name":"PlayerName",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${name}"
          },
          {
            "target-attribute-name":"PlayerInfo",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"{\"Number\": \"${player_number}\",\"Position\": \"${Position}\",\"Status\": \"${status}\",\"Stats\": {\"Stat1\": \"${stat1}:${stat1_val}\",\"Stat2\": \"${stat2}:${stat2_val}\",\"Stat3\": \"${stat3}:${
stat3_val}\",\"Stat4\": \"${stat4}:${stat4_val}\"}"
          }
        ]
      }
    },
    {
      "rule-type":"object-mapping",
      "rule-id":"4",
      "rule-name":"MapSportTeam",
      "rule-action":"map-record-to-record",
      "object-locator":{
        "schema-name":"dms_sample",
        "table-name":"sport_team"
      },
      "target-table-name":"SportTeams",
      "mapping-parameters":{
        "partition-key-name":"TeamName",
        "exclude-columns": [
          "name", "id"
        ],
        "attribute-mappings":[
          {
            "target-attribute-name":"TeamName",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${name}"
          },
          {
            "target-attribute-name":"TeamInfo",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"{\"League\": \"${sport_league_short_name}\",\"Division\": \"${sport_division_short_name}\"}"
          }
        ]
      }
    }
  ]
}
```

Die Beispielausgabe für die *NFLTeams*DynamoDB-Tabelle ist unten dargestellt:

```
  "PlayerInfo": "{\"Number\": \"6\",\"Position\": \"P\",\"Status\": \"ACT\",\"Stats\": {\"Stat1\": \"PUNTS:73\",\"Stat2\": \"AVG:46\",\"Stat3\": \"LNG:67\",\"Stat4\": \"IN 20:31\"}",
  "PlayerName": "Allen, Ryan",
  "Position": "P",
  "stat1": "PUNTS",
  "stat1_val": "73",
  "stat2": "AVG",
  "stat2_val": "46",
  "stat3": "LNG",
  "stat3_val": "67",
  "stat4": "IN 20",
  "stat4_val": "31",
  "status": "ACT",
  "Team": "NE"
}
```

Die Beispielausgabe für die SportsTeams *DynamoDB-Tabelle* ist unten dargestellt:

```
{
  "abbreviated_name": "IND",
  "home_field_id": 53,
  "sport_division_short_name": "AFC South",
  "sport_league_short_name": "NFL",
  "sport_type_name": "football",
  "TeamInfo": "{\"League\": \"NFL\",\"Division\": \"AFC South\"}",
  "TeamName": "Indianapolis Colts"
}
```

## Zieldatentypen für DynamoDB
<a name="CHAP_Target.DynamoDB.DataTypes"></a>

Der DynamoDB-Endpunkt für AWS DMS unterstützt die meisten DynamoDB-Datentypen. Die folgende Tabelle zeigt die AWS DMS Amazon-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 unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).

Bei der AWS DMS Migration von Daten aus heterogenen Datenbanken ordnen wir Datentypen aus der Quelldatenbank Zwischendatentypen zu, die als Datentypen bezeichnet AWS DMS werden. Wir weisen dann die Zwischendatentypen zu den Zieldatentypen zu. Die folgende Tabelle zeigt jeden AWS DMS Datentyp und den Datentyp, dem er in DynamoDB zugeordnet ist:


| AWS DMS Datentyp | DynamoDB-Datentyp | 
| --- | --- | 
|  Zeichenfolge  |  Zeichenfolge  | 
|  WString  |  Zeichenfolge  | 
|  Boolesch  |  Boolesch  | 
|  Datum  |  Zeichenfolge  | 
|  DateTime  |  Zeichenfolge  | 
|  INT1  |  Zahl  | 
|  INT2  |  Zahl  | 
|  INT4  |  Zahl  | 
|  INT8  |  Zahl  | 
|  Numerischer Wert  |  Zahl  | 
|  Real4  |  Zahl  | 
|  Real8  |  Zahl  | 
|  UINT1  |  Zahl  | 
|  UINT2  |  Zahl  | 
|  UINT4  |  Zahl  | 
| UINT8 | Zahl | 
| CLOB | Zeichenfolge | 

# Verwendung von Amazon Kinesis Data Streams als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis"></a>

Sie können AWS DMS es verwenden, um Daten in einen Amazon Kinesis Kinesis-Datenstream zu migrieren. Amazon-Kinesis-Datenströme sind Teil des Service Amazon Kinesis Data Streams. Sie können Kinesis-Datenströme zum Erfassen und Verarbeiten großer Ströme von Datensätzen in Echtzeit nutzen.

Ein Kinesis-Datenstrom besteht aus Shards. *Shards* sind eindeutig identifizierbare Sequenzen von Datensätzen in einem Stream. Weitere Informationen zu Shards in Amazon Kinesis Data Streams finden Sie unter [Shard](https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html#shard) im *Amazon-Kinesis-Data-Streams-Entwicklerhandbuch*.

AWS Database Migration Service veröffentlicht Datensätze mithilfe von JSON in einem Kinesis-Datenstream. Während der Konvertierung serialisiert AWS DMS jeden Datensatz aus der Quelldatenbank in ein Attributwertpaar im JSON-Format oder in ein JSON\$1UNFORMATTED-Nachrichtenformat. Ein JSON\$1UNFORMATTED-Nachrichtenformat ist eine einzeilige JSON-Zeichenfolge mit neuem Zeilenbegrenzer. Es ermöglicht Amazon Data Firehose, Kinesis-Daten an ein Amazon S3 S3-Ziel zu senden und sie dann mit verschiedenen Abfrage-Engines, einschließlich Amazon Athena, abzufragen.

Sie verwenden die Objektzuweisung zum Migrieren Ihrer Daten von einer unterstützten Datenquelle zu einem Ziel-Stream. Mit der Objektzuweisung bestimmen Sie, wie die Datensätze im Stream zu strukturieren sind. Außerdem definieren Sie einen Partitionsschlüssel für jede Tabelle, die Kinesis Data Streams zum Gruppieren der Daten in Shards verwendet. 

AWS DMS legt auch mehrere Kinesis Data Streams Streams-Parameterwerte fest. Die Kosten für die Erstellung der Tabelle sind abhängig von der Datenmenge und der Anzahl der zu migrierenden Tabellen.

**Anmerkung**  
Die Option **SSL-Modus** auf der AWS DMS Konsole oder API gilt nicht für einige Datenstreaming- und NoSQL-Dienste wie Kinesis und DynamoDB. **Sie sind standardmäßig sicher, sodass AWS DMS angezeigt wird, dass die Einstellung für den SSL-Modus auf „Keine“ gesetzt ist (SSL-Modus=Keine).** Sie müssen keine zusätzliche Konfiguration für Ihren Endpunkt angeben, um SSL verwenden zu können. Wenn Sie beispielsweise Kinesis als Zielendpunkt verwenden, ist dies standardmäßig sicher. Alle API-Aufrufe an Kinesis verwenden SSL, sodass keine zusätzliche SSL-Option am AWS DMS Endpunkt erforderlich ist. Mithilfe des HTTPS-Protokolls, das AWS DMS standardmäßig verwendet, wenn eine Verbindung zu einem Kinesis-Datenstrom hergestellt wird, können Sie Daten sicher über SSL-Endpunkte einfügen und abrufen.

**Kinesis-Data-Streams-Endpunkteinstellungen**

Wenn Sie Kinesis Data Streams Streams-Zielendpunkte verwenden, können Sie Transaktions- und Kontrolldetails mithilfe der `KinesisSettings` Option in der AWS DMS API abrufen. 

Sie können die Verbindungseinstellungen auf eine der folgenden Weisen festlegen:
+ In der AWS DMS Konsole mithilfe der Endpunkteinstellungen.
+ In der CLI mit der `kinesis-settings` Option des [CreateEndpoint](https://docs.aws.amazon.com/dms/latest/APIReference/API_CreateEndpoint.html)Befehls.

Verwenden Sie in der CLI die folgenden Anforderungsparameter der Option `kinesis-settings`:
**Anmerkung**  
Unterstützung für die Endpunkteinstellung `IncludeNullAndEmpty` ist in AWS DMS -Version 3.4.1 und höher verfügbar. Unterstützung für die anderen folgenden Endpunkteinstellungen für Kinesis Data Streams Streams-Ziele ist jedoch in AWS DMS verfügbar. 
+ `MessageFormat` – Das Ausgabeformat für die Datensätze, die auf dem Endpunkt erstellt wurden. Das Nachrichtenformat ist `JSON` (Standard) oder `JSON_UNFORMATTED` (eine einzelne Zeile ohne Tabulator).
+ `IncludeControlDetails` – Zeigt detaillierte Steuerungsinformationen für Tabellendefinition, Spaltendefinition und Tabellen- und Spaltenänderungen in der Kinesis-Nachrichtenausgabe an. Der Standardwert ist `false`.
+ `IncludeNullAndEmpty` – Schließt NULL-Spalten und leere Spalten in das Ziel ein. Der Standardwert ist `false`.
+ `IncludePartitionValue` – Zeigt den Partitionswert innerhalb der Kinesis-Nachrichtenausgabe an, es sei denn, der Partitionstyp ist `schema-table-type`. Der Standardwert ist `false`.
+ `IncludeTableAlterOperations` – Enthält alle DDL-Operationen (DDL = Data Definition Language), die die Tabelle in den Steuerungsdaten ändern, wie etwa `rename-table`, `drop-table`, `add-column`, `drop-column` und `rename-column`. Der Standardwert ist `false`.
+ `IncludeTransactionDetails` – Stellt detaillierte Transaktionsinformationen aus der Quelldatenbank bereit. Diese Informationen beinhalten einen Durchführungszeitstempel, eine Protokollposition sowie Werte für `transaction_id`, `previous_transaction_id` und `transaction_record_id ` (den Datensatzoffset innerhalb einer Transaktion). Der Standardwert ist `false`.
+ `PartitionIncludeSchemaTable` – Fügt Schema- und Tabellennamen zu Partitionswerten als Präfix hinzu, wenn der Partitionstyp `primary-key-type` ist. Dadurch wird die Datenverteilung zwischen Kinesis-Shards erhöht. Angenommen, ein `SysBench`-Schema hat Tausende von Tabellen und jede davon hat nur einen begrenzten Bereich für einen Primärschlüssel. In diesem Fall wird derselbe Primärschlüssel von Tausenden von Tabellen an denselben Shard gesendet, was zu einer Drosselung führt. Der Standardwert ist `false`.
+ `UseLargeIntegerValue`— Verwenden Sie bis zu 18-stellige Ganzzahlen, anstatt Ganzzahlen in Doppelzahlen umzuwandeln. Diese Option ist ab AWS DMS Version 3.5.4 verfügbar. Der Standardwert lautet „false“.

Das folgende Beispiel zeigt die Option `kinesis-settings` mit einem Beispielbefehl `create-endpoint`, der über die AWS CLI ausgegeben wird.

```
aws dms \
  create-endpoint \
    --region <aws-region> \
    --endpoint-identifier <user-endpoint-identifier> \
    --endpoint-type target \
    --engine-name kinesis \
    --kinesis-settings ServiceAccessRoleArn=arn:aws:iam::<account-id>:role/<kinesis-role-name>,StreamArn=arn:aws:kinesis:<aws-region>:<account-id>:stream/<stream-name>,MessageFormat=json-unformatted,
IncludeControlDetails=true,IncludeTransactionDetails=true,IncludePartitionValue=true,PartitionIncludeSchemaTable=true,
IncludeTableAlterOperations=true
```

**Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge**

 AWS DMS Unterstützt eine Multithread-Volllast auf eine Kinesis Data Streams Streams-Ziel-Instance, um die Übertragungsgeschwindigkeit zu erhöhen. DMS unterstützt Multithreading u. a. mithilfe der folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle in die entsprechende Kinesis-Zieltabelle mithilfe einer dedizierten Unteraufgabe. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre Kinesis-Zieltabelle zu laden. Der Höchstwert für ein Kinesis-Data-Streams-Ziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die parallelen Lade-Threads zum Laden von Daten in das Kinesis-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ `ParallelLoadQueuesPerThread` – Verwenden Sie diese Option, um die Anzahl der Warteschlangen anzugeben, auf die jeder gleichzeitige Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und eine Stapellast für das Ziel zu generieren. Der Standardwert ist 1. Für Kinesis-Ziele mit verschiedenen Nutzlastgrößen beträgt der gültige Bereich jedoch 5–512 Warteschlangen pro Thread.

**Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge**

Sie können die Leistung der Änderungsdatenerfassung (Change Data Capture, CDC) für Echtzeitdaten-Streaming-Zielendpunkte wie Kinesis mithilfe von Aufgabeneinstellungen verbessern, die das Verhalten des API–Aufrufs `PutRecords` ändern. Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last durchführen und 128 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 

 AWS DMS Unterstützt die folgenden Task-Einstellungen, um die CDC-Leistung zu verbessern:
+ `ParallelApplyThreads`— Gibt die Anzahl der gleichzeitigen Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen Kinesis-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während einer CDC-Last an einen Kinesis-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der maximale Wert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während des CDC eine Stapellast für einen Kinesis-Endpunkt zu generieren. Der Standardwert ist 1 und der maximale Wert 512.

Wenn Sie `ParallelApply*`-Aufgabeneinstellungen verwenden, ist der `primary-key` der Tabelle der `partition-key-type`-Standardwert, nicht `schema-name.table-name`.

## Verwenden eines Vorher-Abbilds zum Anzeigen von Originalwerten von CDC-Zeilen für einen Kinesis-Datenstrom als Ziel
<a name="CHAP_Target.Kinesis.BeforeImage"></a>

Wenn Sie CDC-Aktualisierungen in ein Data-Streaming-Ziel wie Kinesis schreiben, können Sie die ursprünglichen Werte einer Quelldatenbankzeile vor der Änderung durch eine Aktualisierung anzeigen. Um dies zu ermöglichen, AWS DMS füllt es ein *Vorher-Image* der Aktualisierungsereignisse auf der Grundlage von Daten aus, die von der Quelldatenbank-Engine bereitgestellt werden. 

Verschiedene Quelldatenbank-Engines liefern unterschiedliche Mengen an Informationen für ein Vorher-Abbild: 
+ Oracle stellt für Spalten nur dann Aktualisierungen bereit, wenn sie sich ändern. 
+ PostgreSQL stellt nur Daten für Spalten bereit, die Teil des Primärschlüssels sind (geändert oder nicht). Um Daten für alle Spalten (geändert oder nicht) bereitzustellen, müssen Sie `FULL` statt `DEFAULT` für `REPLICA_IDENTITY` festlegen. Beachten Sie, dass Sie die Einstellung `REPLICA_IDENTITY` für jede Tabelle sorgfältig auswählen sollten. Wenn Sie für `REPLICA_IDENTITY` `FULL` festlegen, werden alle Spaltenwerte kontinuierlich in das Write-Ahead Logging (WAL) geschrieben. Dies kann bei Tabellen, die häufig aktualisiert werden, zu Leistungs- oder Ressourcenproblemen führen.
+ MySQL stellt generell Daten für alle Spalten außer für BLOB- und CLOB-Datentypen bereit (geändert oder nicht).

Verwenden Sie entweder die `BeforeImageSettings`-Aufgabeneinstellung oder den `add-before-image-columns`-Parameter, um die Erstellung von Vorher-Abbildern zum Hinzufügen von Originalwerten aus der Quelldatenbank zur AWS DMS -Ausgabe zu aktivieren. Dieser Parameter wendet eine Spalten-Transformationsregel an. 

`BeforeImageSettings` fügt jeder Aktualisierungsoperation ein neues JSON-Attribut mit Werten hinzu, die aus dem Quelldatenbanksystem erfasst werden, wie nachfolgend gezeigt.

```
"BeforeImageSettings": {
    "EnableBeforeImage": boolean,
    "FieldName": string,  
    "ColumnFilter": pk-only (default) / non-lob / all (but only one)
}
```

**Anmerkung**  
Gilt nur für `BeforeImageSettings` AWS DMS Aufgaben, die eine CDC-Komponente enthalten, z. B. Volllast- und CDC-Aufgaben (bei denen vorhandene Daten migriert und laufende Änderungen repliziert werden), oder für reine CDC-Aufgaben (bei denen nur Datenänderungen repliziert werden). Wenden Sie `BeforeImageSettings` nicht auf Nur-Volllast-Aufgaben an.

Für `BeforeImageSettings`-Optionen gilt Folgendes:
+ Legen Sie die `EnableBeforeImage`-Option vor dem Imaging auf `true` fest. Der Standardwert ist `false`. 
+ Verwenden Sie die `FieldName`-Option, um dem neuen JSON-Attribut einen Namen zuzuweisen. Wann `EnableBeforeImage` `true` ist, ist `FieldName` erforderlich und darf nicht leer sein.
+ Die `ColumnFilter`-Option gibt eine Spalte an, die vor dem Imaging hinzugefügt werden soll. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, verwenden Sie den Standardwert `pk-only`. Wenn Sie eine Spalte hinzufügen möchten, die einen Vorher-Abbild-Wert hat, verwenden Sie `all`. Beachten Sie, dass das Vorher-Abbild keine Spalten mit LOB-Datentypen wie CLOB oder BLOB enthält.

  ```
  "BeforeImageSettings": {
      "EnableBeforeImage": true,
      "FieldName": "before-image",
      "ColumnFilter": "pk-only"
    }
  ```

**Anmerkung**  
Amazon-S3-Ziele unterstützen `BeforeImageSettings` nicht. Verwenden Sie für S3-Ziele nur die `add-before-image-columns`-Transformationsregel, die vor de- Imaging während des CDC-Vorgangs ausgeführt werden soll.

### Verwenden einer Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kinesis.BeforeImage.Transform-Rule"></a>

Alternativ zu den Aufgabeneinstellungen können Sie den `add-before-image-columns`-Parameter verwenden, der eine Spalten-Transformationsregel anwendet. Mit diesem Parameter können Sie das Vorher-Abbild während des CDC-Vorgangs auf Data-Streaming-Zielen wie Kinesis aktivieren. 

Wenn Sie `add-before-image-columns` in einer Transformationsregel verwenden, können Sie eine feinere Steuerung der Ergebnisse für das Vorher-Abbild anwenden. Mit Transformationsregeln können Sie einen Objekt-Locator verwenden, der Ihnen die Kontrolle über die für die Regel ausgewählten Tabellen gibt. Außerdem können Sie Transformationsregeln miteinander verketten, wodurch verschiedene Regeln auf verschiedene Tabellen angewendet werden können. Anschließend können Sie die erzeugten Spalten mithilfe anderer Regeln bearbeiten. 

**Anmerkung**  
Verwenden Sie den `add-before-image-columns`-Parameter nicht zusammen mit der `BeforeImageSettings`-Aufgabeneinstellung innerhalb derselben Aufgabe. Verwenden Sie stattdessen entweder den Parameter oder die Einstellung, aber nicht beide, für eine einzelne Aufgabe.

Ein `transformation`-Regeltyp mit dem `add-before-image-columns`-Parameter für eine Spalte muss einen `before-image-def`-Abschnitt bereitstellen. Es folgt ein Beispiel.

```
    {
      "rule-type": "transformation",
      …
      "rule-target": "column",
      "rule-action": "add-before-image-columns",
      "before-image-def":{
        "column-filter": one-of  (pk-only / non-lob / all),
        "column-prefix": string,
        "column-suffix": string,
      }
    }
```

Der Wert von `column-prefix` wird einem Spaltennamen vorangestellt, und der Standardwert von `column-prefix` ist `BI_`. Der Wert von `column-suffix` wird an den Spaltennamen angehängt, und der Standardwert ist leer. Setzen Sie nicht `column-prefix` und `column-suffix` auf leere Zeichenfolgen.

Wählen Sie einen Wert für `column-filter`. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, wählen Sie `pk-only` . Wählen Sie `non-lob`, um nur Spalten hinzuzufügen, die nicht vom LOB-Typ sind. Oder lassen`all` Sie eine Spalte hinzufügen, die einen Vorher-Abbild-Wert hat.

### Beispiel für eine Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kinesis.BeforeImage.Example"></a>

Die Transformationsregel im folgenden Beispiel fügt eine neue Spalte mit dem Namen `BI_emp_no` auf dem Ziel hinzu. Eine Anweisung wie `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` füllt daher das `BI_emp_no` Feld mit 1. Wenn Sie CDC-Aktualisierungen für Amazon-S3-Ziele schreiben, ermöglicht die `BI_emp_no`-Spalte, zu erkennen, welche ursprüngliche Zeile aktualisiert wurde.

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "%",
        "table-name": "%"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "%",
        "table-name": "employees"
      },
      "rule-action": "add-before-image-columns",
      "before-image-def": {
        "column-prefix": "BI_",
        "column-suffix": "",
        "column-filter": "pk-only"
      }
    }
  ]
}
```

Weitere Informationen zur Verwendung der `add-before-image-columns`-Regelaktion finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Voraussetzungen für die Verwendung eines Kinesis-Datenstroms als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites"></a>

### IAM-Rolle für die Verwendung eines Kinesis-Datenstroms als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.IAM"></a>

Bevor Sie einen Kinesis-Datenstream als Ziel für einrichten, stellen Sie sicher AWS DMS, dass Sie eine IAM-Rolle erstellen. Diese Rolle muss es ermöglichen AWS DMS , Zugriff auf die Kinesis-Datenströme zu übernehmen und zu gewähren, in die migriert werden. In der folgenden IAM-Richtlinie sind die Mindestzugriffsberechtigungen dargestellt.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
     "Sid": "1",
     "Effect": "Allow",
     "Principal": {
        "Service": "dms.amazonaws.com"
     },
   "Action": "sts:AssumeRole"
   }
]
}
```

------

Die Rolle, die Sie für die Migration zu einem Kinesis-Datenstrom verwenden, muss über die folgenden Berechtigungen verfügen.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kinesis:DescribeStream",
        "kinesis:PutRecord",
        "kinesis:PutRecords"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Zugreifen auf einen Kinesis-Datenstream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.Access"></a>

In AWS DMS Version 3.4.7 und höher müssen Sie einen der folgenden Schritte ausführen, um eine Verbindung zu einem Kinesis-Endpunkt herzustellen:
+ Konfigurieren von DMS für die Verwendung von VPC-Endpunkten. Informationen zur Konfiguration von VPC-Endpunkten finden Sie in [Konfiguration von VPC-Endpunkten für AWS DMS](CHAP_VPC_Endpoints.md).
+ Konfigurieren Sie DMS so, dass es öffentliche Routen verwendet, d. h. Ihre Replikations-Instance öffentlich zugänglich macht. Informationen zu Replikations-Instances finden Sie unter [Öffentliche und private Replikations-Instances](CHAP_ReplicationInstance.PublicPrivate.md).

## Einschränkungen bei der Verwendung von Kinesis Data Streams als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Limitations"></a>

Bei der Verwendung von Kinesis Data Streams als Ziel gelten die folgenden Einschränkungen:
+ AWS DMS veröffentlicht jedes Update eines einzelnen Datensatzes in der Quelldatenbank als einen Datensatz in einem bestimmten Kinesis-Datenstrom, unabhängig von den Transaktionen. Sie können jedoch Transaktionsdetails für jeden Datensatz hinzufügen, indem Sie relevante Parameter der `KinesisSettings`-API verwenden.
+ Der vollständige LOB-Modus wird nicht unterstützt.
+ Die maximale unterstützte LOB-Größe beträgt 1 MB.
+ Kinesis Data Streams unterstützt keine Deduplizierung. Anwendungen, die Daten aus einem Stream aufnehmen, müssen doppelte Datensätze verarbeiten können. Weitere Informationen finden Sie unter [Umgang mit doppelten Datensätzen](https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-duplicates.html) im *Amazon-Kinesis-Data-Streams-Entwicklerhandbuch*.
+ AWS DMS unterstützt die folgenden vier Formen für Partitionsschlüssel:
  + `SchemaName.TableName`: Eine Kombination des Schema- und Tabellennamens.
  + `${AttributeName}`: Der Wert in einem der Felder in der JSON-Datei oder der Primärschlüssel der Tabelle in der Quelldatenbank.
  + `transaction-id`: Die CDC-Transaktions-ID. Alle Datensätze innerhalb derselben Transaktion gehen auf dieselbe Partition.
  + `constant`: Ein fester Literalwert für jeden Datensatz, unabhängig von Tabelle oder Daten. Alle Datensätze werden an denselben Partitionsschlüsselwert „constant“ gesendet, wodurch eine strikte globale Reihenfolge in allen Tabellen gewährleistet ist.

  ```
  {
      "rule-type": "object-mapping",
      "rule-id": "2",
      "rule-name": "PartitionKeyTypeExample",
      "rule-action": "map-record-to-document",
      "object-locator": {
          "schema-name": "onprem",
          "table-name": "it_system"
      },
      "mapping-parameters": {
          "partition-key-type": "transaction-id | constant | attribute-name | schema-table"
      }
  }
  ```
+ Weitere Informationen zum Verschlüsseln Ihrer Daten im Ruhezustand in Kinesis Data Streams finden Sie unter [Datenschutz in Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/server-side-encryption.html.html) im *AWS Key Management Service -Entwicklerhandbuch*. 
+ Die `IncludeTransactionDetails` Endpunkteinstellung wird nur unterstützt, wenn der Quellendpunkt Oracle, SQL Server, PostgreSQL oder MySQL ist. Bei anderen Quellendpunkttypen sind Transaktionsdetails nicht enthalten.
+ `BatchApply` wird für einen Kinesis-Endpunkt nicht unterstützt. Die Verwendung von Batch Apply (z. B. die `BatchApplyEnabled` Zielmetadaten-Aufgabeneinstellung) für ein Kinesis-Ziel führt zu Aufgabenfehlern und Datenverlust. Nicht aktivieren`BatchApply`, wenn Kinesis als Zielendpunkt verwendet wird.
+ Kinesis-Ziele werden nur für einen Kinesis-Datenstream im selben AWS Konto und in derselben AWS-Region Replikationsinstanz unterstützt.
+ Bei der Migration von einer MySQL-Quelle enthalten die BeforeImage Daten keine CLOB- und BLOB-Datentypen. Weitere Informationen finden Sie unter [Verwenden eines Vorher-Abbilds zum Anzeigen von Originalwerten von CDC-Zeilen für einen Kinesis-Datenstrom als Ziel](#CHAP_Target.Kinesis.BeforeImage).
+ AWS DMS unterstützt nicht die Migration von Werten mit einem `BigInt` Datentyp mit mehr als 16 Ziffern. Um diese Einschränkung zu umgehen, können Sie die folgende Transformationsregel verwenden, um die `BigInt`-Spalte in eine Zeichenfolge zu konvertieren. Informationen zu Transformationsregeln finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

  ```
  {
      "rule-type": "transformation",
      "rule-id": "id",
      "rule-name": "name",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "valid object-mapping rule action",
          "table-name": "",
          "column-name": ""
      },
      "rule-action": "change-data-type",
      "data-type": {
          "type": "string",
          "length": 20
      }
  }
  ```
+ Wenn mehrere DML-Operationen innerhalb einer einzigen Transaktion eine LOB-Spalte (Large Object) in der Quelldatenbank ändern, behält die Zieldatenbank nur den letzten LOB-Wert der letzten Operation in dieser Transaktion bei. Die LOB-Zwischenwerte, die durch frühere Operationen in derselben Transaktion festgelegt wurden, werden überschrieben, was zu potenziellem Datenverlust oder Inkonsistenzen führen kann. Dieses Verhalten ist darauf zurückzuführen, wie LOB-Daten während der Replikation verarbeitet werden.
+ AWS DMS unterstützt keine Quelldaten mit eingebetteten `'\0'` Zeichen, wenn Kinesis als Zielendpunkt verwendet wird. Daten, die eingebettete `'\0'` Zeichen enthalten, werden beim ersten `'\0'` Zeichen gekürzt.

## Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Kinesis-Datenstrom
<a name="CHAP_Target.Kinesis.ObjectMapping"></a>

AWS DMS verwendet Tabellenzuordnungsregeln, um Daten von der Quelle dem Kinesis-Zieldatenstrom zuzuordnen. Um Daten einem Ziel-Stream zuzuweisen , verwenden Sie eine Art von Tabellenzuweisungsregel, die als Objektzuweisung bezeichnet wird. Durch die Objektzuweisung legen Sie fest, wie Datensätze in der Quelle den im Kinesis-Datenstrom veröffentlichten Datensätzen zugewiesen werden. 

Kinesis-Datenströme verfügen bis auf einen Partitionsschlüssel über keine voreingestellte Struktur. In einer Objektzuweisungsregel sind die möglichen Werte eines `partition-key-type` für Datensätze `schema-table`, `transaction-id`, `primary-key`, `constant` und `attribute-name`.

Um eine Objektzuweisungsregel zu erstellen, legen Sie `rule-type` als `object-mapping` fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. 

Die Struktur für die Regel lautet wie folgt.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den Parameter. `rule-action` Diese Einstellungen wirken sich auf Werte aus, die nicht in der `exclude-columns`-Attributliste ausgeschlossen sind. Die `map-record-to-document` Werte `map-record-to-record` und geben an, wie diese Datensätze standardmäßig AWS DMS behandelt werden. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 

Verwenden Sie `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu einem Kinesis-Datenstrom. Dieser Regeltyp verwendet den `taskResourceId.schemaName.tableName`-Wert aus der relationalen Datenbank als Partitionsschlüssel im Kinesis-Datenstrom und erstellt ein Attribut für jede Spalte in der Quelldatenbank. 

Beachten Sie bei Verwendung von `map-record-to-record` Folgendes:
+ Diese Einstellung wirkt sich nur auf Spalten aus, die durch die `exclude-columns`-Liste ausgeschlossen wurden.
+  AWS DMS Erstellt für jede dieser Spalten ein entsprechendes Attribut im Zielthema.
+ AWS DMS erstellt dieses entsprechende Attribut unabhängig davon, ob die Quellspalte in einer Attributzuordnung verwendet wird. 

Verwenden Sie `map-record-to-document`, um Quellspalten in ein einziges, flaches Dokument im entsprechenden Ziel-Stream unter Verwendung des Attributnamens „\$1doc“ einzufügen. AWS DMS platziert die Daten in einer einzigen, flachen Zuweisung in der Quelle mit dem Namen „`_doc`“. Diese Platzierung gilt für jede Spalte der Quelltabelle, die nicht in der `exclude-columns`-Attributliste aufgeführt ist.

Eine Möglichkeit, `map-record-to-record` zu verstehen, besteht darin, sich die praktische Anwendung zu veranschaulichen. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Um diese Informationen von einem Schema mit dem Namen `Test` zu einem Kinesis-Datenstrom zu migrieren, erstellen Sie Regeln zur Zuordnung der Daten zu dem Zieldatenstrom. Die folgende Regel veranschaulicht die Zuweisung. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToKinesis",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Im Folgenden ist das resultierende Datensatzformat im Kinesis-Datenstrom dargestellt: 
+ StreamName: XXX
+ PartitionKey: Test.Customers //schmaname.tableName
+ Data: //Die folgende JSON-Meldung

  ```
    {
       "FirstName": "Randy",
       "LastName": "Marsh",
       "StoreId":  "5",
       "HomeAddress": "221B Baker Street",
       "HomePhone": "1234567890",
       "WorkAddress": "31 Spooner Street, Quahog",
       "WorkPhone": "9876543210",
       "DateOfBirth": "02/29/1988"
    }
  ```

Nehmen wir jedoch an, dass Sie dieselben Regeln verwenden, den `rule-action`-Parameter jedoch in `map-record-to-document` ändern und bestimmte Spalten ausschließen. Die folgende Regel veranschaulicht die Zuweisung.

```
{
	"rules": [
	   {
			"rule-type": "selection",
			"rule-id": "1",
			"rule-name": "1",
			"rule-action": "include",
			"object-locator": {
				"schema-name": "Test",
				"table-name": "%"
			}
		},
		{
			"rule-type": "object-mapping",
			"rule-id": "2",
			"rule-name": "DefaultMapToKinesis",
			"rule-action": "map-record-to-document",
			"object-locator": {
				"schema-name": "Test",
				"table-name": "Customers"
			},
			"mapping-parameters": {
				"exclude-columns": [
					"homeaddress",
					"homephone",
					"workaddress",
					"workphone"
				]
			}
		}
	]
}
```

In diesem Fall werden die nicht im `exclude-columns`-Parameter aufgeführten Spalten `FirstName`, `LastName`, `StoreId` und `DateOfBirth` zu `_doc` zugeordnet. Im Folgenden ist das resultierende Datensatzformat dargestellt. 

```
       {
            "data":{
                "_doc":{
                    "FirstName": "Randy",
                    "LastName": "Marsh",
                    "StoreId":  "5",
                    "DateOfBirth": "02/29/1988"
                }
            }
        }
```

### Umstrukturieren von Daten mit Attributzuweisung
<a name="CHAP_Target.Kinesis.AttributeMapping"></a>

Sie können die Daten während der Migration zu einem Kinesis-Datenstrom mithilfe einer Attributzuordnung umstrukturieren. So möchten Sie zum Beispiel vielleicht mehrere Felder in der Quelle in einem einzigen Feld im Ziel vereinen. Die folgenden Attributzuordnung veranschaulicht, wie die Daten umstrukturiert werden.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKinesis",
            "rule-action": "map-record-to-record",
            "target-table-name": "CustomerData",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            },
            "mapping-parameters": {
                "partition-key-type": "attribute-name",
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "firstname",
                    "lastname",
                    "homeaddress",
                    "homephone",
                    "workaddress",
                    "workphone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${lastname}, ${firstname}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "json",
                        "value": {
                            "Home": {
                                "Address": "${homeaddress}",
                                "Phone": "${homephone}"
                            },
                            "Work": {
                                "Address": "${workaddress}",
                                "Phone": "${workphone}"
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Um einen konstanten Wert für festzulegen, geben `"partition-key-type: "constant"` Sie an`partition-key`, dass dadurch der Partitionswert auf gesetzt wird. `constant` So könnten Sie auf diese Weise beispielsweise erzwingen, dass alle Daten in einem einzigen Shard gespeichert werden. Die folgende Darstellung veranschaulicht dieses Konzept. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKinesis",
            "rule-action": "map-record-to-document",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer"
            },
            "mapping-parameters": {
                "partition-key-type": "constant",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"

                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": {
                            "Home": {
                                "Address": "${HomeAddress}",
                                "Phone": "${HomePhone}"
                            },
                            "Work": {
                                "Address": "${WorkAddress}",
                                "Phone": "${WorkPhone}"
                            }
                        }
                    },
                    {
                        "target-attribute-name": "DateOfBirth",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${DateOfBirth}"
                    }
                ]
            }
        }
    ]
}
```

**Anmerkung**  
Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Tabelle bestimmt ist, lautet `TaskId.SchemaName.TableName`. Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Aufgabe bestimmt ist, ist die `TaskId` des betreffenden Datensatzes. Wenn Sie einen `partition-key`-Wert in der Objektzuweisung angeben, hat dies keine Auswirkungen auf den `partition-key` für einen Steuerungsdatensatz.  
 Wann `attribute-name` in einer Tabellenzuordnungsregel auf festgelegt `partition-key-type` ist, müssen Sie angeben`partition-key-name`, was entweder auf eine Spalte aus der Quelltabelle oder auf eine in der Zuordnung definierte benutzerdefinierte Spalte verweisen muss. Zusätzlich `attribute-mappings` muss definiert werden, wie Quellspalten dem Ziel-Kinesis Stream zugeordnet werden.

### Nachrichtenformat für Kinesis-Datenströme
<a name="CHAP_Target.Kinesis.Messageformat"></a>

Die JSON-Ausgabe ist einfach eine Liste von Schlüssel-Wert-Paaren. Ein JSON\$1UNFORMATTED-Nachrichtenformat ist eine einzeilige JSON-Zeichenfolge mit neuem Zeilenbegrenzer.

AWS DMS stellt die folgenden reservierten Felder bereit, um die Nutzung der Daten aus den Kinesis Data Streams zu vereinfachen: 

**RecordType**  
Der Datensatztyp kann entweder für Daten oder zur Steuerung bestimmt sein. *Datensätze für Daten*repräsentieren die tatsächlichen Zeilen in der Quelle. *Steuerungsdatensätze* sind für wichtige Ereignisse im Stream bestimmt, z. B. einen Neustart der Aufgabe.

**Operation**  
Mögliche Operationen für Datensätze sind `load`, `insert`, `update` oder `delete`.  
Mögliche Operationen für Steuerungsdatensätze sind `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` oder `column-type-change`.

**SchemaName**  
Das Quellschema für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**TableName**  
Die Quelltabelle für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**Zeitstempel**  
Der Zeitstempel für den Zeitpunkt, an dem die JSON-Nachricht erstellt wurde. Das Feld ist mit dem ISO-8601-Format formatiert.

# Verwendung von Apache Kafka als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kafka"></a>

Sie können es verwenden AWS DMS , um Daten zu einem Apache Kafka-Cluster zu migrieren. Apache Kafka ist eine verteilte Streaming-Plattform. Mit Apache Kafka können Sie Streaming-Daten in Echtzeit erfassen und verarbeiten.

AWS bietet auch Amazon Managed Streaming for Apache Kafka (Amazon MSK) zur Verwendung als Ziel an AWS DMS . Amazon MSK ist ein vollständig verwalteter Apache-Kafka-Streaming-Service, der die Implementierung und Verwaltung von Apache-Kafka-Instances vereinfacht. Es funktioniert mit Open-Source-Versionen von Apache Kafka, und Sie greifen genau wie jede Apache Kafka-Instance auf Amazon MSK-Instances als AWS DMS Ziele zu. Weitere Informationen finden Sie unter [Was ist Amazon MSK?](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) im *Entwicklerhandbuch für Amazon Managed Streaming für Apache Kafka*.

Ein Kafka-Cluster speichert Streams von Datensätzen in Kategorien, die als Themen bezeichnet und in Partitionen unterteilt werden. *Partitionen* sind eindeutig identifizierte Sequenzen von Datensätzen (Nachrichten) in einem Thema. Partitionen können über mehrere Broker in einem Cluster verteilt werden, um die parallele Verarbeitung der Datensätze eines Themas zu ermöglichen. Weitere Informationen zu Themen und Partitionen und ihrer Verteilung in Apache Kafka finden Sie unter [Themen und Protokolle](https://kafka.apache.org/documentation/#intro_topics) und [Verteilung](https://kafka.apache.org/documentation/#intro_distribution).

Bei Ihrem Kafka-Cluster kann es sich entweder um eine Amazon-MSK-Instance, einen Cluster, der auf einer Amazon-EC2-Instance ausgeführt wird, oder einen On-Premises-Cluster handeln. Eine Amazon-MSK-Instance oder ein Cluster auf einer Amazon-EC2-Instance kann sich in derselben oder einer anderen VPC befinden. Wenn es sich um einen On-Premises-Cluster handelt, können Sie Ihren eigenen On-Premises-Namensserver für Ihre Replikations-Instance verwenden, um den Host-Namen des Clusters aufzulösen. Informationen zum Einrichten eines Namensservers für Ihre Replikations-Instance finden Sie unter [Verwenden Ihres eigenen Vor-Ort-Nameservers](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver). Weitere Informationen zum Einrichten eines Netzwerks finden Sie unter [Einrichten eines Netzwerks für eine Replikations-Instance](CHAP_ReplicationInstance.VPC.md).

Wenn Sie einen Amazon-MSK-Cluster verwenden, stellen Sie sicher, dass dessen Sicherheitsgruppe den Zugriff von Ihrer Replikations-Instance aus ermöglicht. Informationen zum Ändern der Sicherheitsgruppe für einen Amazon-MSK-Cluster finden Sie unter [Ändern der Sicherheitsgruppe eines Amazon-MSK-Clusters](https://docs.aws.amazon.com/msk/latest/developerguide/change-security-group.html).

AWS Database Migration Service veröffentlicht mithilfe von JSON Datensätze zu einem Kafka-Thema. Während der Konvertierung serialisiert AWS DMS jeden Datensatz aus der Quelldatenbank in ein Attribut/Wert-Paar im JSON-Format.

Zum Migrieren Ihrer Daten von einer unterstützten Datenquelle zu einem Kafka-Ziel-Cluster verwenden Sie die Objektzuweisung. Mit der Objektzuweisung bestimmen Sie, wie die Datensätze im Zielthema strukturiert werden sollen. Außerdem definieren Sie einen Partitionsschlüssel für jede Tabelle, die Apache Kafka zum Gruppieren der Daten in seine Partitionen verwendet. 

 AWS DMS Unterstützt derzeit ein einzelnes Thema pro Aufgabe. Bei einer einzelnen Aufgabe mit mehreren Tabellen beziehen sich alle Nachrichten auf ein einzelnes Thema. Jede Nachricht enthält einen Metadaten-Abschnitt, der das Zielschema und die Zieltabelle identifiziert. AWS DMS Versionen 3.4.6 und höher unterstützen die themenübergreifende Replikation mithilfe von Objektzuordnung. Weitere Informationen finden Sie unter [Replikation für mehrere Themen mithilfe der Objektzuweisung](#CHAP_Target.Kafka.MultiTopic).

**Apache Kafka-Endpunkteinstellungen**

Sie können Verbindungsdetails über die Endpunkteinstellungen in der AWS DMS Konsole oder über die `--kafka-settings` Option in der CLI angeben. Es folgen die Anforderungen für jede Einstellung:
+ `Broker` – Geben Sie die Speicherorte eines oder mehrerer Broker in Ihrem Kafka-Cluster jeweils in Form einer durch Kommata getrennten Liste mit `broker-hostname:port` an. Ein Beispiel ist `"ec2-12-345-678-901.compute-1.amazonaws.com:2345,ec2-10-987-654-321.compute-1.amazonaws.com:9876"`. Mit dieser Einstellung können Sie die Speicherorte einiger oder aller Broker im Cluster angeben. Die Cluster-Broker kommunizieren miteinander, um die Partitionierung von Datensätzen zu verarbeiten, die zu dem Thema migriert wurden.
+ `Topic` – (Optional) Geben Sie den Themennamen mit einer maximalen Länge von 255 Buchstaben und Symbolen an. Sie können Punkt (.), Unterstrich (\$1) und Minuszeichen (-) verwenden. Themennamen mit einem Punkt (.) oder einem Unterstrich (\$1) können in internen Datenstrukturen kollidieren. Verwenden Sie entweder eines, aber nicht beide dieser Symbole im Namen des Themas. Wenn Sie keinen Themennamen angeben, AWS DMS verwendet `"kafka-default-topic"` als Migrationsthema.
**Anmerkung**  
Wenn Sie entweder ein von Ihnen angegebenes Migrationsthema oder das Standardthema AWS DMS erstellen möchten, das `auto.create.topics.enable = true` als Teil Ihrer Kafka-Cluster-Konfiguration festgelegt wurde. Weitere Informationen finden Sie unter [Einschränkungen bei der Verwendung von Apache Kafka als Ziel für AWS Database Migration Service](#CHAP_Target.Kafka.Limitations).
+ `MessageFormat` – Das Ausgabeformat für die Datensätze, die auf dem Endpunkt erstellt wurden. Das Nachrichtenformat ist `JSON` (Standard) oder `JSON_UNFORMATTED` (eine einzelne Zeile ohne Tabulator).
+ `MessageMaxBytes` – Die maximale Größe in Byte für Datensätze, die auf dem Endpunkt erstellt wurden. Der Standardwert ist 1.000.000.
**Anmerkung**  
Sie können die AWS CLI/das SDK nur verwenden, um zu einem Wert `MessageMaxBytes` zu wechseln, der nicht dem Standard entspricht. Verwenden Sie beispielsweise den folgenden Befehl, um Ihren vorhandenen Kafka-Endpunkt und `MessageMaxBytes` zu ändern.  

  ```
  aws dms modify-endpoint --endpoint-arn your-endpoint 
  --kafka-settings Broker="broker1-server:broker1-port,broker2-server:broker2-port,...",
  Topic=topic-name,MessageMaxBytes=integer-of-max-message-size-in-bytes
  ```
+ `IncludeTransactionDetails` – Stellt detaillierte Transaktionsinformationen aus der Quelldatenbank bereit. Diese Informationen beinhalten einen Durchführungszeitstempel, eine Protokollposition sowie Werte für `transaction_id`, `previous_transaction_id` und `transaction_record_id` (den Datensatzoffset innerhalb einer Transaktion). Der Standardwert ist `false`.
+ `IncludePartitionValue` – Zeigt den Partitionswert innerhalb der Kafka-Nachrichtenausgabe an, es sei denn, der Partitionstyp ist `schema-table-type`. Der Standardwert ist `false`.
+ `PartitionIncludeSchemaTable` – Fügt Schema- und Tabellennamen zu Partitionswerten als Präfix hinzu, wenn der Partitionstyp `primary-key-type` ist. Dadurch wird die Datenverteilung zwischen Kafka-Partitionen erhöht. Angenommen, ein `SysBench`-Schema hat Tausende von Tabellen und jede davon hat nur einen begrenzten Bereich für einen Primärschlüssel. In diesem Fall wird derselbe Primärschlüssel von Tausenden von Tabellen an dieselbe Partition gesendet, was zu einer Drosselung führt. Der Standardwert ist `false`.
+ `IncludeTableAlterOperations` – Enthält alle DDL-Operationen (DDL = Data Definition Language), die die Tabelle in den Steuerungsdaten ändern, wie etwa `rename-table`, `drop-table`, `add-column`, `drop-column` und `rename-column`. Der Standardwert ist `false`. 
+ `IncludeControlDetails` – Zeigt detaillierte Steuerungsinformationen für Tabellendefinition, Spaltendefinition und Tabellen- und Spaltenänderungen in der Kafka-Nachrichtenausgabe an. Der Standardwert ist `false`.
+ `IncludeNullAndEmpty` – Schließt NULL-Spalten und leere Spalten in das Ziel ein. Der Standardwert ist `false`.
+ `SecurityProtocol` – Richtet eine sichere Verbindung mit einem Kafka-Zielendpunkt mit Transport Layer Security (TLS) ein. Optionen: `ssl-authentication`, `ssl-encryption` und `sasl-ssl`. Für die Verwendung von `sasl-ssl` sind `SaslUsername` und `SaslPassword` erforderlich.
+ `SslEndpointIdentificationAlgorithm`— Legt die Überprüfung des Hostnamens für das Zertifikat fest. Diese Einstellung wird in AWS DMS Version 3.5.1 und höher unterstützt. Es gibt die folgenden Optionen: 
  + `NONE`: Deaktiviert die Überprüfung des Hostnamens des Brokers in der Client-Verbindung.
  + `HTTPS`: Aktiviert die Überprüfung des Hostnamens des Brokers in der Client-Verbindung.
+ `useLargeIntegerValue`— Verwenden Sie bis zu 18-stellige Ganzzahlen, anstatt Ganzzahlen als Doppelzahl umzuwandeln. Dies ist ab AWS DMS Version 3.5.4 verfügbar. Der Standardwert lautet „false“.

Sie können Einstellungen verwenden, um die Übertragungsgeschwindigkeit zu erhöhen. Dazu unterstützt AWS DMS Multi-Thread-Volllastvorgänge in einen Ziel-Cluster in Apache Kafka. AWS DMS unterstützt Multi-Threading u. a. mithilfe der folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks`— Verwenden Sie diese Option, um die maximale Anzahl von Quelltabellen anzugeben, die parallel geladen werden sollen. AWS DMS lädt jede Tabelle mithilfe einer speziellen Unteraufgabe in die entsprechende Kafka-Zieltabelle. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre Kafka-Zieltabelle zu laden. Der maximale Wert für ein Apache Kafka-Ziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die parallelen Lade-Threads zum Laden von Daten in das Kafka-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ `ParallelLoadQueuesPerThread` – Verwenden Sie diese Option, um die Anzahl der Warteschlangen anzugeben, auf die jeder gleichzeitige Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und eine Stapellast für das Ziel zu generieren. Der Standardwert ist 1. Der Höchstwert ist 512.

Sie können die Leistung der Erfassung von Datenänderungen (Change Data Capture, CDC) für Kafka-Endpunkte verbessern, indem Sie die Aufgabeneinstellungen für parallele Threads und Massenoperationen optimieren. Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last durchführen und 128 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 

 AWS DMS Unterstützt die folgenden Task-Einstellungen, um die CDC-Leistung zu verbessern:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen Kafka-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während einer CDC-Last an einen Kafka-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während CDC eine Stapellast für einen Kafka-Endpunkt zu generieren. Der Standardwert ist 1. Der Höchstwert ist 512.

Wenn Sie `ParallelApply*`-Aufgabeneinstellungen verwenden, ist der `primary-key` der Tabelle der `partition-key-type`-Standardwert, nicht `schema-name.table-name`.

## Herstellen einer Verbindung zu Kafka mit Transport Layer Security (TLS)
<a name="CHAP_Target.Kafka.TLS"></a>

Ein Kafka-Cluster akzeptiert sichere Verbindungen mit Transport Layer Security (TLS). Mit DMS können Sie eine der folgenden drei Sicherheitsprotokoll-Optionen verwenden, um eine Verbindung mit einem Kafka-Endpunkt zu sichern.

**SSL-Verschlüsselung (`server-encryption`)**  
Clients validieren die Serveridentität anhand des Serverzertifikats. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**SSL-Authentifizierung (`mutual-authentication`)**  
Server und Client validieren die Identität untereinander durch ihre eigenen Zertifikate. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**SASL-SSL (`mutual-authentication`)**  
Bei der Methode Simple Authentication and Security Layer (SASL) wird das Zertifikat des Clients durch einen Benutzernamen und ein Passwort ersetzt, um die Identität eines Clients zu überprüfen. Sie geben einen Benutzernamen und ein Passwort an, die der Server registriert hat, damit der Server die Identität eines Clients überprüfen kann. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**Wichtig**  
Apache Kafka und Amazon MSK akzeptieren aufgelöste Zertifikate. Dies ist eine bekannte Einschränkung von Kafka und Amazon MSK, die behoben werden muss. Weitere Informationen finden Sie unter [Apache Kafka issues, KAFKA-3700](https://issues.apache.org/jira/browse/KAFKA-3700).  
Wenn Sie Amazon MSK verwenden, sollten Sie die Verwendung von Zugriffskontrolllisten (ACLs) als Workaround für diese bekannte Einschränkung in Betracht ziehen. Weitere Informationen zur Verwendung ACLs finden Sie im ACLs Abschnitt [Apache Kafka](https://docs.aws.amazon.com//msk/latest/developerguide/msk-acls.html) im *Amazon Managed Streaming for Apache Kafka Developer Guide*.  
Wenn Sie einen selbstverwalteten Kafka-Cluster verwenden, finden Sie Informationen zur Konfiguration des Clusters im [Kommentar vom 21. Oktober 18](https://issues.apache.org/jira/browse/KAFKA-3700?focusedCommentId=16658376).

### Verwenden von SSL-Verschlüsselung mit Amazon MSK oder einem selbstverwalteten Kafka-Cluster
<a name="CHAP_Target.Kafka.TLS.SSLencryption"></a>

Sie können SSL-Verschlüsselung verwenden, um eine Endpunktverbindung mit Amazon MSK oder einem selbstverwalteten Kafka-Cluster zu sichern. Wenn Sie die SSL-Verschlüsselung als Authentifizierungsmethode verwenden, validieren Clients die Identität eines Servers anhand des Serverzertifikats. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**So verwenden Sie SSL-Verschlüsselung für die Verbindung mit Amazon MSK**
+ Legen Sie die Sicherheitsprotokoll-Endpunkteinstellung (`SecurityProtocol`) mithilfe der Option `ssl-encryption` fest, wenn Sie Ihren Kafka-Zielendpunkt erstellen. 

  Im folgenden JSON-Beispiel wird das Sicherheitsprotokoll als SSL-Verschlüsselung festgelegt.

```
"KafkaSettings": {
    "SecurityProtocol": "ssl-encryption", 
}
```

**So verwenden Sie SSL-Verschlüsselung für einen selbstverwalteten Kafka-Cluster**

1. Wenn Sie eine private Zertifizierungsstelle (Certification Authority, CA) in Ihrem On-Premises-Kafka-Cluster verwenden, laden Sie Ihr privates CA-Zertifikat hoch, um einen Amazon-Ressourcennamen (ARN) abzurufen. 

1. Legen Sie die Sicherheitsprotokoll-Endpunkteinstellung (`SecurityProtocol`) mithilfe der Option `ssl-encryption` fest, wenn Sie Ihren Kafka-Zielendpunkt erstellen. Im folgenden JSON-Beispiel wird das Sicherheitsprotokoll als `ssl-encryption` festgelegt.

   ```
   "KafkaSettings": {
       "SecurityProtocol": "ssl-encryption", 
   }
   ```

1. Wenn Sie eine private CA verwenden, legen Sie `SslCaCertificateArn` im ARN fest, den Sie im ersten Schritt abgerufen haben.

### Verwenden von SSL-Authentifizierung
<a name="CHAP_Target.Kafka.TLS.SSLauthentication"></a>

Sie können SSL-Authentifizierung verwenden, um eine Endpunktverbindung mit Amazon MSK oder einem selbstverwalteten Kafka-Cluster zu sichern.

Gehen Sie wie folgt vor, um die Client-Authentifizierung und -Verschlüsselung mithilfe von SSL-Authentifizierung für die Verbindung mit Amazon MSK zu aktivieren:
+ Bereiten Sie einen privaten Schlüssel und ein öffentliches Zertifikat für Kafka vor.
+ Laden Sie die Zertifikate in den DMS-Zertifikatmanager hoch.
+ Erstellen Sie einen Kafka-Zielendpunkt mit dem entsprechenden Zertifikat, das in den Kafka-Endpunkteinstellungen ARNs angegeben ist.

**So bereiten Sie einen privaten Schlüssel und ein öffentliches Zertifikat für Amazon MSK vor**

1. Erstellen Sie eine EC2-Instance und richten Sie einen Client zur Verwendung der Authentifizierung ein, wie in den Schritten 1 bis 9 im Abschnitt zur [Client-Authentifizierung](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) im *Entwicklerhandbuch für Amazon Managed Streaming für Apache Kafka* beschrieben.

   Nachdem Sie diese Schritte abgeschlossen haben, verfügen Sie über einen Zertifikat-ARN (den in ACM gespeicherten öffentlichen Zertifikat-ARN) und einen privaten Schlüssel, der in einer Datei mit dem Namen `kafka.client.keystore.jks` enthalten ist.

1. Rufen Sie das öffentliche Zertifikat ab und kopieren Sie das Zertifikat mit dem folgenden Befehl in die Datei `signed-certificate-from-acm.pem`:

   ```
   aws acm-pca get-certificate --certificate-authority-arn Private_CA_ARN --certificate-arn Certificate_ARN
   ```

   Dieser Befehl gibt ähnliche Informationen wie im folgenden Beispiel zurück:

   ```
   {"Certificate": "123", "CertificateChain": "456"}
   ```

   Anschließend kopieren Sie Ihr Äquivalent von `"123"` in die Datei `signed-certificate-from-acm.pem`.

1. Rufen Sie den privaten Schlüssel ab, indem Sie den Schlüssel `msk-rsa` aus `kafka.client.keystore.jks to keystore.p12` importieren, wie im folgenden Beispiel gezeigt.

   ```
   keytool -importkeystore \
   -srckeystore kafka.client.keystore.jks \
   -destkeystore keystore.p12 \
   -deststoretype PKCS12 \
   -srcalias msk-rsa-client \
   -deststorepass test1234 \
   -destkeypass test1234
   ```

1. Verwenden Sie den folgenden Befehl, um `keystore.p12` in das Format `.pem` zu exportieren. 

   ```
   Openssl pkcs12 -in keystore.p12 -out encrypted-private-client-key.pem –nocerts
   ```

   Die Meldung **PEM-Passphrase eingeben** wird angezeigt und gibt den Schlüssel an, der zur Verschlüsselung des Zertifikats verwendet wird.

1. Entfernen Sie Taschen- und Schlüsselattribute aus der `.pem`-Datei, um sicherzustellen, dass die erste Zeile mit der folgenden Zeichenfolge beginnt.

   ```
                                   ---BEGIN ENCRYPTED PRIVATE KEY---
   ```

**So laden Sie ein öffentliches Zertifikat und einen privaten Schlüssel in den DMS-Zertifikatmanager hoch und testen die Verbindung mit Amazon MSK**

1. Führen Sie den folgenden Befehl aus, um den Upload in den DMS-Zertifikatmanager auszuführen.

   ```
   aws dms import-certificate --certificate-identifier signed-cert --certificate-pem file://path to signed cert
   aws dms import-certificate --certificate-identifier private-key —certificate-pem file://path to private key
   ```

1. Erstellen Sie einen Amazon-MSK-Zielendpunkt und testen Sie die Verbindung, um sicherzustellen, dass die TLS-Authentifizierung funktioniert.

   ```
   aws dms create-endpoint --endpoint-identifier $endpoint-identifier --engine-name kafka --endpoint-type target --kafka-settings 
   '{"Broker": "b-0.kafka260.aaaaa1.a99.kafka.us-east-1.amazonaws.com:0000", "SecurityProtocol":"ssl-authentication", 
   "SslClientCertificateArn": "arn:aws:dms:us-east-1:012346789012:cert:",
   "SslClientKeyArn": "arn:aws:dms:us-east-1:0123456789012:cert:","SslClientKeyPassword":"test1234"}'
   aws dms test-connection -replication-instance-arn=$rep_inst_arn —endpoint-arn=$kafka_tar_arn_msk
   ```

**Wichtig**  
Sie können SSL-Authentifizierung verwenden, um eine Verbindung mit einem selbstverwalteten Kafka-Cluster zu sichern. In Einzelfällen können Sie eine private Zertifizierungsstelle (CA) in Ihrem On-Premises-Kafka-Cluster verwenden. Laden Sie in diesem Fall Ihre CA-Kette, das öffentliche Zertifikat und den privaten Schlüssel in den DMS-Zertifikatmanager hoch. Verwenden Sie dann den entsprechenden Amazon-Ressourcennamen (ARN) in Ihren Endpunkteinstellungen, wenn Sie Ihren On-Premises-Kafka-Zielendpunkt erstellen.

**So bereiten Sie einen privaten Schlüssel und ein signiertes Zertifikat für einen selbstverwalteten Kafka-Cluster vor**

1. Erzeugen Sie ein Schlüsselpaar wie im folgenden Beispiel dargestellt.

   ```
   keytool -genkey -keystore kafka.server.keystore.jks -validity 300 -storepass your-keystore-password 
   -keypass your-key-passphrase -dname "CN=your-cn-name" 
   -alias alias-of-key-pair -storetype pkcs12 -keyalg RSA
   ```

1. Generieren Sie eine Anfrage zum Signieren des Zertifikats (Certificate Sign Request, CSR). 

   ```
   keytool -keystore kafka.server.keystore.jks -certreq -file server-cert-sign-request-rsa -alias on-premise-rsa -storepass your-key-store-password 
   -keypass your-key-password
   ```

1. Verwenden Sie die CA in Ihrem Cluster-Truststore zum Signieren der CSR. Wenn Sie keine CA haben, können Sie Ihre eigene private CA erstellen.

   ```
   openssl req -new -x509 -keyout ca-key -out ca-cert -days validate-days                            
   ```

1. Importieren Sie `ca-cert` in den Truststore und Keystore des Servers. Wenn Sie keinen Truststore haben, führen Sie folgenden Befehl aus, um den Truststore zu erstellen und `ca-cert ` in diesen zu importieren. 

   ```
   keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert
   keytool -keystore kafka.server.keystore.jks -alias CARoot -import -file ca-cert
   ```

1. Signieren Sie das Zertifikat.

   ```
   openssl x509 -req -CA ca-cert -CAkey ca-key -in server-cert-sign-request-rsa -out signed-server-certificate.pem 
   -days validate-days -CAcreateserial -passin pass:ca-password
   ```

1. Importieren Sie das signierte Zertifikat in den Keystore.

   ```
   keytool -keystore kafka.server.keystore.jks -import -file signed-certificate.pem -alias on-premise-rsa -storepass your-keystore-password 
   -keypass your-key-password
   ```

1. Verwenden Sie den folgenden Befehl, um den Schlüssel `on-premise-rsa` von `kafka.server.keystore.jks` in `keystore.p12` zu importieren.

   ```
   keytool -importkeystore \
   -srckeystore kafka.server.keystore.jks \
   -destkeystore keystore.p12 \
   -deststoretype PKCS12 \
   -srcalias on-premise-rsa \
   -deststorepass your-truststore-password \
   -destkeypass your-key-password
   ```

1. Verwenden Sie den folgenden Befehl, um `keystore.p12` in das Format `.pem` zu exportieren.

   ```
   Openssl pkcs12 -in keystore.p12 -out encrypted-private-server-key.pem –nocerts
   ```

1. Laden Sie `encrypted-private-server-key.pem`, `signed-certificate.pem` und `ca-cert` in den DMS-Zertifikatmanager hoch.

1. Erstellen Sie einen Endpunkt mithilfe des zurückgegebenen. ARNs

   ```
   aws dms create-endpoint --endpoint-identifier $endpoint-identifier --engine-name kafka --endpoint-type target --kafka-settings 
   '{"Broker": "b-0.kafka260.aaaaa1.a99.kafka.us-east-1.amazonaws.com:9092", "SecurityProtocol":"ssl-authentication", 
   "SslClientCertificateArn": "your-client-cert-arn","SslClientKeyArn": "your-client-key-arn","SslClientKeyPassword":"your-client-key-password", 
   "SslCaCertificateArn": "your-ca-certificate-arn"}'
                               
   aws dms test-connection -replication-instance-arn=$rep_inst_arn —endpoint-arn=$kafka_tar_arn_msk
   ```

### Verwenden von SASL-SSL-Authentifizierung für die Verbindung mit Amazon MSK
<a name="CHAP_Target.Kafka.TLS.SSL-SASL"></a>

Bei der Methode Simple Authentication and Security Layer (SASL) werden ein Benutzername und ein Passwort verwendet, um die Identität eines Clients zu überprüfen, und es wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

Um SASL zu verwenden, erstellen Sie zunächst einen sicheren Benutzernamen und ein sicheres Passwort, wenn Sie Ihren Amazon-MSK-Cluster einrichten. Eine Beschreibung, wie Sie einen sicheren Benutzernamen und ein sicheres Passwort für einen Amazon MSK-Cluster einrichten, finden Sie unter [Einrichten der SASL/SCRAM Authentifizierung für einen Amazon MSK-Cluster im Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) *Managed Streaming for Apache Kafka* Developer Guide.

Wenn Sie dann Ihren Kafka-Zielendpunkt erstellen, legen Sie die Sicherheitsprotokoll-Endpunkteinstellung (`SecurityProtocol`) mithilfe der Option `sasl-ssl` fest. Legen Sie auch die Optionen `SaslUsername` und `SaslPassword` fest. Stellen Sie sicher, dass diese mit dem sicheren Benutzernamen und Passwort übereinstimmen, die Sie bei der erstmaligen Einrichtung Ihres Amazon-MSK-Clusters erstellt haben, wie im folgenden JSON-Beispiel gezeigt.

```
                   
"KafkaSettings": {
    "SecurityProtocol": "sasl-ssl",
    "SaslUsername":"Amazon MSK cluster secure user name",
    "SaslPassword":"Amazon MSK cluster secure password"                    
}
```

**Anmerkung**  
Unterstützt derzeit nur öffentliches, von CA AWS DMS unterstütztes SASL-SSL. DMS unterstützt SASL-SSL nicht für die Verwendung mit selbstverwaltetem Kafka, das von einer privaten CA unterstützt wird.
Unterstützt für die SASL-SSL-Authentifizierung standardmäßig den SCRAM-SHA-512-Mechanismus AWS DMS . AWS DMS Versionen 3.5.0 und höher unterstützen auch den Plain-Mechanismus. Setzen Sie den Parameter `SaslMechanism` des API-Datentyps `KafkaSettings` auf `PLAIN`, um den Plain-Mechanismus zu unterstützen. Der Datentyp `PLAIN` wird von Kafka unterstützt, aber nicht von Amazon Kafka (MSK).

## Verwenden eines Vorher-Abbilds zum Anzeigen von Originalwerten von CDC-Zeilen für Apache Kafka als Ziel
<a name="CHAP_Target.Kafka.BeforeImage"></a>

Beim Schreiben von CDC-Aktualisierungen auf ein Data-Streaming-Ziel wie Kafka können Sie die ursprünglichen Werte einer Quelldatenbankzeile anzeigen, bevor sie durch eine Aktualisierung geändert werden. Um dies zu ermöglichen, AWS DMS füllt es ein *Vorher-Bild* der Aktualisierungsereignisse auf der Grundlage von Daten aus, die von der Quelldatenbank-Engine bereitgestellt werden. 

Verschiedene Quelldatenbank-Engines liefern unterschiedliche Mengen an Informationen für ein Vorher-Abbild: 
+ Oracle stellt für Spalten nur dann Aktualisierungen bereit, wenn sie sich ändern. 
+ PostgreSQL stellt nur Daten für Spalten bereit, die Teil des Primärschlüssels sind (geändert oder nicht). Wenn eine logische Replikation verwendet wird und REPLICA IDENTITY FULL für die Quelltabelle festgelegt ist, können Sie vollständige Vorher-Nachher-Informationen zu der Zeile abrufen, die in die geschrieben wurde WALs und hier verfügbar ist.
+ MySQL stellt generell Daten für alle Spalten (geändert oder nicht) bereit.

Verwenden Sie entweder die `BeforeImageSettings`-Aufgabeneinstellung oder den `add-before-image-columns`-Parameter, um die Erstellung von Vorher-Abbildern zum Hinzufügen von Originalwerten aus der Quelldatenbank zur AWS DMS -Ausgabe zu aktivieren. Dieser Parameter wendet eine Spalten-Transformationsregel an. 

`BeforeImageSettings` fügt jeder Aktualisierungsoperation ein neues JSON-Attribut mit Werten hinzu, die aus dem Quelldatenbanksystem erfasst werden, wie nachfolgend gezeigt.

```
"BeforeImageSettings": {
    "EnableBeforeImage": boolean,
    "FieldName": string,  
    "ColumnFilter": pk-only (default) / non-lob / all (but only one)
}
```

**Anmerkung**  
Wenden Sie `BeforeImageSettings` auf Volllast plus CDC-Aufgaben (die vorhandene Daten migrieren und laufende Änderungen replizieren) oder nur auf CDC-Aufgaben (die nur Datenänderungen replizieren) an. Wenden Sie `BeforeImageSettings` nicht auf Nur-Volllast-Aufgaben an.

Für `BeforeImageSettings`-Optionen gilt Folgendes:
+ Legen Sie die `EnableBeforeImage`-Option vor dem Imaging auf `true` fest. Der Standardwert ist `false`. 
+ Verwenden Sie die `FieldName`-Option, um dem neuen JSON-Attribut einen Namen zuzuweisen. Wann `EnableBeforeImage` `true` ist, ist `FieldName` erforderlich und darf nicht leer sein.
+ Die `ColumnFilter`-Option gibt eine Spalte an, die vor dem Imaging hinzugefügt werden soll. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, verwenden Sie den Standardwert `pk-only`. Wenn Sie nur Spalten hinzufügen möchten, die nicht vom LOB-Typ sind, verwenden Sie `non-lob`. Wenn Sie eine Spalte hinzufügen möchten, die einen Vorher-Abbild-Wert hat, verwenden Sie `all`. 

  ```
  "BeforeImageSettings": {
      "EnableBeforeImage": true,
      "FieldName": "before-image",
      "ColumnFilter": "pk-only"
    }
  ```

### Verwenden einer Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kafka.BeforeImage.Transform-Rule"></a>

Alternativ zu den Aufgabeneinstellungen können Sie den `add-before-image-columns`-Parameter verwenden, der eine Spalten-Transformationsregel anwendet. Mit diesem Parameter können Sie das Vorher-Imaging während des CDC-Vorgangs auf Data-Streaming-Zielen wie Kafka aktivieren.

Wenn Sie `add-before-image-columns` in einer Transformationsregel verwenden, können Sie eine feinere Steuerung der Ergebnisse für das Vorher-Abbild anwenden. Mit Transformationsregeln können Sie einen Objekt-Locator verwenden, der Ihnen die Kontrolle über die für die Regel ausgewählten Tabellen gibt. Außerdem können Sie Transformationsregeln miteinander verketten, wodurch verschiedene Regeln auf verschiedene Tabellen angewendet werden können. Anschließend können Sie die erzeugten Spalten mithilfe anderer Regeln bearbeiten. 

**Anmerkung**  
Verwenden Sie den `add-before-image-columns`-Parameter nicht zusammen mit der `BeforeImageSettings`-Aufgabeneinstellung innerhalb derselben Aufgabe. Verwenden Sie stattdessen entweder den Parameter oder die Einstellung, aber nicht beide, für eine einzelne Aufgabe.

Ein `transformation`-Regeltyp mit dem `add-before-image-columns`-Parameter für eine Spalte muss einen `before-image-def`-Abschnitt bereitstellen. Es folgt ein Beispiel.

```
    {
      "rule-type": "transformation",
      …
      "rule-target": "column",
      "rule-action": "add-before-image-columns",
      "before-image-def":{
        "column-filter": one-of  (pk-only / non-lob / all),
        "column-prefix": string,
        "column-suffix": string,
      }
    }
```

Der Wert von `column-prefix` wird einem Spaltennamen vorangestellt, und der Standardwert von `column-prefix` ist `BI_`. Der Wert von `column-suffix` wird an den Spaltennamen angehängt, und der Standardwert ist leer. Setzen Sie nicht `column-prefix` und `column-suffix` auf leere Zeichenfolgen.

Wählen Sie einen Wert für `column-filter`. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, wählen Sie `pk-only` . Wählen Sie `non-lob`, um nur Spalten hinzuzufügen, die nicht vom LOB-Typ sind. Oder lassen`all` Sie eine Spalte hinzufügen, die einen Vorher-Abbild-Wert hat.

### Beispiel für eine Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kafka.BeforeImage.Example"></a>

Die Transformationsregel im folgenden Beispiel fügt eine neue Spalte mit dem Namen `BI_emp_no` auf dem Ziel hinzu. Eine Anweisung wie `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` füllt daher das `BI_emp_no` Feld mit 1. Wenn Sie CDC-Aktualisierungen für Amazon-S3-Ziele schreiben, ermöglicht die `BI_emp_no`-Spalte, zu erkennen, welche ursprüngliche Zeile aktualisiert wurde.

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "%",
        "table-name": "%"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "%",
        "table-name": "employees"
      },
      "rule-action": "add-before-image-columns",
      "before-image-def": {
        "column-prefix": "BI_",
        "column-suffix": "",
        "column-filter": "pk-only"
      }
    }
  ]
}
```

Weitere Informationen zur Verwendung der `add-before-image-columns`-Regelaktion finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Einschränkungen bei der Verwendung von Apache Kafka als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kafka.Limitations"></a>

Bei der Verwendung von Apache Kafka als Ziel gelten die folgenden Einschränkungen:
+ AWS DMS Kafka-Zielendpunkte unterstützen keine IAM-Zugriffskontrolle für Amazon Managed Streaming for Apache Kafka (Amazon MSK).
+ Der vollständige LOB-Modus wird nicht unterstützt.
+ Geben Sie eine Kafka-Konfigurationsdatei für Ihren Cluster mit Eigenschaften an, mit denen Sie automatisch neue Themen erstellen können AWS DMS . Schließen Sie die Einstellung `auto.create.topics.enable = true` ein. Wenn Sie Amazon MSK verwenden, können Sie beim Erstellen Ihres Kafka-Clusters die Standardkonfiguration angeben und dann die Einstellung `auto.create.topics.enable` in `true` ändern. Weitere Informationen zu den Standardkonfigurationseinstellungen finden Sie unter [Die Standardkonfiguration von Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/msk-default-configuration.html) im *Entwicklerhandbuch für Amazon Managed Streaming für Apache Kafka*. Wenn Sie einen vorhandenen Kafka-Cluster ändern müssen, der mit Amazon MSK erstellt wurde, führen Sie den AWS CLI Befehl aus, `aws kafka create-configuration` um Ihre Kafka-Konfiguration zu aktualisieren, wie im folgenden Beispiel gezeigt:

  ```
  14:38:41 $ aws kafka create-configuration --name "kafka-configuration" --kafka-versions "2.2.1" --server-properties file://~/kafka_configuration
  {
      "LatestRevision": {
          "Revision": 1,
          "CreationTime": "2019-09-06T14:39:37.708Z"
      },
      "CreationTime": "2019-09-06T14:39:37.708Z",
      "Name": "kafka-configuration",
      "Arn": "arn:aws:kafka:us-east-1:111122223333:configuration/kafka-configuration/7e008070-6a08-445f-9fe5-36ccf630ecfd-3"
  }
  ```

  Hier ist `//~/kafka_configuration` die Konfigurationsdatei, die Sie mit den erforderlichen Eigenschaftseinstellungen erstellt haben.

  Wenn Sie Ihre eigene Kafka-Instance verwenden, die auf Amazon EC2 installiert ist, ändern Sie die Kafka-Cluster-Konfiguration mit der `auto.create.topics.enable = true` Einstellung, dass mithilfe der in Ihrer Instance bereitgestellten Optionen automatisch neue Themen erstellt werden können AWS DMS .
+ AWS DMS veröffentlicht jedes Update eines einzelnen Datensatzes in der Quelldatenbank als einen Datensatz (Nachricht) in einem bestimmten Kafka-Thema, unabhängig von den Transaktionen.
+ AWS DMS unterstützt die folgenden vier Formen für Partitionsschlüssel:
  + `SchemaName.TableName`: Eine Kombination des Schema- und Tabellennamens.
  + `${AttributeName}`: Der Wert in einem der Felder in der JSON-Datei oder der Primärschlüssel der Tabelle in der Quelldatenbank.
  + `transaction-id`: Die CDC-Transaktions-ID. Alle Datensätze innerhalb derselben Transaktion gehen auf dieselbe Partition.
  + `constant`: Ein fester Literalwert für jeden Datensatz, unabhängig von Tabelle oder Daten. Alle Datensätze werden an denselben Partitionsschlüsselwert „constant“ gesendet, wodurch eine strikte globale Reihenfolge in allen Tabellen gewährleistet ist.

  ```
  {
      "rule-type": "object-mapping",
      "rule-id": "2",
      "rule-name": "TransactionIdPartitionKey",
      "rule-action": "map-record-to-document",
      "object-locator": {
          "schema-name": "onprem",
          "table-name": "it_system"
      },
      "mapping-parameters": {
          "partition-key-type": "transaction-id | constant | attribute-name | schema-table"
      }
  }
  ```
+ Die `IncludeTransactionDetails` Endpunkteinstellung wird nur unterstützt, wenn der Quellendpunkt Oracle, SQL Server, PostgreSQL oder MySQL ist. Bei anderen Quellendpunkttypen sind Transaktionsdetails nicht enthalten.
+ `BatchApply` wird für einen Kafka-Endpunkt nicht unterstützt. Bei Verwendung von Batch Apply (z. B. der Zielmetadaten-Aufgabeneinstellung `BatchApplyEnabled`) für ein Kafka-Ziel kann es zu einem Datenverlust kommen.
+ AWS DMS unterstützt nicht die Migration von Werten eines `BigInt` Datentyps mit mehr als 16 Ziffern. Um diese Einschränkung zu umgehen, können Sie die folgende Transformationsregel verwenden, um die `BigInt`-Spalte in eine Zeichenfolge zu konvertieren. Informationen zu Transformationsregeln finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

  ```
  {
      "rule-type": "transformation",
      "rule-id": "id",
      "rule-name": "name",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "valid object-mapping rule action",
          "table-name": "",
          "column-name": ""
      },
      "rule-action": "change-data-type",
      "data-type": {
          "type": "string",
          "length": 20
      }
  }
  ```
+ AWS DMS Kafka-Zielendpunkte unterstützen Amazon MSK Servless nicht.
+ Bei der Definition von Zuordnungsregeln wird es nicht unterstützt, sowohl eine Objektzuordnungsregel als auch eine Transformationsregel zu verwenden. Sie müssen nur eine Regel festlegen. 
+ AWS DMS unterstützt die SASL-Authentifizierung für Apache Kafka-Versionen bis 3.8. Wenn Sie Kafka 4.0 oder höher verwenden, können Sie nur ohne SASL-Authentifizierung eine Verbindung herstellen.
+ AWS DMS unterstützt keine Quelldaten mit eingebetteten `'\0'` Zeichen, wenn Kafka als Zielendpunkt verwendet wird. Daten, die eingebettete `'\0'` Zeichen enthalten, werden beim ersten `'\0'` Zeichen gekürzt.

## Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Kafka-Thema
<a name="CHAP_Target.Kafka.ObjectMapping"></a>

AWS DMS verwendet Regeln für die Tabellenzuweisung, um Daten aus der Quelle dem Kafka-Zielthema zuzuordnen. Um Daten einem Zielthema zuzuweisen, verwenden Sie eine Art von Tabellenzuweisungsregel, die als Objektzuweisung bezeichnet wird. Mit der Objektzuweisung legen Sie fest, wie Datensätze in der Quelle den in einem Kafka-Thema veröffentlichten Datensätzen zugewiesen werden. 

Kafka-Themen verfügen bis auf einen Partitionsschlüssel über keine voreingestellte Struktur.

**Anmerkung**  
Sie müssen die Objektzuweisung nicht verwenden. Sie können die reguläre Tabellenzuweisung für verschiedene Transformationen verwenden. Der Partitionsschlüsseltyp folgt jedoch diesen Standardverhaltensweisen:   
Der Primärschlüssel wird als Partitionsschlüssel für Volllast verwendet.
Wenn keine Aufgabeneinstellungen für die parallele Anwendung verwendet werden, wird `schema.table` als Partitionsschlüssel für CDC verwendet.
Wenn Aufgabeneinstellungen für parallele Anwendung verwendet werden, wird der Primärschlüssel als Partitionsschlüssel für CDC verwendet.

Um eine Objektzuweisungsregel zu erstellen, legen Sie `rule-type` als `object-mapping` fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. 

Die Struktur für die Regel lautet wie folgt.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den Parameter. `rule-action` Diese Einstellungen wirken sich auf Werte aus, die nicht in der `exclude-columns`-Attributliste ausgeschlossen sind. Die `map-record-to-document` Werte `map-record-to-record` und geben an, wie diese Datensätze standardmäßig AWS DMS behandelt werden. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 

Verwenden Sie `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu einem Kafka-Thema. Dieser Regeltyp verwendet den `taskResourceId.schemaName.tableName`-Wert aus der relationalen Datenbank als Partitionsschlüssel in dem Kafka-Thema und erstellt ein Attribut für jede Spalte in der Quelldatenbank. 

Beachten Sie bei Verwendung von `map-record-to-record` Folgendes:
+ Diese Einstellung wirkt sich nur auf Spalten aus, die durch die `exclude-columns`-Liste ausgeschlossen wurden.
+  AWS DMS Erstellt für jede dieser Spalten ein entsprechendes Attribut im Zielthema.
+ AWS DMS erstellt dieses entsprechende Attribut unabhängig davon, ob die Quellspalte in einer Attributzuordnung verwendet wird. 

Eine Möglichkeit, `map-record-to-record` zu verstehen, besteht darin, sich die praktische Anwendung zu veranschaulichen. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Um diese Informationen von einem Schema mit dem Namen `Test` zu einem Kafka-Thema zu migrieren, erstellen Sie Regeln, um die Daten dem Zielthema zuzuweisen. Die folgende Regel veranschaulicht die Zuweisung. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToKafka",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Nachfolgend wird das resultierende Datensatzformat bei Verwendung unserer Beispieldaten in dem Kafka-Zielthema für ein bestimmtes Kafka-Thema und einen bestimmten Partitionsschlüssel (in diesem Fall `taskResourceId.schemaName.tableName`) illustriert. 

```
  {
     "FirstName": "Randy",
     "LastName": "Marsh",
     "StoreId":  "5",
     "HomeAddress": "221B Baker Street",
     "HomePhone": "1234567890",
     "WorkAddress": "31 Spooner Street, Quahog",
     "WorkPhone": "9876543210",
     "DateOfBirth": "02/29/1988"
  }
```

**Topics**
+ [Umstrukturieren von Daten mit Attributzuweisung](#CHAP_Target.Kafka.AttributeMapping)
+ [Replikation für mehrere Themen mithilfe der Objektzuweisung](#CHAP_Target.Kafka.MultiTopic)
+ [Nachrichtenformat für Apache Kafka](#CHAP_Target.Kafka.Messageformat)

### Umstrukturieren von Daten mit Attributzuweisung
<a name="CHAP_Target.Kafka.AttributeMapping"></a>

Sie können die Daten umstrukturieren, während Sie sie mittels einer Attributzuweisung zu einem Kafka-Thema migrieren. So möchten Sie zum Beispiel vielleicht mehrere Felder in der Quelle in einem einzigen Feld im Ziel vereinen. Die folgenden Attributzuordnung veranschaulicht, wie die Daten umstrukturiert werden.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKafka",
            "rule-action": "map-record-to-record",
            "target-table-name": "CustomerData",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            },
            "mapping-parameters": {
                "partition-key-type": "attribute-name",
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "firstname",
                    "lastname",
                    "homeaddress",
                    "homephone",
                    "workaddress",
                    "workphone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${lastname}, ${firstname}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "json",
                        "value": {
                            "Home": {
                                "Address": "${homeaddress}",
                                "Phone": "${homephone}"
                            },
                            "Work": {
                                "Address": "${workaddress}",
                                "Phone": "${workphone}"
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Um einen konstanten Wert für festzulegen`partition-key`, geben Sie an`"partition-key-type: "constant"`, dass dadurch der Partitionswert auf gesetzt wird`constant`. So könnten Sie auf diese Weise beispielsweise erzwingen, dass alle Daten in einer einzigen Partition gespeichert werden. Die folgende Darstellung veranschaulicht dieses Konzept. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "1",
            "rule-name": "TransformToKafka",
            "rule-action": "map-record-to-document",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer"
            },
            "mapping-parameters": {
                "partition-key-type": "constant",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "attribute-name": "CustomerName",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "attribute-name": "ContactDetails",
                        "value": {
                            "Home": {
                                "Address": "${HomeAddress}",
                                "Phone": "${HomePhone}"
                            },
                            "Work": {
                                "Address": "${WorkAddress}",
                                "Phone": "${WorkPhone}"
                            }
                        }
                    },
                    {
                        "attribute-name": "DateOfBirth",
                        "value": "${DateOfBirth}"
                    }
                ]
            }
        }
    ]
}
```

**Anmerkung**  
Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Tabelle bestimmt ist, lautet `TaskId.SchemaName.TableName`. Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Aufgabe bestimmt ist, ist die `TaskId` des betreffenden Datensatzes. Wenn Sie einen `partition-key`-Wert in der Objektzuweisung angeben, hat dies keine Auswirkungen auf den `partition-key` für einen Steuerungsdatensatz.  
 Wann `attribute-name` in einer Tabellenzuordnungsregel auf festgelegt `partition-key-type` ist, müssen Sie angeben`partition-key-name`, was entweder auf eine Spalte aus der Quelltabelle oder auf eine in der Zuordnung definierte benutzerdefinierte Spalte verweisen muss. Zusätzlich `attribute-mappings` muss definiert werden, wie Quellspalten dem Ziel-Kafka-Thema zugeordnet werden.

### Replikation für mehrere Themen mithilfe der Objektzuweisung
<a name="CHAP_Target.Kafka.MultiTopic"></a>

Standardmäßig migrieren AWS DMS Aufgaben alle Quelldaten zu einem der folgenden Kafka-Themen:
+ Wie im Feld **Thema** des AWS DMS Zielendpunkts angegeben.
+ Wie von `kafka-default-topic` angegeben, wenn das Feld **Thema** des Zielendpunkts nicht gefüllt ist und die Kafka-Einstellung `auto.create.topics.enable` auf `true` gesetzt ist.

Bei AWS DMS Engine-Versionen 3.4.6 und höher können Sie das `kafka-target-topic` Attribut verwenden, um jede migrierte Quelltabelle einem separaten Thema zuzuordnen. Mit den folgenden Objektzuweisungsregeln werden beispielsweise die Quelltabellen `Customer` und `Address` zu den Kafka-Themen `customer_topic` bzw. `address_topic` migriert. AWS DMS Migriert gleichzeitig alle anderen Quelltabellen, einschließlich der `Bills` Tabelle im `Test` Schema, zu dem im Zielendpunkt angegebenen Thema.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "MapToKafka1",
            "rule-action": "map-record-to-record",
            "kafka-target-topic": "customer_topic",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer" 
            },
            "partition-key-type": "constant"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "3",
            "rule-name": "MapToKafka2",
            "rule-action": "map-record-to-record",
            "kafka-target-topic": "address_topic",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Address"
            },
            "partition-key-type": "constant"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "4",
            "rule-name": "DefaultMapToKafka",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Bills"
            }
        }
    ]
}
```

Mithilfe der Kafka-Replikation für mehrere Themen können Sie Quelltabellen mit einer einzigen Replikationsaufgabe gruppieren und zu separaten Kafka-Themen migrieren.

### Nachrichtenformat für Apache Kafka
<a name="CHAP_Target.Kafka.Messageformat"></a>

Die JSON-Ausgabe ist einfach eine Liste von Schlüssel-Wert-Paaren. 

**RecordType**  
Der Datensatztyp kann entweder für Daten oder zur Steuerung bestimmt sein. *Datensätze für Daten*repräsentieren die tatsächlichen Zeilen in der Quelle. *Steuerungsdatensätze* sind für wichtige Ereignisse im Stream bestimmt, z. B. einen Neustart der Aufgabe.

**Operation**  
Mögliche Operationen für Datensätze sind `load`, `insert`, `update` oder `delete`.  
Mögliche Operationen für Steuerungsdatensätze sind `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` oder `column-type-change`.

**SchemaName**  
Das Quellschema für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**TableName**  
Die Quelltabelle für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**Zeitstempel**  
Der Zeitstempel für den Zeitpunkt, an dem die JSON-Nachricht erstellt wurde. Das Feld ist mit dem ISO-8601-Format formatiert.

Das folgende Beispiel für eine JSON-Nachricht veranschaulicht eine Datentyp-Nachricht mit allen zusätzlichen Metadaten.

```
{ 
   "data":{ 
      "id":100000161,
      "fname":"val61s",
      "lname":"val61s",
      "REGION":"val61s"
   },
   "metadata":{ 
      "timestamp":"2019-10-31T22:53:59.721201Z",
      "record-type":"data",
      "operation":"insert",
      "partition-key-type":"primary-key",
      "partition-key-value":"sbtest.sbtest_x.100000161",
      "schema-name":"sbtest",
      "table-name":"sbtest_x",
      "transaction-id":9324410911751,
      "transaction-record-id":1,
      "prev-transaction-id":9324410910341,
      "prev-transaction-record-id":10,
      "commit-timestamp":"2019-10-31T22:53:55.000000Z",
      "stream-position":"mysql-bin-changelog.002171:36912271:0:36912333:9324410911751:mysql-bin-changelog.002171:36912209"
   }
}
```

Das folgende Beispiel für eine JSON-Nachricht veranschaulicht eine Steuerungstyp-Nachricht.

```
{ 
   "control":{ 
      "table-def":{ 
         "columns":{ 
            "id":{ 
               "type":"WSTRING",
               "length":512,
               "nullable":false
            },
            "fname":{ 
               "type":"WSTRING",
               "length":255,
               "nullable":true
            },
            "lname":{ 
               "type":"WSTRING",
               "length":255,
               "nullable":true
            },
            "REGION":{ 
               "type":"WSTRING",
               "length":1000,
               "nullable":true
            }
         },
         "primary-key":[ 
            "id"
         ],
         "collation-name":"latin1_swedish_ci"
      }
   },
   "metadata":{ 
      "timestamp":"2019-11-21T19:14:22.223792Z",
      "record-type":"control",
      "operation":"create-table",
      "partition-key-type":"task-id",
      "schema-name":"sbtest",
      "table-name":"sbtest_t1"
   }
}
```

# Verwendung eines Amazon OpenSearch Service-Clusters als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch"></a>

Sie können AWS DMS es verwenden, um Daten zu Amazon OpenSearch Service (OpenSearch Service) zu migrieren. OpenSearch Service ist ein verwalteter Service, der die Bereitstellung, den Betrieb und die Skalierung eines OpenSearch Service-Clusters vereinfacht. 

In OpenSearch Service arbeiten Sie mit Indizes und Dokumenten. Ein *Index* ist eine Sammlung von Dokumenten, und ein *Dokument* ist ein JSON-Objekt, das Skalarwerte, Arrays und andere Objekte enthält. OpenSearch stellt eine JSON-basierte Abfragesprache bereit, sodass Sie Daten in einem Index abfragen und die entsprechenden Dokumente abrufen können.

Wenn AWS DMS Indizes für einen Zielendpunkt für OpenSearch Service erstellt werden, wird für jede Tabelle vom Quellendpunkt aus ein Index erstellt. Die Kosten für die Erstellung eines OpenSearch Serviceindex hängen von mehreren Faktoren ab. Dies sind die Anzahl der erstellten Indizes, die Gesamtmenge der Daten in diesen Indizes und die geringe Menge an Metadaten, die für jedes Dokument OpenSearch gespeichert werden.

Konfigurieren Sie Ihren OpenSearch Service-Cluster mit Rechen- und Speicherressourcen, die für den Umfang Ihrer Migration geeignet sind. Wir empfehlen, dass Sie abhängig von der Replikationsaufgabe, die Sie verwenden möchten, die folgenden Faktoren berücksichtigen:
+ Erwägen Sie für einen vollständigen Datenladevorgang die Gesamtmenge der Daten, die Sie migrieren möchten, sowie auch die Übertragungsgeschwindigkeit.
+ Berücksichtigen Sie bei der Replikation laufender Änderungen die Häufigkeit der Updates und Ihre end-to-end Latenzanforderungen.

Konfigurieren Sie außerdem die Indexeinstellungen in Ihrem OpenSearch Cluster und achten Sie dabei genau auf die Anzahl der Dokumente.

**Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge**

 AWS DMS Unterstützt eine Multithread-Volllast zu einem OpenSearch Service-Zielcluster, um die Übertragungsgeschwindigkeit zu erhöhen. AWS DMS unterstützt dieses Multithreading mit Aufgabeneinstellungen, die Folgendes beinhalten:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle mithilfe einer speziellen Unteraufgabe in den entsprechenden OpenSearch Service-Zielindex. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihren OpenSearch Service-Zielindex zu laden. Der Höchstwert für ein OpenSearch Serviceziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
**Anmerkung**  
Wenn Sie am Standardwert für `ParallelLoadThreads` (0) keine Änderung vornehmen, überträgt AWS DMS jeweils immer nur einen Datensatz. Dieser Ansatz belastet Ihren OpenSearch Service-Cluster übermäßig. Überprüfen Sie, dass für diese Option ein Wert 1 oder mehr angegeben wurde.
+ `ParallelLoadBufferSize`— Verwenden Sie diese Option, um die maximale Anzahl von Datensätzen anzugeben, die in dem Puffer gespeichert werden sollen, den die parallel Ladethreads verwenden, um Daten in das OpenSearch Serviceziel zu laden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.

Weitere Informationen darüber, wie DMS einen OpenSearch Service-Cluster mithilfe von Multithreading lädt, finden Sie im AWS Blogbeitrag [Scale Amazon OpenSearch Service](https://aws.amazon.com/blogs/database/scale-amazon-elasticsearch-service-for-aws-database-migration-service-migrations/) for Migrations. AWS Database Migration Service 

**Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge**

Sie können die Leistung der Change Data Capture (CDC) für einen OpenSearch Service-Zielcluster verbessern, indem Sie Aufgabeneinstellungen verwenden, um das Verhalten des API-Aufrufs zu ändern. `PutRecords` Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last ausführen und 32 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 
**Anmerkung**  
Support für die Verwendung von `ParallelApply*` Aufgabeneinstellungen während der Übertragung von CDC zu Amazon OpenSearch Service-Zielendpunkten ist in den AWS DMS Versionen 3.4.0 und höher verfügbar.

 AWS DMS Unterstützt die folgenden Aufgabeneinstellungen, um die Leistung des CDC zu fördern:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen OpenSearch Service-Zielendpunkt weiterzuleiten. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize`— Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange gespeichert werden sollen, damit gleichzeitige Threads während eines CDC-Ladevorgangs an einen OpenSearch Service-Zielendpunkt weitergeleitet werden. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread`— Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus den Warteschlangen zu entfernen und während des CDC einen Batchload für einen OpenSearch Service-Endpunkt zu generieren.

Wenn Sie `ParallelApply*`-Aufgabeneinstellungen verwenden, ist der `primary-key` der Tabelle der `partition-key-type`-Standardwert, nicht `schema-name.table-name`.

## Migration von einer relationalen Datenbanktabelle zu einem Serviceindex OpenSearch
<a name="CHAP_Target.Elasticsearch.RDBMS2Elasticsearch"></a>

AWS DMS unterstützt die Migration von Daten zu den skalaren Datentypen von OpenSearch Service. Wenn Sie von einer relationalen Datenbank wie Oracle oder MySQL zu OpenSearch Service migrieren, möchten Sie möglicherweise die Art und Weise, wie Sie diese Daten speichern, neu strukturieren.

AWS DMS unterstützt die folgenden skalaren OpenSearch Service-Datentypen: 
+ Boolesch 
+ Date
+ Gleitkommazahl
+ Int
+ Zeichenfolge

AWS DMS konvertiert Daten vom Typ Date in den Typ String. Sie können zum Auslegen dieser Datumsangaben eine benutzerdefinierte Zuweisung angeben.

AWS DMS unterstützt keine Migration von LOB-Datentypen.

## Voraussetzungen für die Verwendung von Amazon OpenSearch Service als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Prerequisites"></a>

Bevor Sie mit der Arbeit mit einer OpenSearch Service-Datenbank als Ziel für beginnen AWS DMS, stellen Sie sicher, dass Sie eine AWS Identity and Access Management (IAM-) Rolle erstellen. Diese Rolle sollte den AWS DMS Zugriff auf die OpenSearch Dienstindizes am Zielendpunkt ermöglichen. In der folgenden IAM-Richtlinie sind die Mindestzugriffsberechtigungen dargestellt.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "Service": "dms.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Die Rolle, die Sie für die Migration zu OpenSearch Service verwenden, muss über die folgenden Berechtigungen verfügen.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttpDelete",
        "es:ESHttpGet",
        "es:ESHttpHead",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Ersetzen Sie es im vorherigen Beispiel `region` durch die AWS Regionskennung, *`account-id`* durch Ihre AWS Konto-ID und `domain-name` durch den Namen Ihrer Amazon OpenSearch Service-Domain. Ein Beispiel ist `arn:aws:es:us-west-2:123456789012:domain/my-es-domain`.

## Endpunkteinstellungen bei Verwendung von OpenSearch Service als Ziel für AWS DMS
<a name="CHAP_Target.Elasticsearch.Configuration"></a>

Sie können Endpunkteinstellungen verwenden, um Ihre OpenSearch Service-Zieldatenbank ähnlich wie bei der Verwendung zusätzlicher Verbindungsattribute zu konfigurieren. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in der mit der [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)`--elasticsearch-settings '{"EndpointSetting": "value", ...}'`JSON-Syntax erstellen.

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


| Attributname | Zulässige Werte | Standardwert und Beschreibung | 
| --- | --- | --- | 
|  `FullLoadErrorPercentage`   |  Eine positive Ganzzahl größer als 0, aber nicht größer als 100.  |  10 – Bei einem vollständigen Ladevorgang bestimmt dieses Attribut den Schwellenwert von Fehlern, die zulässig sind, bevor die Aufgabe fehlschlägt. Nehmen wir beispielsweise an, dass 1.500 Zeilen am Quellendpunkt vorhanden sind und dieser Parameter auf 10 eingestellt ist. Dann schlägt die Aufgabe fehl AWS DMS , wenn beim Schreiben auf den Zielendpunkt mehr als 150 Fehler (10 Prozent der Zeilenanzahl) auftreten.  | 
|   `ErrorRetryDuration`   |  Eine positive Ganzzahl größer als 0.  |  300 — Wenn am Zielendpunkt ein Fehler auftritt, werden die AWS DMS Versuche so viele Sekunden lang wiederholt. Andernfalls schlägt die Aufgabe fehl.  | 
|  `UseNewMappingType`  | true oder false |  `false`, aber um mit opensearch v2.x zu funktionieren, sollte es auf eingestellt sein. `true`  | 

## Einschränkungen bei der Verwendung von Amazon OpenSearch Service als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie Amazon OpenSearch Service als Ziel verwenden:
+ OpenSearch Der Service verwendet dynamisches Mapping (auto Schätzung), um die Datentypen zu bestimmen, die für migrierte Daten verwendet werden sollen.
+ OpenSearch Der Service speichert jedes Dokument mit einer eindeutigen ID. Es folgt ein Beispiel für eine solche ID. 

  ```
  "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"
  ```

  Jede Dokument-ID ist 64 Bytes lang. Dies kann daher als Speicheranforderung vorausgesetzt werden. Wenn Sie beispielsweise 100.000 Zeilen aus einer AWS DMS Quelle migrieren, benötigt der resultierende OpenSearch Serviceindex Speicherplatz für weitere 6.400.000 Byte.
+ Mit OpenSearch Service können Sie keine Aktualisierungen an den Primärschlüsselattributen vornehmen. Diese Einschränkung ist wichtig, wenn Sie die laufende Replikation mit Change Data Capture (CDC) verwenden, da sie zu unerwünschten Daten im Ziel führen kann. Im CDC-Modus werden Primärschlüssel SHA256 Werten zugeordnet, die 32 Byte lang sind. Diese werden in für Menschen lesbare 64-Byte-Zeichenfolgen konvertiert und als Servicedokument verwendet. OpenSearch IDs
+ Wenn AWS DMS Elemente gefunden werden, die nicht migriert werden können, werden Fehlermeldungen in Amazon CloudWatch Logs geschrieben. Dieses Verhalten unterscheidet sich von dem anderer AWS DMS Zielendpunkte, die Fehler in eine Ausnahmetabelle schreiben.
+ AWS DMS unterstützt keine Verbindung zu einem Amazon ES-Cluster, für den Fine-Grained Access Control mit Masterbenutzer und Passwort aktiviert ist.
+ AWS DMS unterstützt OpenSearch Service Serverless nicht.
+ OpenSearch Der Dienst unterstützt das Schreiben von Daten in bereits bestehende Indizes nicht.
+ Die Einstellung für die Replikationsaufgabe `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` wird für die Verwendung mit einem OpenSearch Zielendpunkt nicht unterstützt.
+ Bei der Migration von Daten zu Amazon Elasticsearch mithilfe AWS DMS müssen die Quelldaten über einen Primärschlüssel oder eine eindeutige Kennungsspalte verfügen. Wenn die Quelldaten keinen Primärschlüssel oder keine eindeutige Kennung haben, müssen Sie einen mithilfe der define-primary-key Transformationsregel definieren.

## Zieldatentypen für Amazon OpenSearch Service
<a name="CHAP_Target.Elasticsearch.DataTypes"></a>

Bei der AWS DMS Migration von Daten aus heterogenen Datenbanken ordnet der Service Datentypen aus der Quelldatenbank Zwischendatentypen zu, die als Datentypen bezeichnet AWS DMS werden. Der Service ordnet dann die Zwischendatentypen den Zieldatentypen zu. Die folgende Tabelle zeigt jeden AWS DMS Datentyp und den Datentyp, dem er in OpenSearch Service zugeordnet ist.


| AWS DMS Datentyp | OpenSearch Datentyp des Dienstes | 
| --- | --- | 
|  Boolesch  |  boolesch  | 
|  Datum  |  Zeichenfolge  | 
|  Zeit  |  date  | 
|  Zeitstempel  |  date  | 
|  INT4  |  Ganzzahl  | 
|  Real4  |  float  | 
|  UINT4  |  Ganzzahl  | 

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).

# Amazon DocumentDB als Ziel für den AWS Database Migration Service verwenden
<a name="CHAP_Target.DocumentDB"></a>

 Informationen darüber, welche Versionen von Amazon DocumentDB (mit MongoDB-Kompatibilität) AWS DMS unterstützt werden, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md) Sie können mithilfe von AWS DMS Daten zu Amazon DocumentDB (mit MongoDB-Kompatibilität) migrieren – von jeder der Quelldaten-Engines aus, die AWS DMS unterstützt. Die Quell-Engine kann sich in einem AWS verwalteten Service wie Amazon RDS, Aurora oder Amazon S3 befinden. Die Engine kann sich außerdem in einer selbstverwalteten Datenbank befinden, wie beispielsweise MongoDB, das auf Amazon EC2 oder On-Premises ausgeführt wird.

Sie können AWS DMS damit Quelldaten in Amazon DocumentDB DocumentDB-Datenbanken, Sammlungen oder Dokumente replizieren. 

**Anmerkung**  
Wenn der Quellendpunkt MongoDB oder Amazon DocumentDB ist, führen Sie die Migration im **Dokumentmodus** aus.

MongoDB speichert Daten in einem binären JSON-Format (BSON). AWS DMS unterstützt alle BSON-Datentypen, die von Amazon DocumentDB unterstützt werden. Eine Liste dieser Datentypen finden Sie unter [Unterstützte APIs MongoDB-Operationen und Datentypen](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html) im *Amazon DocumentDB Developer Guide*.

Wenn der Quellendpunkt eine relationale Datenbank ist, AWS DMS ordnet er Datenbankobjekte Amazon DocumentDB wie folgt zu:
+ Eine relationale Datenbank oder ein Datenbankschema wird einer *Datenbank* in Amazon DocumentDB zugeordnet. 
+ Tabellen innerhalb einer relationalen Datenbank werden *Sammlungen* in Amazon DocumentDB zugeordnet.
+ Datensätze in einer relationalen Tabelle werden *Dokumenten* in Amazon DocumentDB zugeordnet. Jedes Dokument wird aus den Daten des Quelldatensatzes erstellt.

Wenn der Quellendpunkt Amazon S3 ist, entsprechen die resultierenden Amazon-DocumentDB-Objekte den AWS DMS -Zuordnungsregeln für Amazon S3. Betrachten Sie beispielsweise die folgende URI:

```
s3://amzn-s3-demo-bucket/hr/employee
```

In diesem Fall AWS DMS ordnet die Objekte Amazon DocumentDB wie folgt `amzn-s3-demo-bucket` zu:
+ Der oberste URI-Teil (`hr`) wird einer Datenbank in Amazon DocumentDB zugeordnet. 
+ Der nächste URI-Teil (`employee`) wird einer Sammlung in Amazon DocumentDB zugeordnet.
+ Jedes Objekt in `employee` wird einem Dokument in Amazon DocumentDB zugeordnet.

Weitere Informationen zu den Zuordnungsregeln für Amazon S3 finden Sie unter [Verwendung von Amazon S3 als Quelle für AWS DMS](CHAP_Source.S3.md).

**Amazon-DocumentDB-Endpunkteinstellungen**

In den AWS DMS Versionen 3.5.0 und höher können Sie die Leistung von Change Data Capture (CDC) für Amazon DocumentDB DocumentDB-Endpunkte verbessern, indem Sie die Aufgabeneinstellungen für parallel Threads und Massenoperationen optimieren. Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last durchführen und 128 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 

Unterstützt die folgenden Aufgabeneinstellungen, um die CDC-Leistung zu fördern: AWS DMS 
+ `ParallelApplyThreads`— Gibt die Anzahl der gleichzeitigen Threads an, die während eines CDC-Ladens AWS DMS verwendet werden, um Datensätze an einen Amazon DocumentDB DocumentDB-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während einer CDC-Last an einen Amazon-DocumentDB-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während CDC eine Stapellast für einen Amazon-DocumentDB-Endpunkt zu generieren. Der Standardwert ist 1. Der Höchstwert ist 512.

**Anmerkung**  
 Bei Amazon DocumentDB DocumentDB-Zielen kann die parallel CDC-Anwendung zu doppelten Schlüsselfehlern führen, oder bei Workloads, die sekundäre eindeutige Indizes verwenden oder eine strikte Reihenfolge der Änderungen erfordern, kann eine blockierte CDC-Anwendung auftreten. Verwenden Sie für diese Workloads die standardmäßige Single-Thread-CDC-Anwendungskonfiguration. 

Weitere Informationen zur Arbeit mit Amazon DocumentDB als Ziel für AWS DMS finden Sie in den folgenden Abschnitten:

**Topics**
+ [Zuordnen von Daten von einer Quelle zu einem Amazon-DocumentDB-Ziel](#CHAP_Target.DocumentDB.data-mapping)
+ [Herstellen einer Verbindung mit elastischen Amazon-DocumentDB-Clustern als Ziel](#CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect)
+ [Laufende Replikation mit Amazon DocumentDB als Ziel](#CHAP_Target.DocumentDB.data-mapping.ongoing-replication)
+ [Einschränkungen bei Verwendung von Amazon DocumentDB als Ziel](#CHAP_Target.DocumentDB.limitations)
+ [Verwenden von Endpunkteinstellungen mit Amazon DocumentDB als Ziel](#CHAP_Target.DocumentDB.ECAs)
+ [Zieldatentypen für Amazon DocumentDB](#CHAP_Target.DocumentDB.datatypes)

**Anmerkung**  
Eine step-by-step exemplarische Vorgehensweise für den Migrationsprozess finden Sie unter [Migration von MongoDB zu Amazon DocumentDB im Migrationshandbuch](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MongoDB2DocumentDB.html). AWS Database Migration Service Step-by-Step 

## Zuordnen von Daten von einer Quelle zu einem Amazon-DocumentDB-Ziel
<a name="CHAP_Target.DocumentDB.data-mapping"></a>

AWS DMS liest Datensätze vom Quellendpunkt und erstellt JSON-Dokumente auf der Grundlage der gelesenen Daten. Für jedes JSON-Dokument AWS DMS muss ein `_id` Feld bestimmt werden, das als eindeutiger Bezeichner dient. Anschließend wird das JSON-Dokument in eine Amazon-DocumentDB-Sammlung geschrieben, wobei das Feld `_id` als Primärschlüssel verwendet wird.

### Quelldaten, die eine einzelne Spalte darstellen
<a name="CHAP_Target.DocumentDB.data-mapping.single-column"></a>

Wenn die Quelldaten aus einer einzelnen Spalte bestehen, müssen die Daten vom Typ Zeichenfolge sein. (Je nach Quell-Engine kann der tatsächliche Datentyp VARCHAR, NVARCHAR, TEXT, LOB, CLOB oder ähnlich lauten.) AWS DMS geht davon aus, dass es sich bei den Daten um ein gültiges JSON-Dokument handelt, und repliziert die Daten unverändert in Amazon DocumentDB.

Wenn das resultierende JSON-Dokument ein Feld mit dem Namen `_id` enthält, wird dieses Feld als eindeutige `_id` in Amazon DocumentDB verwendet.

Wenn das JSON-Dokument kein `_id`-Feld enthält, generiert Amazon DocumentDB automatisch einen `_id`-Wert.

### Quelldaten, die mehrere Spalten darstellen
<a name="CHAP_Target.DocumentDB.data-mapping.multiple-columns"></a>

Wenn die Quelldaten aus mehreren Spalten bestehen, wird aus all AWS DMS diesen Spalten ein JSON-Dokument erstellt. Gehen Sie wie folgt vor, um das `_id` Feld für das AWS DMS Dokument zu ermitteln:
+ Wenn der Name einer der Spalten `_id` lautet, dann werden die Daten in dieser Spalte als Ziel-`_id` verwendet.
+ Wenn es keine `_id` Spalte gibt, die Quelldaten jedoch einen Primärschlüssel oder einen eindeutigen Index haben, wird dieser Schlüssel oder Indexwert als `_id` Wert AWS DMS verwendet. Die Daten aus dem Primärschlüssel oder eindeutigen Index erscheinen auch als explizite Felder im JSON-Dokument.
+ Wenn keine `_id`-Spalte vorhanden ist und es keinen Primärschlüssel oder eindeutigen Index gibt, generiert Amazon DocumentDB automatisch einen `_id`-Wert.

### Zwingen eines Datentyps an den Zielendpunkt
<a name="CHAP_Target.DocumentDB.coercing-datatype"></a>

AWS DMS kann Datenstrukturen ändern, wenn es auf einen Amazon DocumentDB DocumentDB-Zielendpunkt schreibt. Sie können diese Änderungen anfordern, indem Sie Spalten und Tabellen am Quellendpunkt umbenennen oder Transformationsregeln bereitstellen, die bei der Ausführung einer Aufgabe angewendet werden.

#### Verwenden eines verschachtelten JSON-Dokuments (json\$1prefix)
<a name="CHAP_Target.DocumentDB.coercing-datatype.json"></a>

Um einen Datentyp zu erzwingen, können Sie dem Namen der Quellspalte das Präfix `json_` (d. h. `json_columnName`) entweder manuell oder mittels einer Transformation voranstellen. In diesem Fall wird die Spalte nicht als Zeichenfolgenfeld, sondern als verschachteltes JSON-Dokument innerhalb des Zieldokuments erstellt.

Angenommen, Sie möchten beispielsweise das folgende Dokument von einem MongoDB-Quellenendpunkt migrieren.

```
{
    "_id": "1", 
    "FirstName": "John", 
    "LastName": "Doe",
    "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}"
}
```

Wenn Sie keinen der Quelldatentypen erzwingen, wird das eingebettete `ContactDetails`-Dokument als Zeichenfolge migriert.

```
{
    "_id": "1", 
    "FirstName": "John", 
    "LastName": "Doe",
    "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}"
}
```

Sie können jedoch eine Transformationsregel hinzufügen, um `ContactDetails` zu einem JSON-Objekt umzuwandeln. Angenommen, der ursprüngliche Name der Quellspalte ist `ContactDetails`. Um den Datentyp als verschachteltes JSON zu erzwingen, muss die Spalte am Quellendpunkt in „json\$1ContactDetails“ umbenannt werden, indem entweder der Quelle manuell das Präfix „\$1json\$1\$1“ hinzugefügt wird oder mithilfe von Transformationsregeln. Sie können beispielsweise die folgende Transformationsregel verwenden:

```
{
    "rules": [
    {
    "rule-type": "transformation",
    "rule-id": "1",
    "rule-name": "1",
    "rule-target": "column",
    "object-locator": {
    "schema-name": "%",
    "table-name": "%",
    "column-name": "ContactDetails"
     },
    "rule-action": "rename",
    "value": "json_ContactDetails",
    "old-value": null
    }
    ]
}
```

AWS DMS repliziert das Feld wie folgt als verschachteltes JSON. ContactDetails 

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe",
    "ContactDetails": {
        "Home": {
            "Address": "Boston",
            "Phone": "1111111111"
        },
        "Work": {
            "Address": "Boston",
            "Phone": "2222222222"
        }
    }
}
```

#### Verwenden eines JSON-Arrays (array\$1prefix)
<a name="CHAP_Target.DocumentDB.coercing-datatype.array"></a>

Um einen Datentyp zu erzwingen, können Sie einem Spaltennamen das Präfix `array_` (d. h. `array_columnName`) entweder manuell oder mittels einer Transformation voranstellen. In diesem Fall AWS DMS betrachtet die Spalte als JSON-Array und erstellt sie als solches im Zieldokument.

Angenommen, Sie möchten das folgende Dokument von einem MongoDB-Quellenendpunkt migrieren.

```
{
    "_id" : "1",
    "FirstName": "John",
    "LastName": "Doe", 
    "ContactAddresses": ["Boston", "New York"],             
    "ContactPhoneNumbers": ["1111111111", "2222222222"]
}
```

Wenn Sie keinen der Quelldatentypen erzwingen, wird das eingebettete `ContactDetails`-Dokument als Zeichenfolge migriert.

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe", 
    "ContactAddresses": "[\"Boston\", \"New York\"]",             
    "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]" 
}
```

 Sie können jedoch Transformationsregeln hinzufügen, um `ContactAddress` und `ContactPhoneNumbers` zu JSON-Arrays umzuwandeln, wie in der folgenden Tabelle veranschaulicht.


****  

| Ursprünglicher Name der Quellspalte | Umbenannte Quellspalte | 
| --- | --- | 
| ContactAddress | array\$1ContactAddress | 
| ContactPhoneNumbers | array\$1ContactPhoneNumbers | 

AWS DMS repliziert `ContactAddress` und `ContactPhoneNumbers` wie folgt.

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe",
    "ContactAddresses": [
        "Boston",
        "New York"
    ],
    "ContactPhoneNumbers": [
        "1111111111",
        "2222222222"
    ]
}
```

### Herstellen einer Verbindung mit Amazon DocumentDB über TLS
<a name="CHAP_Target.DocumentDB.tls"></a>

Standardmäßig akzeptiert ein neu erstellter Amazon-DocumentDB-Cluster sichere Verbindungen nur mit Transport Layer Security (TLS). Wenn TLS aktiviert ist, erfordert jede Verbindung mit Amazon DocumentDB einen öffentlichen Schlüssel.

Sie können den öffentlichen Schlüssel für Amazon DocumentDB abrufen, indem Sie die Datei,`rds-combined-ca-bundle.pem`, aus einem AWS gehosteten Amazon S3 S3-Bucket herunterladen. Weitere Informationen zum Herunterladen dieser Datei finden Sie unter [Encrypting connections using TLS](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) im *Entwicklerhandbuch für Amazon DocumentDB*.

Nachdem Sie diese PEM-Datei heruntergeladen haben, können Sie den darin enthaltenen öffentlichen Schlüssel AWS DMS wie unten beschrieben importieren.

#### AWS-Managementkonsole
<a name="CHAP_Target.DocumentDB.tls.con"></a>

**So importieren Sie die Datei mit dem öffentlichen Schlüssel (.pem)**

1. [Öffnen Sie die AWS DMS Konsole unter /dms. https://console.aws.amazon.com](https://console.aws.amazon.com/dms)

1. Wählen Sie im Navigationsbereich **Certificates** aus.

1. Wählen Sie **Import certificate (Zertifikat importieren)** aus und gehen Sie folgendermaßen vor:
   + Geben Sie für **Certificate Identifier (Zertifikat-ID)** einen eindeutigen Namen für das Zertifikat ein, z. B. `docdb-cert`.
   + Für **Import file (Datei importieren)** navigieren Sie zum Speicherort der .pem-Datei.

   Wenn Sie die gewünschten Einstellungen vorgenommen haben, wählen Sie **Add new CA certificate (Neues CA-Zertifikat hinzufügen)** aus.

#### AWS CLI
<a name="CHAP_Target.DocumentDB.tls.cli"></a>

Verwenden Sie den Befehl `aws dms import-certificate`, wie im folgenden Beispiel gezeigt.

```
aws dms import-certificate \
    --certificate-identifier docdb-cert \
    --certificate-pem file://./rds-combined-ca-bundle.pem
```

Wenn Sie einen AWS DMS Zielendpunkt erstellen, geben Sie die Zertifikats-ID an (z. B.`docdb-cert`). Legen Sie außerdem den SSL-Modus-Parameter auf `verify-full` fest.

## Herstellen einer Verbindung mit elastischen Amazon-DocumentDB-Clustern als Ziel
<a name="CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect"></a>

In den AWS DMS Versionen 3.4.7 und höher können Sie einen Amazon DocumentDB DocumentDB-Zielendpunkt als Elastic Cluster erstellen. Wenn Sie Ihren Zielendpunkt als elastischen Cluster erstellen, müssen Sie ein neues SSL-Zertifikat an Ihren Endpunkt im elastischen Amazon-DocumentDB-Cluster anfügen, da Ihr vorhandenes SSL-Zertifikat nicht funktioniert.

**So fügen Sie ein neues SSL-Zertifikat an Ihren Endpunkt im elastischen Amazon-DocumentDB-Cluster an**

1. Öffnen Sie in einem Browser die Datei [ https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) und speichern Sie den Inhalt beispielsweise in einer `.pem` Datei mit einem eindeutigen Dateinamen. `SFSRootCAG2.pem` Dies ist die Zertifikatsdatei, die Sie in den nachfolgenden Schritten importieren müssen.

1. Erstellen Sie den Endpunkt im elastischen Cluster und legen Sie die folgenden Optionen fest:

   1. Wählen Sie unter **Endpunktkonfiguration** die Option **Neues CA-Zertifikat hinzufügen** aus.

   1. Geben Sie für **Zertifikat-ID** **SFSRootCAG2.pem** ein.

   1. Wählen Sie unter **Zertifikatdatei importieren** die Option **Datei auswählen** und navigieren Sie zur Datei `SFSRootCAG2.pem`, die Sie zuvor heruntergeladen haben.

   1. Wählen Sie die heruntergeladene Datei `SFSRootCAG2.pem` aus und öffnen Sie sie.

   1. Wählen Sie **Import certificate (Zertifikat importieren)**.

   1. **Wählen Sie in der Dropdownliste Zertifikat auswählen** **die Datei .pem aus SFSRootCAG2.**

Das neue SSL-Zertifikat aus der heruntergeladenen Datei `SFSRootCAG2.pem` ist jetzt an Ihren Endpunkt im elastischen Amazon-DocumentDB-Cluster angehängt.

## Laufende Replikation mit Amazon DocumentDB als Ziel
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication"></a>

Wenn die laufende Replikation (Erfassung von Datenänderungen, CDC) für Amazon DocumentDB als Ziel aktiviert ist, bieten die AWS DMS -Versionen 3.5.0 und höher eine zwanzigfache Leistungsverbesserung gegenüber früheren Versionen. In früheren Versionen, in denen bis zu 250 Datensätze pro Sekunde AWS DMS verarbeitet wurden, werden AWS DMS jetzt effizient über 5000 Datensätze pro Sekunde verarbeitet. AWS DMS stellt außerdem sicher, dass Dokumente in Amazon DocumentDB mit der Quelle synchron bleiben. Wenn ein Quelldatensatz erstellt oder aktualisiert wird, AWS DMS müssen Sie zunächst ermitteln, welcher Amazon DocumentDB DocumentDB-Datensatz von den folgenden Aktionen betroffen ist:
+ Wenn der Quelldatensatz über eine Spalte mit dem Namen `_id` verfügt, bestimmt der Wert dieser Spalte den entsprechenden `_id`-Wert in der Amazon-DocumentDB-Sammlung.
+ Wenn es keine `_id` Spalte gibt, aber die Quelldaten einen Primärschlüssel oder einen eindeutigen Index haben, wird dieser Schlüssel oder Indexwert als `_id` für die Amazon DocumentDB-Sammlung AWS DMS verwendet.
+ Wenn der Quelldatensatz keine `_id` Spalte, keinen Primärschlüssel oder keinen eindeutigen Index hat, ordnet er alle Quellspalten den entsprechenden Feldern in der Amazon DocumentDB-Sammlung zu. AWS DMS 

Wenn ein neuer Quelldatensatz erstellt wird, AWS DMS schreibt ein entsprechendes Dokument in Amazon DocumentDB. Wenn ein vorhandener Quelldatensatz aktualisiert wird, AWS DMS werden die entsprechenden Felder im Zieldokument in Amazon DocumentDB aktualisiert. Alle Felder, die zwar im Zieldokument, aber nicht im Quelldatensatz vorhanden sind, bleiben unberührt.

Wenn ein Quelldatensatz gelöscht wird, AWS DMS wird das entsprechende Dokument aus Amazon DocumentDB gelöscht.

### Strukturelle Änderungen (DDL) an der Quelle
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication.ddl"></a>

Bei der laufenden Replikation werden alle Änderungen an Quelldatenstrukturen (z. B. Tabellen, Spalten usw.) an ihre Entsprechungen in Amazon DocumentDB weitergegeben. In relationalen Datenbanken werden diese Änderungen durch DDL-Anweisungen (Data Definition Language) eingeleitet. In der folgenden Tabelle können Sie sehen AWS DMS , wie diese Änderungen an Amazon DocumentDB weitergegeben werden.


****  

| DDL an Quelle | Auswirkung auf das Amazon-DocumentDB-Ziel | 
| --- | --- | 
| CREATE TABLE | Erstellt eine leere Sammlung. | 
| Anweisung, die eine Tabelle umbenennt (RENAME TABLE, ALTER TABLE...RENAME und Ähnliches) | Benennt die Sammlung um. | 
| TRUNCATE TABLE | Entfernt alle Dokumente aus der Sammlung, aber nur, wenn HandleSourceTableTruncated true ist. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für den Umgang mit der DDL-Änderungsverarbeitung](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| DROP TABLE | Löscht die Sammlung, aber nur, wenn HandleSourceTableDropped true ist. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für den Umgang mit der DDL-Änderungsverarbeitung](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| Anweisung, die einer Tabelle eine Spalte hinzufügt (ALTER TABLE...ADD und Ähnliches) | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. Wenn der erste INSERT an der Quelle ausgeführt wird, wird das neue Feld dem Zieldokument hinzugefügt. | 
| ALTER TABLE...RENAME COLUMN | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. Wenn der erste INSERT an der Quelle ausgeführt wird, wird das neu benannte Feld dem Zieldokument hinzugefügt. | 
| ALTER TABLE...DROP COLUMN | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. | 
| Anweisung, die den Datentyp der Spalte ändert (ALTER COLUMN...MODIFY und Ähnliches) | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. Wenn der erste INSERT an der Quelle mit dem neuen Datentyp ausgeführt wird, wird das Zieldokument mit einem Feld dieses neuen Datentyps erstellt. | 

## Einschränkungen bei Verwendung von Amazon DocumentDB als Ziel
<a name="CHAP_Target.DocumentDB.limitations"></a>

Die folgenden Einschränkungen gelten bei der Verwendung von Amazon DocumentDB als Ziel für AWS DMS:
+ In Amazon DocumentDB dürfen Namen für Sammlungen nicht das Dollarzeichen (\$1) enthalten. Darüber hinaus dürfen Datenbanknamen keine Unicode-Zeichen enthalten.
+ AWS DMS unterstützt nicht das Zusammenführen mehrerer Quelltabellen zu einer einzigen Amazon DocumentDB-Sammlung.
+ Wenn Änderungen aus einer Quelltabelle AWS DMS verarbeitet werden, die keinen Primärschlüssel hat, werden alle LOB-Spalten in dieser Tabelle ignoriert.
+ Wenn die Option **Change table (Änderungstabelle)** aktiviert ist und AWS DMS auf eine Quellspalte mit dem Namen "*\$1id*" trifft, dann erscheint diese Spalte als "*\$1\$1id*" (zwei Unterstriche) in der Änderungstabelle.
+ Wenn Sie Oracle als Quellendpunkt wählen, muss für die Oracle-Quelle die vollständige ergänzende Protokollierung aktiviert sein. Andernfalls werden, wenn es an der Quelle Spalten gibt, die nicht geändert wurden, die Daten als Nullwerte in Amazon DocumentDB geladen.
+ Die Einstellung `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` für die Replikationsaufgabe wird nicht für die Verwendung mit einem DocumentDB-Zielendpunkt unterstützt. 
+ MongoDB-Sammlungen mit Obergrenzen werden in Amazon DocumentDB nicht unterstützt. Migriert solche Objekte jedoch AWS DMS automatisch als Sammlungen ohne Obergrenzen auf die Ziel-DocumentDB.
+ Die parallele CDC-Anwendung auf Amazon DocumentDB DocumentDB-Ziele kann zu doppelten Schlüsselfehlern führen, oder bei Workloads, die sekundäre eindeutige Indizes verwenden oder eine strikte Reihenfolge der Änderungen erfordern, können blockierte CDC-Anwendungen auftreten. Verwenden Sie für solche Workloads die standardmäßige CDC-Anwendungskonfiguration mit einem Thread.

## Verwenden von Endpunkteinstellungen mit Amazon DocumentDB als Ziel
<a name="CHAP_Target.DocumentDB.ECAs"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer Amazon-DocumentDB-Zieldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--doc-db-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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


| Attributname | Zulässige Werte | Standardwert und Beschreibung | 
| --- | --- | --- | 
|   `replicateShardCollections`   |  boolesch `true` `false`  |  Wann `true` festgelegt ist, hat diese Endpunkteinstellung die folgenden Auswirkungen und beinhaltet die folgenden Einschränkungen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.DocumentDB.html)  | 

## Zieldatentypen für Amazon DocumentDB
<a name="CHAP_Target.DocumentDB.datatypes"></a>

In der folgenden Tabelle finden Sie die Amazon DocumentDB DocumentDB-Zieldatentypen, die bei der Verwendung von AWS DMS unterstützt werden, sowie die Standardzuweisung von AWS DMS-Datentypen. Weitere Informationen zu AWS DMS-Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  AWS DMS-Datentyp  |  Amazon-DocumentDB-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  Boolesch  | 
|  BYTES  |  Binäre Daten  | 
|  DATE  | Date | 
|  TIME  | Zeichenfolge () UTF8 | 
|  DATETIME  | Date | 
|  INT1  | 32-Bit-Ganzzahl | 
|  INT2  |  32-Bit-Ganzzahl  | 
|  INT4  | 32-Bit-Ganzzahl | 
|  INT8  |  64-Bit-Ganzzahl  | 
|  NUMERIC  | Zeichenfolge (UTF8) | 
|  REAL4  |  Double  | 
|  REAL8  | Double | 
|  STRING  |  Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8  | 
|  UINT1  | 32-Bit-Ganzzahl | 
|  UINT2  | 32-Bit-Ganzzahl | 
|  UINT4  | 64-Bit-Ganzzahl | 
|  UINT8  |  Zeichenfolge () UTF8  | 
|  WSTRING  | Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8 | 
|  BLOB  | Binär | 
|  CLOB  | Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8 | 
|  NCLOB  | Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8 | 

# Verwendung von Amazon Neptune als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Neptune"></a>

Amazon Neptune ist ein schneller, zuverlässiger, vollständig verwalteter Graph-Datenbankservice, mit dem es ganz einfach ist, Anwendungen zu erstellen und auszuführen, die mit stark verbundenen Datensätzen arbeiten. Den Kern von Neptune bildet eine speziell entwickelte, hochleistungsfähige Graphdatenbank-Engine. Diese Engine ist für die Speicherung von Milliarden von Beziehungen und die Abfrage des Graphen mit einer Latenzzeit von Millisekunden optimiert. Neptune unterstützt die beliebten Graph-Abfragesprachen Apache TinkerPop Gremlin und SPARQL des W3C. Weitere Informationen zu Amazon Neptune finden Sie unter [Was ist Amazon Neptune?](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) im *Amazon-Neptune-Benutzerhandbuch*. 

Ohne eine Graphdatenbank wie Neptune modellieren Sie wahrscheinlich hoch verbundene Daten in einer relationalen Datenbank. Da die Daten über potenziell dynamische Verbindungen verfügen, müssen Anwendungen, die solche Datenquellen verwenden, verbundene Datenabfragen in SQL modellieren. Dieser Ansatz erfordert, dass Sie einen zusätzlichen Layer schreiben, um Graph-Abfragen in SQL zu konvertieren. Außerdem haben relationale Datenbanken eine Schemastarrheit. Änderungen am Schema an modelländernden Verbindungen erfordern Ausfallzeiten und zusätzliche Wartung der Abfragekonvertierung, um das neue Schema zu unterstützen. Die Abfrageleistung ist auch eine weitere große Einschränkung, die beim Entwerfen Ihrer Anwendungen berücksichtigt werden muss.

Graph-Datenbanken können solche Situationen erheblich vereinfachen. Frei von einem Schema, einem Rich Graph Query Layer (Gremlin oder SPARQL) und Indizes, die für Graph-Abfragen optimiert sind, erhöhen die Flexibilität und Leistung. Die Graphdatenbank von Amazon Neptune verfügt auch über Enterprise-Features wie Verschlüsselung im Ruhezustand, eine sichere Autorisierungsebene, Standardsicherungen, Multi-AZ-Unterstützung, Unterstützung für Lesereplikate und mehr.

Mithilfe können Sie relationale Daten AWS DMS, die einen stark verbundenen Graphen modellieren, von einem DMS-Quellendpunkt für jede unterstützte SQL-Datenbank zu einem Neptune-Zielendpunkt migrieren.

Weitere Informationen finden Sie im Folgenden.

**Topics**
+ [Übersicht über die Migration zu Amazon Neptune als Ziel](#CHAP_Target.Neptune.MigrationOverview)
+ [Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel](#CHAP_Target.Neptune.EndpointSettings)
+ [Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel](#CHAP_Target.Neptune.ServiceRole)
+ [Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel](#CHAP_Target.Neptune.GraphMapping)
+ [Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel](#CHAP_Target.Neptune.DataTypes)
+ [Einschränkungen bei der Verwendung von Amazon Neptune als Ziel](#CHAP_Target.Neptune.Limitations)

## Übersicht über die Migration zu Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.MigrationOverview"></a>

Bevor Sie eine Migration zu einem Neptune-Ziel starten, erstellen Sie die folgenden Ressourcen in Ihrem AWS Konto:
+ Einen Neptune-Cluster für den Zielendpunkt. 
+ Eine relationale SQL-Datenbank, die von AWS DMS for the Source Endpoint unterstützt wird. 
+ Einen Amazon-S3-Bucket für den Zielendpunkt. Erstellen Sie diesen S3-Bucket in derselben AWS Region wie Ihr Neptun-Cluster. AWS DMS verwendet diesen S3-Bucket als Zwischenspeicher für die Zieldaten, die er massenweise in die Neptune-Datenbank lädt. Weitere Informationen zum Erstellen eines S3-Buckets finden Sie unter [Erstellen von Buckets](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) im *Benutzerhandbuch für Amazon Simple Storage Service*.
+ Einen Virtual Private Cloud (VPC)-Endpunkt für S3 in derselben VPC wie der Neptune-Cluster. 
+ Eine AWS Identity and Access Management (IAM-) Rolle, die eine IAM-Richtlinie beinhaltet. In dieser Richtlinie sollten die Berechtigungen `ListObject`, `GetObject`, `PutObject` und `DeleteObject` für den S3-Bucket für den Zielendpunkt angegeben werden. Diese Rolle wird sowohl von Neptune als auch von Neptune mit IAM-Zugriff AWS DMS sowohl auf den Ziel-S3-Bucket als auch auf die Neptune-Datenbank übernommen. Weitere Informationen finden Sie unter [Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel](#CHAP_Target.Neptune.ServiceRole).

Nachdem Sie über diese Ressourcen verfügen, sind die Einrichtung und das Starten einer Migration zu einem Neptune-Ziel ähnlich wie bei einer Volllastmigration unter Verwendung der Konsole oder der DMS-API. Eine Migration zu einem Neptune-Ziel erfordert jedoch einige spezifische Schritte.

**Um eine AWS DMS relationale Datenbank zu Neptune zu migrieren**

1. Erstellen Sie eine Replikations-Instance wie unter [Erstellen einer Replikations-Instance](CHAP_ReplicationInstance.Creating.md) beschrieben.

1. Erstellen und testen Sie eine relationale SQL-Datenbank, die von AWS DMS für den Quellendpunkt unterstützt wird.

1. Erstellen und testen Sie den Zielendpunkt für Ihre Neptune-Datenbank. 

   Um den Zielendpunkt mit der Neptune-Datenbank zu verbinden, geben Sie den Servernamen für den Neptune-Cluster-Endpunkt oder den Neptune-Writer-Instance-Endpunkt an. Geben Sie außerdem den S3-Bucket-Ordner an, in AWS DMS dem die Zwischendateien für das Massenladen in die Neptune-Datenbank gespeichert werden sollen. 

    AWS DMS Speichert während der Migration alle migrierten Zieldaten in diesem S3-Bucket-Ordner bis zu einer von Ihnen angegebenen maximalen Dateigröße. Wenn dieser Dateispeicher diese maximale Größe erreicht, werden die gespeicherten S3-Daten AWS DMS massenweise in die Zieldatenbank geladen. Der Ordner wird gelöscht, um die Speicherung zusätzlicher Zieldaten für das nachfolgende Laden in die Zieldatenbank zu ermöglichen. Weitere Informationen zum Festlegen dieser Einstellungen finden Sie unter [Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel](#CHAP_Target.Neptune.EndpointSettings).

1. Erstellen Sie eine Volllast-Replikationsaufgabe mit den Ressourcen, die in den Schritten 1 bis 3 erstellt wurden, und gehen Sie wie folgt vor: 

   1. Verwenden Sie die Aufgaben-Tabellenzuordnung wie gewohnt, um bestimmte Quellschemas, Tabellen und Ansichten zu identifizieren, die mit entsprechenden Auswahl- und Transformationsregeln aus Ihrer relationalen Datenbank migriert werden sollen. Weitere Informationen finden Sie unter [Verwenden der Tabellenzuweisung zum Angeben von Aufgabeneinstellungen](CHAP_Tasks.CustomizingTasks.TableMapping.md). 

   1. Geben Sie Zielzuordnungen an, indem Sie eine der folgenden Optionen auswählen, um Zuordnungsregeln aus Quelltabellen und Ansichten für den Neptune-Zieldatenbank-Graphen anzugeben:
      + Gremlin JSON – Informationen zur Verwendung von Gremlin JSON zum Laden einer Neptune-Datenbank finden Sie unter [Gremlin-Format zum Laden von Daten](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) im *Amazon-Neptune-Benutzerhandbuch*.
      + SPARQL RDB to Resource Description Framework Mapping Language (R2RML) – Weitere Informationen zur Verwendung von SPARQL R2RML finden Sie in der W3C-Spezifikation [R2RML: RDB to RDF Mapping Language](https://www.w3.org/TR/r2rml/).

   1. Führen Sie eine der folgenden Aktionen aus:
      + Geben Sie in der AWS DMS Konsole mithilfe der **Regeln für die Grafikzuweisung auf der **Aufgabenseite Datenbankmigration erstellen** Optionen für die Grafikzuordnung** an. 
      + Geben Sie diese Optionen mithilfe der AWS DMS API mithilfe des `TaskData` Anforderungsparameters des `CreateReplicationTask` API-Aufrufs an. 

      Weitere Informationen und Beispiele für die Verwendung von Gremlin JSON und SPARQL R2RML zum Angeben von Graph-Zuordnungsregeln finden Sie unter [Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel](#CHAP_Target.Neptune.GraphMapping).

1. Starten Sie die Replikation für Ihre Migrationsaufgabe.

## Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.EndpointSettings"></a>

Um einen Zielendpunkt zu erstellen oder zu ändern, können Sie die Konsole oder die `CreateEndpoint`- oder `ModifyEndpoint`-API-Vorgänge verwenden. 

Geben Sie für ein Neptune-Ziel in der AWS DMS Konsole auf der Seite **Endpoint erstellen oder Endpoint **modifizieren** auf der Konsolenseite Endpunktspezifische** **Einstellungen** an. Geben Sie für `CreateEndpoint` und `ModifyEndpoint` Anforderungsparameter für die `NeptuneSettings`-Option an. Das folgende Beispiel zeigt, wie dies über die Befehlszeilenschnittstelle (CLI) möglich ist. 

```
dms create-endpoint --endpoint-identifier my-neptune-target-endpoint
--endpoint-type target --engine-name neptune 
--server-name my-neptune-db.cluster-cspckvklbvgf.us-east-1.neptune.amazonaws.com 
--port 8192
--neptune-settings 
     '{"ServiceAccessRoleArn":"arn:aws:iam::123456789012:role/myNeptuneRole",
       "S3BucketName":"amzn-s3-demo-bucket",
       "S3BucketFolder":"amzn-s3-demo-bucket-folder",
       "ErrorRetryDuration":57,
       "MaxFileSize":100, 
       "MaxRetryCount": 10, 
       "IAMAuthEnabled":false}‘
```

Hier gibt die CLI-Option `--server-name` den Servernamen für den Neptune-Cluster-Writer-Endpunkt an. Sie können auch den Servernamen für einen Neptune-Writer-Instance-Endpunkt angeben. 

Die `--neptune-settings`-Option fordert Parameter wie folgt an:
+ `ServiceAccessRoleArn` – (Erforderlich) Der Amazon-Ressourcenname (ARN) der Servicerolle, die Sie für den Neptune-Zielendpunkt erstellt haben. Weitere Informationen finden Sie unter [Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel](#CHAP_Target.Neptune.ServiceRole).
+ `S3BucketName` – (Erforderlich) Der Name des S3-Buckets, in dem DMS migrierte Diagrammdaten vorübergehend in CSV-Dateien speichern kann, bevor sie in einem Massenladevorgang in die Neptune-Zieldatenbank geladen werden. DMS ordnet die SQL-Quelldaten Diagrammdaten zu, bevor sie in diesen CSV-Dateien gespeichert werden.
+ `S3BucketFolder` – (Erforderlich) Ein Ordnerpfad, in dem DMS migrierte Diagrammdaten in dem S3-Bucket speichern soll, der durch `S3BucketName` angegeben wird.
+ `ErrorRetryDuration` – (Optional) Die Anzahl der Millisekunden, die DMS auf einen erneuten Massenladevorgang migrierter Diagrammdaten in die Neptune-Zieldatenbank warten soll, bevor ein Fehler ausgelöst wird. Der Standardwert ist 250.
+ `MaxFileSize` – (Optional) Die maximale Größe der migrierten Diagrammdaten in KB, die in einer CSV-Datei gespeichert werden, bevor DMS eine Massenladung der Daten in die Neptune-Zieldatenbank vornimmt. Der Standardwert ist 1.048.576 KB (1 GB) Wenn dies erfolgreich ist, löscht DMS den Bucket und ist bereit, den nächsten Stapel der migrierten Diagrammdaten zu speichern.
+ `MaxRetryCount` – (Optional) Gibt an, wie oft DMS eine Massenladung migrierter Diagrammdaten in die Neptune-Zieldatenbank erneut versucht, bevor ein Fehler ausgelöst wird. Der Standardwert ist 5.
+ `IAMAuthEnabled` – (Optional) Wenn Sie die IAM-Autorisierung für diesen Endpunkt aktivieren möchten, legen Sie für diesen Parameter `true` fest und fügen Sie das entsprechende IAM-Richtliniendokument zu Ihrer Servicerolle hinzu, die in `ServiceAccessRoleArn` angegeben ist. Der Standardwert ist `false`.

## Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.ServiceRole"></a>

Um auf Neptune als Ziel zuzugreifen, erstellen Sie mithilfe von IAM eine Dienstrolle. Fügen Sie dieser Rolle abhängig von Ihrer Neptune-Endpunktkonfiguration einige oder alle folgenden IAM-Richtlinien- und Vertrauensdokumente an. Wenn Sie den Neptune-Endpunkt erstellen, geben Sie den ARN dieser Servicerolle an. Dadurch kann AWS DMS Amazon Neptune Berechtigungen für den Zugriff auf Neptune und den zugehörigen Amazon S3 S3-Bucket annehmen.

Wenn Sie in Ihrer Neptune-Endpunktkonfiguration den Parameter `IAMAuthEnabled` in `NeptuneSettings` auf `true`festlegen, fügen Sie Ihrer Servicerolle eine IAM-Richtlinie wie die folgende hinzu. Wenn Sie `IAMAuthEnabled` auf `false` festlegen, können Sie diese Richtlinie ignorieren.

```
// Policy to access Neptune

    {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "neptune-db:*",
                "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-CLG7H7FHK54AZGHEH6MNS55JKM/*"
            }
        ]
    }
```

Die vorangehende IAM-Richtlinie ermöglicht vollen Zugriff auf den von `Resource` angegebenen Neptune-Ziel-Cluster.

Fügen Sie Ihrer Dienstrolle eine IAM-Richtlinie wie die folgende an. Diese Richtlinie ermöglicht es DMS, migrierte Diagrammdaten vorübergehend im S3-Bucket zu speichern, den Sie für den Massenladevorgang in die Neptune-Zieldatenbank erstellt haben.

```
//Policy to access S3 bucket

{
	"Version": "2012-10-17",		 	 	 
	"Statement": [{
			"Sid": "ListObjectsInBucket0",
			"Effect": "Allow",
			"Action": "s3:ListBucket",
			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket"
			]
		},
		{
			"Sid": "AllObjectActions",
			"Effect": "Allow",
			"Action": ["s3:GetObject",
				"s3:PutObject",
				"s3:DeleteObject"
			],

			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket/"
			]
		},
		{
			"Sid": "ListObjectsInBucket1",
			"Effect": "Allow",
			"Action": "s3:ListBucket",
			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket",
				"arn:aws:s3:::amzn-s3-demo-bucket/"
			]
		}
	]
}
```

Die vorangehende IAM-Richtlinie ermöglicht es Ihrem Konto, den Inhalt des S3-Buckets (`arn:aws:s3:::amzn-s3-demo-bucket`) abzufragen, der für Ihr Neptune-Ziel erstellt wurde. Außerdem kann Ihr Konto vollständig mit dem Inhalt aller Bucket-Dateien und Ordner arbeiten (`arn:aws:s3:::amzn-s3-demo-bucket/`).

Bearbeiten Sie die Vertrauensstellung und fügen Sie Ihrer Servicerolle die folgende IAM-Rolle hinzu, damit AWS DMS sowohl der Amazon Neptune Neptune-Datenbankdienst die Rolle übernehmen können.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "dms.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Sid": "neptune",
      "Effect": "Allow",
      "Principal": {
        "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Weitere Informationen zum Angeben dieser Servicerolle für den Neptune-Zielendpunkt finden Sie unter [Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel](#CHAP_Target.Neptune.EndpointSettings).

## Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.GraphMapping"></a>

Die von Ihnen erstellten Graph-Zuordnungsregeln geben an, wie Daten, die aus einer relationalen SQL-Datenbankquelle extrahiert werden, in ein Neptune-Datenbank-Cluster-Ziel geladen werden. Das Format dieser Zuordnungsregeln unterscheidet sich je nachdem, ob die Regeln für das Laden von Eigenschaftsdiagrammdaten mithilfe von Apache TinkerPop Gremlin oder Resource Description Framework (RDF) -Daten mithilfe von R2RML gelten. Im Folgenden finden Sie Informationen zu diesen Formaten und wo Sie mehr darüber erfahren können.

Sie können diese Zuordnungsregeln angeben, wenn Sie die Migrationsaufgabe mithilfe der Konsole oder der DMS-API erstellen. 

Geben Sie mithilfe der **Graph-Zuordnungsregeln** auf der Seite **Datenbankmigration erstellen** diese Zuordnungsregeln an. In **Graph-Zuordnungsregeln** können Sie die Zuordnungsregeln direkt mit dem bereitgestellten Editor eingeben und bearbeiten. Sie können auch nach einer Datei suchen, die die Zuordnungsregeln im entsprechenden Graph-Zuordnungsformat enthält. 

Geben Sie mithilfe der API diese Optionen über den `TaskData`-Anforderungsparameter des `CreateReplicationTask`-API-Aufrufs an. Legen Sie `TaskData` auf den Pfad einer Datei fest, die die Zuordnungsregeln im entsprechenden Graph-Zuordnungsformat enthält.

### Graph-Zuordnungsregeln zum Generieren von Eigenschafts-Graph-Daten mit Gremlin
<a name="CHAP_Target.Neptune.GraphMapping.Gremlin"></a>

Verwenden Sie Gremlin zum Generieren der Eigenschafts-Graph-Daten an, geben Sie ein JSON-Objekt mit einer Zuordnungsregel für jede Graph-Entität ein, die aus Quelldaten generiert werden soll. Das Format dieses JSON-Objekts ist speziell für einen Masseladevorgang von Amazon Neptune definiert. Die folgende Vorlage zeigt, wie die einzelnen Regeln in diesem Objekt aussehen:

```
{
    "rules": [
        {
            "rule_id": "(an identifier for this rule)",
            "rule_name": "(a name for this rule)",
            "table_name": "(the name of the table or view being loaded)",
            "vertex_definitions": [
                {
                    "vertex_id_template": "{col1}",
                    "vertex_label": "(the vertex to create)",
                    "vertex_definition_id": "(an identifier for this vertex)",
                    "vertex_properties": [
                        {
                            "property_name": "(name of the property)",
                            "property_value_template": "{col2} or text",
                            "property_value_type": "(data type of the property)"
                        }
                    ]
                }
            ]
        },
        {
            "rule_id": "(an identifier for this rule)",
            "rule_name": "(a name for this rule)",
            "table_name": "(the name of the table or view being loaded)",
            "edge_definitions": [
                {
                    "from_vertex": {
                        "vertex_id_template": "{col1}",
                        "vertex_definition_id": "(an identifier for the vertex referenced above)"
                    },
                    "to_vertex": {
                        "vertex_id_template": "{col3}",
                        "vertex_definition_id": "(an identifier for the vertex referenced above)"
                    },
                    "edge_id_template": {
                        "label": "(the edge label to add)",
                        "template": "{col1}_{col3}"
                    },
                    "edge_properties":[
                        {
                            "property_name": "(the property to add)",
                            "property_value_template": "{col4} or text",
                            "property_value_type": "(data type like String, int, double)"
                        }
                    ]
                }
            ]
        }
    ]
}
```

Das Vorhandensein eines Vertex-Labels bedeutet, dass der Knoten hier erstellt wird. Seine Abwesenheit bedeutet, dass der Knoten von einer anderen Quelle erstellt wird, und diese Definition fügt nur Knoteneigenschaften hinzu. Geben Sie so viele Knoten- und Grenzdefinitionen an, wie erforderlich, um die Zuordnungen für die gesamte relationale Datenbankquelle anzugeben.

Es folgt eine Beispielregel für eine `employee`-Tabelle.

```
{
    "rules": [
        {
            "rule_id": "1",
            "rule_name": "vertex_mapping_rule_from_nodes",
            "table_name": "nodes",
            "vertex_definitions": [
                {
                    "vertex_id_template": "{emp_id}",
                    "vertex_label": "employee",
                    "vertex_definition_id": "1",
                    "vertex_properties": [
                        {
                            "property_name": "name",
                            "property_value_template": "{emp_name}",
                            "property_value_type": "String"
                        }
                    ]
                }
            ]
        },
        {
            "rule_id": "2",
            "rule_name": "edge_mapping_rule_from_emp",
            "table_name": "nodes",
            "edge_definitions": [
                {
                    "from_vertex": {
                        "vertex_id_template": "{emp_id}",
                        "vertex_definition_id": "1"
                    },
                    "to_vertex": {
                        "vertex_id_template": "{mgr_id}",
                        "vertex_definition_id": "1"
                    },
                    "edge_id_template": {
                        "label": "reportsTo",
                        "template": "{emp_id}_{mgr_id}"
                    },
                    "edge_properties":[
                        {
                            "property_name": "team",
                            "property_value_template": "{team}",
                            "property_value_type": "String"
                        }
                    ]
                }
            ]
        }
    ]
}
```

Hier ordnen die Knoten- und Grenzdefinitionen eine Meldebeziehung von einem `employee`-Knoten mit Mitarbeiter-ID (`EmpID`) und einem `employee`-Knoten mit einer Manager-ID (`managerId`) zu.

Weitere Informationen zum Erstellen von Graph-Zuordnungsregeln mit Gremlin JSON finden Sie unter [Gremlin-Format zum Laden von Daten](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) im *Amazon-Neptune-Benutzerhandbuch*.

### RDF/SPARQL Graph-Mapping-Regeln für die Generierung von Daten
<a name="CHAP_Target.Neptune.GraphMapping.R2RML"></a>

Wenn Sie RDF-Daten laden, die mit SPARQL abgefragt werden sollen, schreiben Sie die Graph-Zuordnungsregeln in R2RML. R2RML ist eine Standard-W3C-Sprache für die Zuordnung relationaler Daten zu RDF. In einer R2RML-Datei gibt eine *Dreifach-Zuordnung* (z  B. `<#TriplesMap1>` folgend) eine Regel an, um jede Zeile einer logischen Tabelle in null oder mehr RDF-Triple zu übersetzen. Eine *Betreffzuordnung* (z. B. eine beliebige `rr:subjectMap` folgend) gibt eine Regel zum Generieren der Betreffe der RDF-Triple an, die von einer Tripel-Zuordnung generiert werden. Eine *-Prädikat-Objekt-Zuordnung* (z. B. eine beliebige `rr:predicateObjectMap` folgend) ist eine Funktion, die ein oder mehrere Prädikat-Objekt-Paare für jede logische Tabellenzeile einer logischen Tabelle erstellt.

Ein einfaches Beispiel für eine `nodes`-Tabelle folgt.

```
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/ns#>.

<#TriplesMap1>
    rr:logicalTable [ rr:tableName "nodes" ];
    rr:subjectMap [
        rr:template "http://data.example.com/employee/{id}";
        rr:class ex:Employee;
    ];
    rr:predicateObjectMap [
        rr:predicate ex:name;
        rr:objectMap [ rr:column "label" ];
    ]
```

Im vorherigen Beispiel definiert die Zuordnung Graph-Knoten, die aus einer Tabelle mit Mitarbeitern zugeordnet sind.

Ein weiteres einfaches Beispiel für eine `Student`-Tabelle folgt.

```
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.

<#TriplesMap2>
    rr:logicalTable [ rr:tableName "Student" ];
    rr:subjectMap   [ rr:template "http://example.com/{ID}{Name}";
                      rr:class foaf:Person ];
    rr:predicateObjectMap [
        rr:predicate ex:id ;
        rr:objectMap  [ rr:column "ID";
                        rr:datatype xsd:integer ]
    ];
    rr:predicateObjectMap [
        rr:predicate foaf:name ;
        rr:objectMap  [ rr:column "Name" ]
    ].
```

Im vorherigen Beispiel definiert das Mapping Graphknoten, die friend-of-a-friend Beziehungen zwischen Personen in einer `Student` Tabelle abbilden.

Weitere Informationen zum Erstellen von Graph-Zuordnungsregeln mit SPARQL R2RML finden Sie in der W3C-Spezifikation [R2RML: RDB to RDF Mapping Language](https://www.w3.org/TR/r2rml/).

## Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.DataTypes"></a>

AWS DMS führt die Datentypzuordnung von Ihrem SQL-Quellendpunkt zu Ihrem Neptune-Ziel auf eine von zwei Arten durch. Welche Art Sie verwenden, hängt vom Graph-Zuordnungsformat ab, das Sie zum Laden der Neptune-Datenbank verwenden: 
+ Apache TinkerPop Gremlin unter Verwendung einer JSON-Darstellung der Migrationsdaten.
+ SPARQL von W3C, unter Verwendung einer R2RML-Darstellung der Migrationsdaten. 

Weitere Informationen zu diesen beiden Graph-Zuordnungsformaten finden Sie unter [Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel](#CHAP_Target.Neptune.GraphMapping).

Nachfolgend finden Sie Beschreibungen der Datentypzuordnungen für jedes Format.

### Datentypzuordnungen von SQL-Quelle auf Gremlin-Ziel
<a name="CHAP_Target.Neptune.DataTypes.Gremlin"></a>

Die folgende Tabelle zeigt die Datentypzuordnungen von einer SQL-Quelle auf ein Gremlin-formatiertes Ziel. 

AWS DMS ordnet einen beliebigen SQL-Quelldatentyp, der nicht aufgeführt ist, einem Gremlin zu. `String`



[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Neptune.html)

Weitere Informationen zu den Gremlin-Datentypen zum Laden von Neptune finden Sie unter [Gremlin-Datentypen](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html#bulk-load-tutorial-format-gremlin-datatypes) im *Neptune-Benutzerhandbuch*.

### SQL-Quell-zu-R2RML-Zieldatentyp-Zuordnungen (RDF)
<a name="CHAP_Target.Neptune.DataTypes.R2RML"></a>

Die folgende Tabelle zeigt die Datentypzuordnungen von einer SQL-Quelle zu einem R2RML-formatierten Ziel.

Bei allen aufgelisteten RDF-Datentypen wird zwischen Groß- und Kleinschreibung unterschieden, mit Ausnahme von RDF-Literal. AWS DMS ordnet jeden nicht aufgelisteten SQL-Quelldatentyp einem RDF-Literal zu. 

Ein *RDF-Literal* ist eine von einer Vielzahl von wörtlichen lexikalischen Formen und Datentypen. Weitere Informationen finden Sie unter [RDF-Literale](https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-Literal) in der W3C-Spezifikation *Resource Description Framework (RDF): Konzepte und abstrakte Syntax*.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Neptune.html)

Weitere Informationen zu den RDF-Datentypen zum Laden von Neptune und zu ihren Zuordnungen zu SQL-Quelldatentypen finden Sie unter [Datentypkonvertierungen](https://www.w3.org/TR/r2rml/#datatype-conversions) in der W3C-Spezifikation *R2RML: RDB to RDF Mapping Language*.

## Einschränkungen bei der Verwendung von Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.Limitations"></a>

Bei der Verwendung von Neptune als Ziel gelten die folgenden Einschränkungen:
+ AWS DMS unterstützt derzeit Volllastaufgaben nur für die Migration zu einem Neptune-Ziel. Die CDC-Migration (CDC = Change Data Capture) zu einem Neptune-Ziel wird nicht unterstützt.
+ Stellen Sie sicher, dass in Ihrer Neptune-Zieldatenbank alle Daten manuell gelöscht werden, bevor Sie die Migrationsaufgabe starten, wie in den folgenden Beispielen zu sehen ist.

  Um alle Daten (Eckpunkte und Edges) innerhalb des Graphen zu löschen, führen Sie den folgenden Gremlin-Befehl aus.

  ```
  gremlin> g.V().drop().iterate()
  ```

  Um Eckpunkte mit dem Label `'customer'` zu löschen, führen Sie den folgenden Gremlin-Befehl aus.

  ```
  gremlin> g.V().hasLabel('customer').drop()
  ```
**Anmerkung**  
Es kann einige Zeit dauern, bis ein großes Dataset gelöscht wird. Möglicherweise möchten Sie `drop()` mit einem Limit iterieren, z. B. `limit(1000)`.

  Um Edges mit dem Label `'rated'` zu löschen, führen Sie den folgenden Gremlin-Befehl aus.

  ```
  gremlin> g.E().hasLabel('rated').drop()
  ```
**Anmerkung**  
Es kann einige Zeit dauern, bis ein großes Dataset gelöscht wird. Möglicherweise möchten Sie `drop()` mit einem Limit iterieren, z. B. `limit(1000)`.
+ Der DMS-API-Vorgang `DescribeTableStatistics` kann aufgrund der Art der Neptune-Graph-Datenstrukturen ungenaue Ergebnisse zu einer bestimmten Tabelle zurückgeben.

   AWS DMS Scannt während der Migration jede Quelltabelle und verwendet Graph-Mapping, um die Quelldaten in ein Neptun-Diagramm zu konvertieren. Die konvertierten Daten werden zuerst im S3-Bucket-Ordner gespeichert, der für den Zielendpunkt angegeben ist. Wenn die Quelle gescannt wird und diese zwischengeschalteten S3-Daten erfolgreich generiert werden, geht `DescribeTableStatistics` davon aus, dass die Daten erfolgreich in die Neptune-Zieldatenbank geladen wurden. Aber das ist nicht immer wahr. Um zu überprüfen, ob die Daten für eine bestimmte Tabelle korrekt geladen wurden, vergleichen Sie die `count()`-Rückgabewerte an beiden Enden der Migration für diese Tabelle. 

  Im folgenden Beispiel AWS DMS hat eine `customer` Tabelle aus der Quelldatenbank geladen, der das Label `'customer'` im Neptune-Zieldatenbankdiagramm zugewiesen wurde. Sie können sicherstellen, dass dieses Label in die Zieldatenbank geschrieben wird. Vergleichen Sie dazu die Anzahl der in der Quelldatenbank verfügbaren `customer`-Zeilen mit der Anzahl der mit `'customer'` beschrifteten Zeilen, die nach Abschluss der Aufgabe in die Neptune-Zieldatenbank geladen wurden.

  Führen Sie die folgenden Schritte aus, um die Anzahl der Kundenzeilen aus der Quelldatenbank mithilfe von SQL abzurufen.

  ```
  select count(*) from customer;
  ```

  Um die Anzahl der beschrifteten `'customer'`-Zeilen zu erhalten, die mit Gremlin in den Zieldatenbank-Graph geladen wurden, führen Sie Folgendes aus.

  ```
  gremlin> g.V().hasLabel('customer').count()
  ```
+ Wenn derzeit eine einzelne Tabelle nicht geladen werden kann, schlägt die gesamte Aufgabe fehl. Im Gegensatz zu einem relationalen Datenbankziel sind Daten in Neptune stark verbunden, was es in vielen Fällen unmöglich macht, eine Aufgabe fortzusetzen. Wenn eine Aufgabe aufgrund dieser Art von Datenladefehler nicht erfolgreich fortgesetzt werden kann, erstellen Sie eine neue Aufgabe, um die Tabelle zu laden, die nicht geladen werden konnte. Bevor Sie diese neue Aufgabe ausführen, löschen Sie die teilweise geladene Tabelle manuell aus dem Neptune-Ziel.
**Anmerkung**  
Sie können eine Aufgabe fortsetzen, bei der die Migration zu einem Neptune-Ziel fehlschlägt, wenn der Fehler behoben werden kann (z. B. ein Netzwerk-Transitfehler).
+ AWS DMS unterstützt die meisten Standards für R2RML. Unterstützt jedoch bestimmte R2RML-Standards AWS DMS nicht, einschließlich inverser Ausdrücke, Joins und Views. Eine Problemumgehung für eine R2RML-Ansicht besteht darin, eine entsprechende benutzerdefinierte SQL-Ansicht in der Quelldatenbank zu erstellen. Verwenden Sie in der Migrationsaufgabe die Tabellenzuordnung, um die Ansicht als Eingabe auszuwählen. Ordnen Sie dann die Ansicht einer Tabelle zu, die dann von R2RML verwendet wird, um Diagrammdaten zu generieren.
+ Wenn Sie Quelldaten mit nicht unterstützten SQL-Datentypen migrieren, sind die sich daraus ergebenen Zieldaten möglicherweise nicht ganz genau. Weitere Informationen finden Sie unter [Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel](#CHAP_Target.Neptune.DataTypes).
+ AWS DMS unterstützt nicht die Migration von LOB-Daten in ein Neptun-Ziel.

# Verwenden von Redis OSS als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redis"></a>

Redis OSS ist ein speicherinterner Open-Source-Datenstrukturspeicher, der als Datenbank, Cache und Nachrichtenbroker verwendet wird. Durch die Verwaltung von Daten im Speicher können Lese- oder Schreibvorgänge unter Umständen in weniger als einer Millisekunde ausgeführt werden und es sind Hunderte Millionen von Vorgängen pro Sekunde möglich. Als In-Memory-Datenspeicher unterstützt Redis OSS die anspruchsvollsten Anwendungen, die Reaktionszeiten unter einer Millisekunde erfordern.

Mit dieser AWS DMS Methode können Sie Daten aus jeder unterstützten Quelldatenbank mit minimaler Ausfallzeit in einen Redis OSS-Zieldatenspeicher migrieren. Weitere Informationen zu Redis OSS finden Sie in der [Redis](https://redis.io/documentation) OSS-Dokumentation.

Zusätzlich zu On-Premises-Redis OSS wird Folgendes unterstützt: AWS Database Migration Service 
+ [Amazon ElastiCache (Redis OSS)](https://aws.amazon.com/elasticache/redis/) als Zieldatenspeicher. ElastiCache (Redis OSS) funktioniert mit Ihren Redis OSS-Clients und verwendet das offene Redis OSS-Datenformat zum Speichern Ihrer Daten.
+ [Amazon MemoryDB](https://aws.amazon.com/memorydb/) als Zieldatenspeicher. MemoryDB ist mit Redis OSS kompatibel und ermöglicht es Ihnen, Anwendungen mit allen heute verwendeten Redis OSS-Datenstrukturen und Befehlen zu erstellen. APIs

Weitere Informationen zur Arbeit mit Redis OSS als Ziel für finden Sie in den folgenden Abschnitten AWS DMS: 

**Topics**
+ [Voraussetzungen für die Verwendung eines Redis OSS-Clusters als Ziel für AWS DMS](#CHAP_Target.Redis.Prerequisites)
+ [Einschränkungen bei der Verwendung von Redis als Ziel für AWS Database Migration Service](#CHAP_Target.Redis.Limitations)
+ [Migrieren von Daten aus einer relationalen oder nicht-relationalen Datenbank zu einem Redis OSS-Ziel](#CHAP_Target.Redis.Migrating)
+ [Angeben der Endpunkteinstellungen für Redis OSS als Ziel](#CHAP_Target.Redis.EndpointSettings)

## Voraussetzungen für die Verwendung eines Redis OSS-Clusters als Ziel für AWS DMS
<a name="CHAP_Target.Redis.Prerequisites"></a>

*DMS unterstützt ein lokales Redis OSS-Ziel in einer eigenständigen Konfiguration oder als Redis OSS-Cluster, bei dem Daten automatisch auf mehrere Knoten verteilt werden.* Sharding ist ein Prozess, bei dem Daten in kleinere Blöcke, sogenannte Shards, aufgeteilt werden, die auf mehrere Server oder Knoten verteilt werden. Ein Shard ist eine Datenpartition, die eine Teilmenge des gesamten Datensatzes enthält und einen Teil der gesamten Workload abdeckt.

**Da es sich bei Redis OSS um einen NoSQL-Datenspeicher mit Schlüsselwerten handelt, lautet die Redis OSS-Schlüsselbenennungskonvention, die Sie verwenden sollten, wenn Ihre Quelle eine relationale Datenbank ist, schema-name.table-name.primary-key.** In Redis OSS dürfen der Schlüssel und der Wert das Sonderzeichen% nicht enthalten. Andernfalls überspringt DMS den Datensatz. 

**Anmerkung**  
Wenn Sie ElastiCache (Redis OSS) als Ziel verwenden, unterstützt DMS nur Konfigurationen, die den *Clustermodus aktivieren.* Weitere Informationen zur Verwendung von ElastiCache (Redis OSS) Version 6.x oder höher zur Erstellung eines Zieldatenspeichers mit aktiviertem Clustermodus finden Sie unter [Erste Schritte](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/GettingStarted.html) im *Amazon ElastiCache (Redis OSS)* -Benutzerhandbuch. 

Bevor Sie mit einer Datenbankmigration beginnen, starten Sie Ihren Redis OSS-Cluster mit den folgenden Kriterien.
+ Ihr Cluster enthält einen oder mehrere Shards.
+ Wenn Sie ein ElastiCache (Redis OSS-) Ziel verwenden, stellen Sie sicher, dass Ihr Cluster keine rollenbasierte IAM-Zugriffskontrolle verwendet. Verwenden Sie stattdessen Redis OSS Auth, um Benutzer zu authentifizieren.
+ Aktivieren Sie Multi-AZ (Availability Zones).
+ Stellen Sie sicher, dass auf dem Cluster genug Speicher für die zu migrierenden Daten aus der Datenbank verfügbar ist. 
+ Stellen Sie sicher, dass Ihr Redis-OSS-Zielcluster keine Daten enthält, bevor Sie mit der ersten Migrationsaufgabe beginnen.

Sie sollten Ihre Sicherheitsanforderungen für die Datenmigration ermitteln, bevor Sie Ihre Cluster-Konfiguration erstellen. DMS unterstützt die Migration zu Zielreplikationsgruppen unabhängig von ihrer Verschlüsselungskonfiguration. Sie können die Verschlüsselung jedoch nur aktivieren oder deaktivieren, wenn Sie Ihre Cluster-Konfiguration erstellen.

## Einschränkungen bei der Verwendung von Redis als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redis.Limitations"></a>

Bei der Verwendung von Redis OSS als Ziel gelten die folgenden Einschränkungen:
+ Da es sich bei Redis OSS um einen No-SQL-Datenspeicher mit Schlüsselwerten handelt, gilt die Redis OSS-Konvention zur Benennung von Schlüsseln, die Sie verwenden sollten, wenn Ihre Quelle eine relationale Datenbank ist. `schema-name.table-name.primary-key` 
+ In Redis OSS darf der Schlüsselwert das Sonderzeichen nicht enthalten. `%` Andernfalls überspringt DMS den Datensatz.
+ DMS migriert keine Zeilen, die das Zeichen enthalten. `%`
+ DMS migriert keine Felder, die das `%` Zeichen im Feldnamen enthalten.
+ Der vollständige LOB-Modus wird nicht unterstützt.
+  Eine private Zertifizierungsstelle (CA) wird nicht unterstützt, wenn ElastiCache (Redis OSS) als Ziel verwendet wird.
+ AWS DMS unterstützt keine Quelldaten mit eingebetteten `'\0'` Zeichen, wenn Redis als Zielendpunkt verwendet wird. Daten, die eingebettete `'\0'` Zeichen enthalten, werden beim ersten `'\0'` Zeichen gekürzt.

## Migrieren von Daten aus einer relationalen oder nicht-relationalen Datenbank zu einem Redis OSS-Ziel
<a name="CHAP_Target.Redis.Migrating"></a>

Sie können Daten aus jedem SQL- oder NoSQL-Quelldatenspeicher direkt zu einem Redis OSS-Ziel migrieren. Das Einrichten und Starten einer Migration zu einem Redis OSS-Ziel ähnelt jeder Migration von Volllast und Change Data Capture mithilfe der DMS-Konsole oder API. Um eine Datenbankmigration zu einem Redis OSS-Ziel durchzuführen, gehen Sie wie folgt vor.
+ Erstellen Sie eine Replikations-Instance, die alle Migrationsprozesse durchführt. Weitere Informationen finden Sie unter [Erstellen einer Replikations-Instance](CHAP_ReplicationInstance.Creating.md).
+ Geben Sie einen Quellendpunkt an. Weitere Informationen finden Sie unter [Erstellen der Quell- und Zielendpunkte](CHAP_Endpoints.Creating.md).
+ Suchen Sie nach dem DNS-Namen und der Portnummer Ihres Clusters.
+ Laden Sie ein Zertifikatpaket herunter, das Sie zur Überprüfung von SSL-Verbindungen verwenden können.
+ Geben Sie einen Zielendpunkt an, wie unten beschrieben.
+ Erstellen Sie eine oder mehrere Aufgaben, um festzulegen, welche Tabellen und Replikationsprozesse verwendet werden sollen. Weitere Informationen finden Sie unter [Erstellen einer Aufgabe](CHAP_Tasks.Creating.md).
+ Migrieren Sie Daten aus Ihrer Quelldatenbank zu Ihrem Ziel-Cluster.

Sie haben zwei Möglichkeiten, mit einer Datenbankmigration zu beginnen:

1. Sie können die AWS DMS Konsole auswählen und jeden Schritt dort ausführen.

1. Sie können das AWS Command Line Interface (AWS CLI) verwenden. Weitere Informationen zur Verwendung der CLI mit AWS DMS finden Sie unter [AWS CLI for AWS DMS](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html).

**So finden Sie den DNS-Namen und die Portnummer Ihres Clusters**
+ Verwenden Sie den folgenden AWS CLI Befehl, um `replication-group-id` den Namen Ihrer Replikationsgruppe anzugeben.

  ```
  aws elasticache describe-replication-groups --replication-group-id myreplgroup
  ```

  Hier zeigt die Ausgabe den DNS-Namen im Attribut `Address` und die Portnummer im Attribut `Port` des Primärknotens im Cluster. 

  ```
   ...
  "ReadEndpoint": {
  "Port": 6379,
  "Address": "myreplgroup-
  111.1abc1d.1111.uuu1.cache.example.com"
  }
  ...
  ```

  Wenn Sie MemoryDB als Ziel verwenden, verwenden Sie den folgenden AWS CLI Befehl, um eine Endpunktadresse für Ihren Redis OSS-Cluster bereitzustellen. 

  ```
  aws memorydb describe-clusters --clusterid clusterid
  ```

**Laden Sie ein Zertifikatpaket herunter, mit dem SSL-Verbindungen überprüft werden können.**
+ Geben Sie in der Befehlszeile den folgenden `wget`-Befehl ein: Wget ist ein kostenloses GNU-Befehlszeilen-Dienstprogramm, das zum Herunterladen von Dateien aus dem Internet verwendet wird.

  ```
  wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem
  ```

  Hier `aws-api-domain` wird die Amazon S3 S3-Domain in Ihrer AWS Region vervollständigt, die für den Zugriff auf den angegebenen S3-Bucket und die bereitgestellte rds-combined-ca-bundle .pem-Datei erforderlich ist.

**Um mit der Konsole einen Zielendpunkt zu erstellen AWS DMS**

Dieser Endpunkt ist für Ihr Redis OSS-Ziel bestimmt, das bereits läuft. 
+ Wählen Sie im Navigationsbereich **Endpunkte** und anschließend **Endpunkt erstellen** aus. In der folgenden Tabelle sind die Einstellungen beschrieben.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Redis.html)

Wenn Sie alle Informationen für Ihren Endpunkt bereitgestellt haben, AWS DMS erstellt es Ihren Redis OSS-Zielendpunkt zur Verwendung bei der Datenbankmigration.

Informationen zum Erstellen einer Migrationsaufgabe und zum Starten Ihrer Datenbankmigration finden Sie unter [Erstellen einer Aufgabe](CHAP_Tasks.Creating.md).

## Angeben der Endpunkteinstellungen für Redis OSS als Ziel
<a name="CHAP_Target.Redis.EndpointSettings"></a>

Um einen Zielendpunkt zu erstellen oder zu ändern, können Sie die Konsole oder die `CreateEndpoint`- oder `ModifyEndpoint`-API-Vorgänge verwenden. 

Geben Sie für ein Redis OSS-Ziel in der AWS DMS Konsole auf der Seite ****Endpoint erstellen oder Endpoint** **modifizieren** die endpunktspezifischen Einstellungen** an.

Wenn Sie die API-Operationen `CreateEndpoint` und `ModifyEndpoint` verwenden, geben Sie Anforderungsparameter für die Option `RedisSettings` an. Das folgende Beispiel zeigt, wie dies über die AWS CLI geschehen kann.

```
aws dms create-endpoint --endpoint-identifier my-redis-target
--endpoint-type target --engine-name redis --redis-settings 
'{"ServerName":"sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com","Port":6379,"AuthType":"auth-token", 
 "SslSecurityProtocol":"ssl-encryption", "AuthPassword":"notanactualpassword"}'

{
    "Endpoint": {
        "EndpointIdentifier": "my-redis-target",
        "EndpointType": "TARGET",
        "EngineName": "redis",
        "EngineDisplayName": "Redis",
        "TransferFiles": false,
        "ReceiveTransferredFiles": false,
        "Status": "active",
        "KmsKeyId": "arn:aws:kms:us-east-1:999999999999:key/x-b188188x",
        "EndpointArn": "arn:aws:dms:us-east-1:555555555555:endpoint:ABCDEFGHIJKLMONOPQRSTUVWXYZ",
        "SslMode": "none",
        "RedisSettings": {
            "ServerName": "sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com",
            "Port": 6379,
            "SslSecurityProtocol": "ssl-encryption",
            "AuthType": "auth-token"
        }
    }
}
```

Die Parameter für `--redis-settings` lauten wie folgt:
+ `ServerName`— (Erforderlich) Typ`string`, gibt den Redis OSS-Cluster an, in den Daten migriert werden, und der sich in derselben VPC befindet.
+ `Port` – (Erforderlich), Typ `number`, der Portwert, der für den Zugriff auf den Endpunkt verwendet wird.
+ `SslSecurityProtocol` – (Optional), gültige Werte sind `plaintext` und `ssl-encryption`. Der Standardwert ist `ssl-encryption`. 

  Die `plaintext`-Option bietet keine Transport Layer Security (TLS)-Verschlüsselung für den Datenverkehr zwischen Endpunkt und Datenbank. 

  Verwenden Sie `ssl-encryption`, um eine verschlüsselte Verbindung herzustellen. `ssl-encryption` benötigt keinen ARN der SSL-Zertifizierungsstelle (CA), um das Zertifikat eines Servers zu verifizieren, über die Einstellung `SslCaCertificateArn` kann jedoch optional einer angegeben werden. Wenn kein ARN für eine Zertifizierungsstelle angegeben wird, verwendet DMS die Amazon-Stammzertifizierungsstelle.

  Wenn Sie ein lokales Redis OSS-Ziel verwenden, können Sie `SslCaCertificateArn` damit eine öffentliche oder private Zertifizierungsstelle (CA) in DMS importieren und diesen ARN für die Serverauthentifizierung bereitstellen. Eine private CA wird nicht unterstützt, wenn Sie ElastiCache (Redis OSS) als Ziel verwenden.
+ `AuthType`— (Erforderlich) Gibt die Art der Authentifizierung an, die bei der Verbindung mit Redis OSS durchgeführt werden soll. Gültige Werte sind: `none`, `auth-token` und `auth-role`.

  Für die `auth-token` Option muss ein *AuthPassword* "angegeben werden, während für die `auth-role` Option die Angabe von" *AuthUserName* "und" *AuthPassword* "erforderlich ist.

# Babelfish als Ziel verwenden für AWS Database Migration Service
<a name="CHAP_Target.Babelfish"></a>

Sie können Daten von einer Microsoft SQL Server-Quelldatenbank zu einem Babelfish-Ziel migrieren, indem Sie. AWS Database Migration Service

Babelfish for Aurora PostgreSQL erweitert Ihre Amazon Aurora PostgreSQL kompatible Edition-Datenbank um die Möglichkeit, Datenbankverbindungen von Microsoft SQL Server-Clients zu akzeptieren. Dadurch können Anwendungen, die ursprünglich für SQL Server entwickelt wurden, direkt mit Aurora PostgreSQL arbeiten – mit nur wenigen Codeänderungen im Vergleich zu einer herkömmlichen Migration und ohne Änderung der Datenbanktreiber. 

Informationen zu Versionen von Babelfish, die als Ziel AWS DMS unterstützt werden, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md) Frühere Versionen von Babelfish in Aurora PostgreSQL erfordern ein Upgrade, damit der Babelfish-Endpunkt verwendet werden kann.

**Anmerkung**  
Der Aurora-PostgreSQL-Zielendpunkt ist die bevorzugte Methode für die Migration von Daten zu Babelfish. Weitere Informationen finden Sie unter [Verwenden von Babelfish für Aurora PostgreSQL als Ziel](CHAP_Target.PostgreSQL.md#CHAP_Target.PostgreSQL.Babelfish). 

Informationen zur Verwendung von Babelfish als Datenbank-Endpunkt finden Sie unter [Babelfish for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) im *Benutzerhandbuch für Amazon Aurora*. 

## Voraussetzungen für die Verwendung von Babelfish als Ziel für AWS DMS
<a name="CHAP_Target.Babelfish.Prerequisites"></a>

Sie müssen Ihre Tabellen erstellen, bevor Sie Daten migrieren, um sicherzustellen, dass die richtigen Datentypen und Tabellenmetadaten AWS DMS verwendet werden. Wenn Sie Ihre Tabellen nicht auf dem Ziel erstellen, bevor Sie die Migration ausführen, werden die Tabellen AWS DMS möglicherweise mit falschen Datentypen und Berechtigungen erstellt. AWS DMS Erstellt beispielsweise stattdessen eine Zeitstempelspalte als binär (8) und bietet nicht die erwartete timestamp/rowversion Funktionalität.

**So können Sie Ihre Tabellen vor der Migration vorbereiten und erstellen**

1. Führen Sie Create-Table-DDL-Anweisungen aus, die alle eindeutigen Einschränkungen, Primärschlüssel oder Standardeinschränkungen enthalten. 

   Fügen Sie keine Einschränkungen hinsichtlich Fremdschlüsseln und keine DDL-Anweisungen für Objekte wie Ansichten, gespeicherte Prozeduren, Funktionen oder Auslöser hinzu. Sie können sie nach der Migration Ihrer Quelldatenbank anwenden.

1. Identifizieren Sie alle Identitätsspalten, berechneten Spalten oder Spalten mit den Datentypen rowversion oder timestamp für Ihre Tabellen. Erstellen Sie anschließend die erforderlichen Transformationsregeln, um bekannte Probleme bei der Ausführung der Migrationsaufgabe zu beheben. Weitere Informationen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

1. Identifizieren Sie Spalten mit Datentypen, die Babelfish nicht unterstützt. Ändern Sie dann die betroffenen Spalten in der Zieltabelle, sodass sie unterstützte Datentypen verwenden, oder erstellen Sie eine Transformationsregel, durch die sie während der Migrationsaufgabe entfernt werden. Weitere Informationen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

   In der folgenden Tabelle sind Quelldatentypen, die von Babelfish nicht unterstützt werden, und der entsprechende empfohlene Zieldatentyp aufgeführt.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Babelfish.html)

**So legen Sie die Aurora-Kapazitätseinheiten (ACUs) für Ihre Aurora PostgreSQL Serverless V2-Quelldatenbank fest**

Sie können die Leistung Ihrer AWS DMS Migrationsaufgabe vor der Ausführung verbessern, indem Sie den ACU-Mindestwert festlegen.
+ Stellen Sie im Fenster mit den **Kapazitätseinstellungen von Severless v2** **Minimum ACUs** auf **2** oder eine angemessene Stufe für Ihren Aurora-DB-Cluster ein.

  Weitere Informationen zum Festlegen von Aurora-Kapazitätseinheiten finden Sie unter [Auswählen des Aurora-Serverless-v2-Kapazitätsbereichs für einen Aurora-Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html) im *Benutzerhandbuch für Amazon Aurora*. 

Nachdem Sie Ihre AWS DMS Migrationsaufgabe ausgeführt haben, können Sie den Mindestwert Ihres ACUs auf ein angemessenes Niveau für Ihre Aurora PostgreSQL Serverless V2-Quelldatenbank zurücksetzen.

## Sicherheitsanforderungen bei der Verwendung von Babelfish als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Security"></a>

Im Folgenden werden die Sicherheitsanforderungen für die Verwendung AWS DMS mit einem Babelfish-Target beschrieben:
+ Der Name des Administrator-Benutzers (Admin-Benutzer), mit dem die Datenbank erstellt wurde.
+ PSQL-Login und -Benutzer mit den ausreichenden SELECT-, INSERT-, UPDATE-, DELETE- und REFERENCES-Berechtigungen.

## Benutzerberechtigungen für die Verwendung von Babelfish als Ziel für AWS DMS
<a name="CHAP_Target.Babelfish.Permissions"></a>

**Wichtig**  
Aus Sicherheitsgründen muss das für die Datenmigration verwendete Benutzerkonto ein registrierter Benutzer in einer Babelfish-Zieldatenbank sein.

Ihr Babelfish-Zielendpunkt erfordert Mindestbenutzerberechtigungen, um eine AWS DMS -Migration ausführen zu können.

**So erstellen Sie einen Login und einen Transact-SQL (T-SQL)-Benutzer mit geringen Berechtigungen**

1. Erstellen Sie einen Login und ein Passwort für die Verbindung mit dem Server.

   ```
   CREATE LOGIN dms_user WITH PASSWORD = 'password';
   GO
   ```

1. Erstellen Sie die virtuelle Datenbank für Ihren Babelfish-Cluster.

   ```
   CREATE DATABASE my_database;
   GO
   ```

1. Erstellen Sie den T-SQL-Benutzer für Ihre Zieldatenbank.

   ```
   USE my_database
   GO
   CREATE USER dms_user FOR LOGIN dms_user;
   GO
   ```

1. Erteilen Sie für jede Tabelle in Ihrer Babelfish-Datenbank GRANT-Berechtigungen für die Tabellen.

   ```
   GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;  
   ```

## Einschränkungen bei der Verwendung von Babelfish als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine Babelfish-Datenbank als Ziel für AWS DMS verwenden:
+ Es wird nur der Tabellenvorbereitungsmodus „**Nichts unternehmen**“ unterstützt.
+ Der Datentyp ROWVERSION erfordert eine Tabellenzuordnungsregel, die den Spaltennamen während der Migrationsaufgabe aus der Tabelle entfernt.
+ Der Datentyp sql\$1variant wird nicht unterstützt.
+ Der vollständige LOB-Modus wird unterstützt. Für die Verwendung von SQL Server als Quellendpunkt muss die Einstellung `ForceFullLob=True` für das SQL Server-Endpunkt-Verbindungsattribut festgelegt werden, damit LOBs sie zum Zielendpunkt migriert werden kann.
+ Für Einstellungen von Replikationsaufgaben gelten die folgenden Einschränkungen:

  ```
  {
     "FullLoadSettings": {
        "TargetTablePrepMode": "DO_NOTHING",
        "CreatePkAfterFullLoad": false,
        }.
      
  }
  ```
+ Die Datentypen TIME (7), DATETIME2 (7) und DATETIMEOFFSET (7) in Babelfish begrenzen den Genauigkeitswert für den Sekundenanteil der Zeit auf 6 Ziffern. Ziehen Sie die Verwendung des Genauigkeitswerts 6 für Ihre Zieltabelle in Betracht, wenn Sie diese Datentypen verwenden. Bei Babelfish-Versionen 2.2.0 und höher ist bei Verwendung von TIME (7) und DATETIME2 (7) die siebte Stelle der Genauigkeit immer Null.
+ Im Modus DO\$1NOTHING prüft DMS, ob die Tabelle bereits vorhanden ist. Wenn die Tabelle nicht im Zielschema vorhanden ist, erstellt DMS die Tabelle auf Grundlage der Quelltabellendefinition und ordnet alle benutzerdefinierten Datentypen ihrem Basisdatentyp zu.
+ Eine AWS DMS Migrationsaufgabe zu einem Babelfish-Ziel unterstützt keine Tabellen mit Spalten, die die Datentypen ROWVERSION oder TIMESTAMP verwenden. Sie können eine Tabellenzuordnungsregel verwenden, die den Spaltennamen während der Übertragung aus der Tabelle entfernt. Im folgenden Beispiel für eine Transformationsregel wird die Tabelle mit dem Namen `Actor` in Ihrer Quelle so transformiert, dass alle Spalten, die mit den Zeichen `col` beginnen, aus der Tabelle `Actor` in Ihrem Ziel entfernt werden.

  ```
  {
   	"rules": [{
  		"rule-type": "selection",is 
  		"rule-id": "1",
  		"rule-name": "1",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "%"
  		},
  		"rule-action": "include"
  	}, {
  		"rule-type": "transformation",
  		"rule-id": "2",
  		"rule-name": "2",
  		"rule-action": "remove-column",
  		"rule-target": "column",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "Actor",
  			"column-name": "col%"
  		}
  	}]
   }
  ```
+ Für Tabellen mit Identitäts- oder berechneten Spalten, bei denen die Zieltabellen Namen mit gemischter Groß- und Kleinschreibung wie Kategorien verwenden, müssen Sie eine Transformationsregelaktion erstellen, die die Tabellennamen für Ihre DMS-Aufgabe in Kleinbuchstaben umwandelt. Das folgende Beispiel zeigt, wie die Transformationsregelaktion „**Kleinbuchstaben erstellen**“ mithilfe der Konsole erstellt wird. AWS DMS Weitere Informationen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).  
![\[Babelfish-Transformationsregel\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-babelfish-transform-1.png)
+ Vor Babelfish Version 2.2.0 beschränkte DMS die Anzahl der Spalten, die Sie auf einen Babelfish-Zielendpunkt replizieren konnten, auf zwanzig (20) Spalten. Mit Babelfish 2.2.0 wurde das Limit auf 100 Spalten erhöht. Mit den Babelfish-Versionen 2.4.0 und höher wird die Anzahl der Spalten, die Sie replizieren können, erneut erhöht. Sie können das folgende Codebeispiel für Ihre SQL-Server-Datenbank ausführen, um zu ermitteln, welche Tabellen zu lang sind.

  ```
  USE myDB;
  GO
  DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0
  WITH bfendpoint
  AS (
  SELECT 
  	[TABLE_SCHEMA]
        ,[TABLE_NAME]
  	  , COUNT( [COLUMN_NAME] ) AS NumberColumns
  	  , ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  AS InsertIntoCommandLength -- values string
        , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  -- values string
  			>= @Babelfish_version_string_limit
  			THEN 1
  			ELSE 0
  		END AS IsTooLong
  FROM [INFORMATION_SCHEMA].[COLUMNS]
  GROUP BY [TABLE_SCHEMA], [TABLE_NAME]
  )
  SELECT * 
  FROM bfendpoint
  WHERE IsTooLong = 1
  ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME
  ;
  ```

## Zieldatentypen für Babelfish
<a name="CHAP_Target.Babelfish.DataTypes"></a>

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

Weitere Informationen zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md) 


|  AWS DMS Datentyp  |  Babelfish-Datentyp   | 
| --- | --- | 
|  BOOLEAN  |  TINYINT  | 
|  BYTES  |  VARBINARY (Länge)  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INT  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  NUMERIC (p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  |  FLOAT  | 
|  STRING  |  Wenn die Spalte eine Datums- oder Zeitspalte ist, gehen Sie wie folgt vor:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Babelfish.html) Wenn die Spalte keine Datums- oder Zeitspalte ist, verwenden Sie VARCHAR (Länge).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR(Länge)  | 
|  BLOB  |  VARBINARY(max) Um diesen Datentyp mit DMS zu verwenden, müssen Sie die Verwendung von BLOBs für eine bestimmte Aufgabe aktivieren. DMS unterstützt BLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  CLOB  |  VARCHAR(max) Um diesen Datentyp mit DMS zu verwenden, müssen Sie die Verwendung von CLOBs für eine bestimmte Aufgabe aktivieren.  | 
|  NCLOB  |  NVARCHAR(max) Um diesen Datentyp mit DMS zu verwenden, müssen Sie die Verwendung von NCLOBs für eine bestimmte Aufgabe aktivieren. Bei CDC unterstützt DMS NCLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 

# Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Timestream"></a>

Sie können AWS Database Migration Service es verwenden, um Daten von Ihrer Quelldatenbank zu einem Amazon Timestream Timestream-Zielendpunkt zu migrieren, wobei Full Load- und CDC-Datenmigrationen unterstützt werden.

Amazon Timestream ist ein schneller, skalierbarer Serverless-Zeitreihendatenbank-Service, der für die Erfassung großer Datenmengen entwickelt wurde. Zeitreihendaten sind Folgen von Datenpunkten, die über ein Zeitintervall erfasst wurden. Sie werden zur Messung von Ereignissen verwendet, die sich im Laufe der Zeit ändern. Es wird verwendet, um Metriken aus IoT-Anwendungen, -Anwendungen und -Analyseanwendungen zu sammeln, zu speichern und zu analysieren. DevOps Sobald Sie Ihre Daten in Timestream haben, können Sie Trends und Muster in Ihren Daten nahezu in Echtzeit visualisieren und identifizieren. Informationen zu Amazon Timestream finden Sie unter [Was ist Amazon Timestream?](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) im *Amazon-Timestream-Entwicklerhandbuch*.

**Topics**
+ [Voraussetzungen für die Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service](#CHAP_Target.Timestream.Prerequisites)
+ [Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge](#CHAP_Target.Timestream.FLTaskSettings)
+ [Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge](#CHAP_Target.Timestream.CDCTaskSettings)
+ [Endpunkteinstellungen bei Verwendung von Timestream als Ziel für AWS DMS](#CHAP_Target.Timestream.ConnectionAttrib)
+ [Erstellen und Ändern eines Amazon-Timestream-Zielendpunkts](#CHAP_Target.Timestream.CreateModifyEndpoint)
+ [Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Timestream-Thema](#CHAP_Target.Timestream.ObjectMapping)
+ [Einschränkungen bei der Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service](#CHAP_Target.Timestream.Limitations)

## Voraussetzungen für die Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Timestream.Prerequisites"></a>

Bevor Sie Amazon Timestream als Ziel für einrichten, stellen Sie sicher AWS DMS, dass Sie eine IAM-Rolle erstellen. Diese Rolle muss AWS DMS den Zugriff auf die Daten ermöglichen, die zu Amazon Timestream migriert werden. Die Mindestanzahl an Zugriffsberechtigungen für die Rolle, die Sie für die Migration zu Timestream verwenden, ist in der folgenden IAM-Richtlinie aufgeführt.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDescribeEndpoints",
      "Effect": "Allow",
      "Action": [
        "timestream:DescribeEndpoints"
      ],
      "Resource": "*"
    },
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "timestream:ListTables",
        "timestream:DescribeDatabase"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME"
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
        "timestream:DeleteTable",
        "timestream:WriteRecords",
        "timestream:UpdateTable",
        "timestream:CreateTable"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME/table/TABLE_NAME"
    }
  ]
}
```

------

Wenn Sie beabsichtigen, alle Tabellen zu migrieren, verwenden Sie `*` for *TABLE\$1NAME* im obigen Beispiel.

Beachten Sie Folgendes zur Verwendung von Timestream als Ziel:
+ Wenn Sie historische Daten mit Zeitstempeln aufnehmen möchten, die älter als ein Jahr sind, empfehlen wir, die Daten mit AWS DMS im .csv-Format in Amazon S3 zu schreiben. Verwenden Sie dann den Stapelladevorgang von Timestream, um die Daten in Timestream aufzunehmen. Weitere Informationen dazu finden Sie unter [Verwenden des Stapelladens in Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/batch-load.html) im [Amazon-Timestream-Entwicklerhandbuch](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).
+ Für Volllast-Datenmigrationen von Daten, die weniger als ein Jahr alt sind, empfehlen wir, die Aufbewahrungsdauer der Timestream-Tabelle für den Speicher größer oder gleich dem ältesten Zeitstempel festzulegen. Sobald die Migration abgeschlossen ist, bearbeiten Sie die Speicherdauer der Tabelle zum gewünschten Wert. Gehen Sie beispielsweise wie folgt vor, um Daten zu migrieren, bei denen der älteste Zeitstempel 2 Monate alt ist:
  + Legen Sie die Speicherdauer der Timestream-Zieltabelle auf 2 Monate fest.
  + Starten Sie die Datenmigration mit AWS DMS.
  + Sobald die Datenmigration abgeschlossen ist, ändern Sie den Aufbewahrungszeitraum der Timestream-Zieltabelle auf den gewünschten Wert. 

   Wir empfehlen, die Speicherkosten vor der Migration anhand der Informationen auf den folgenden Seiten abzuschätzen:
  + [Amazon-Timestream-Preise](https://aws.amazon.com/timestream/pricing)
  + [AWS Preisrechner](https://calculator.aws/#/addService) 
+ Für CDC-Datenmigrationen empfehlen wir, den Aufbewahrungszeitraum für den Speicher der Zieltabelle so festzulegen, dass die aufgenommenen Daten innerhalb der Aufbewahrungsgrenzen des Speichers liegen. Weitere Informationen dazu finden Sie unter [Bewährte Verfahren für Schreibvorgänge](https://docs.aws.amazon.com/timestream/latest/developerguide/data-ingest.html) im [Amazon-Timestream-Entwicklerhandbuch](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).

## Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge
<a name="CHAP_Target.Timestream.FLTaskSettings"></a>

 AWS DMS Unterstützt zur Erhöhung der Geschwindigkeit der Datenübertragung eine Multithread-Migrationsaufgabe mit Volllast zu einem Timestream-Zielendpunkt mit den folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle in die entsprechende Amazon-Timestream-Zieltabelle mithilfe einer dedizierten Unteraufgabe. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre Amazon Timestream Timestream-Zieltabelle zu laden. Der maximale Wert für ein Timestream-Ziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die Parallellade-Threads zum Laden von Daten in das Amazon-Timestream-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ `ParallelLoadQueuesPerThread` – Verwenden Sie diese Option, um die Anzahl der Warteschlangen anzugeben, auf die jeder gleichzeitige Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und eine Stapellast für das Ziel zu generieren. Der Standardwert ist 1. Für Amazon-Timestream-Ziele mit verschiedenen Nutzlastgrößen beträgt der gültige Bereich jedoch 5–512 Warteschlangen pro Thread.

## Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge
<a name="CHAP_Target.Timestream.CDCTaskSettings"></a>

 AWS DMS Unterstützt die folgenden Aufgabeneinstellungen, um die CDC-Leistung zu fördern:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen Timestream-Zielendpunkt zu übertragen. Der Standardwert ist 0 und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während eines CDC-Ladevorgangs an einen Timestream-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während des CDC eine Stapellast für einen Timestream-Endpunkt zu generieren. Der Standardwert ist 1 und der maximale Wert 512.

## Endpunkteinstellungen bei Verwendung von Timestream als Ziel für AWS DMS
<a name="CHAP_Target.Timestream.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zur Konfiguration Ihrer Timestream-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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--timestream-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Timestream.html)

## Erstellen und Ändern eines Amazon-Timestream-Zielendpunkts
<a name="CHAP_Target.Timestream.CreateModifyEndpoint"></a>

Nachdem Sie eine IAM-Rolle erstellt und die Mindestanzahl an Zugriffsberechtigungen festgelegt haben, können Sie einen Amazon Timestream Timestream-Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in der mit der [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)`--timestream-settings '{"EndpointSetting": "value", ...}'`JSON-Syntax erstellen.

In den folgenden Beispielen wird erläutert, wie ein Timestream-Zielendpunkt mit der AWS CLI erstellt und geändert wird.

**Befehl „Timestream-Zielendpunkt erstellen“**

```
aws dms create-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "DatabaseName":"db_name",
    "MagneticDuration": 3,
    "CdcInsertsAndUpdates": true,
    "EnableMagneticStoreWrites": true,
}
```

**Befehl „Timestream-Zielendpunkt ändern“**

```
aws dms modify-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "MagneticDuration": 3,
}
```

## Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Timestream-Thema
<a name="CHAP_Target.Timestream.ObjectMapping"></a>

AWS DMS verwendet Regeln für die Tabellenzuweisung, um Daten aus der Quelle dem Timestream-Zielthema zuzuordnen. Um Daten einem Zielthema zuzuweisen, verwenden Sie eine Art von Tabellenzuweisungsregel, die als Objektzuweisung bezeichnet wird. Mit der Objektzuweisung legen Sie fest, wie Datensätze in der Quelle den in einem Timestream-Thema veröffentlichten Datensätzen zugewiesen werden. 

Timestream-Themen verfügen bis auf einen Partitionsschlüssel über keine voreingestellte Struktur.

**Anmerkung**  
Sie müssen die Objektzuweisung nicht verwenden. Sie können die reguläre Tabellenzuweisung für verschiedene Transformationen verwenden. Der Partitionsschlüsseltyp folgt jedoch diesen Standardverhaltensweisen:   
Der Primärschlüssel wird als Partitionsschlüssel für Volllast verwendet.
Wenn keine Aufgabeneinstellungen für die parallele Anwendung verwendet werden, wird `schema.table` als Partitionsschlüssel für CDC verwendet.
Wenn Aufgabeneinstellungen für parallele Anwendung verwendet werden, wird der Primärschlüssel als Partitionsschlüssel für CDC verwendet.

Um eine Objektzuweisungsregel zu erstellen, legen Sie `rule-type` als `object-mapping` fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. Die Struktur für die Regel lautet wie folgt.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```



```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "1",
            "rule-name": "timestream-map",
            "rule-action": "map-record-to-record",
            "target-table-name": "tablename",
            "object-locator": {
                "schema-name": "",
                "table-name": ""
            },
            "mapping-parameters": {
                "timestream-dimensions": [
                    "column_name1",
                     "column_name2"
                ],
                "timestream-timestamp-name": "time_column_name",
                "timestream-multi-measure-name": "column_name1or2",
                "timestream-hash-measure-name":  true or false,
                "timestream-memory-duration": x,
                "timestream-magnetic-duration": y
            }
        }
    ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den Parameter. `rule-action` Die `map-record-to-document` Werte `map-record-to-record` und geben an, was AWS DMS standardmäßig mit Datensätzen geschieht, die nicht in der `exclude-columns` Attributliste ausgeschlossen sind. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 

Verwenden Sie `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu einem Timestream-Thema. Dieser Regeltyp verwendet den `taskResourceId.schemaName.tableName`-Wert aus der relationalen Datenbank als Partitionsschlüssel in dem Timestream-Thema und erstellt ein Attribut für jede Spalte in der Quelldatenbank. Bei Verwendung wird für jede Spalte in der Quelltabelle`map-record-to-record`, die nicht in der `exclude-columns` Attributliste aufgeführt ist, ein entsprechendes Attribut im Zielthema AWS DMS erstellt. Dieses entsprechende Attribut wird unabhängig davon erstellt, ob diese Quellspalte in einer Attributzuweisung verwendet wird oder nicht. 

Eine Möglichkeit, `map-record-to-record` zu verstehen, besteht darin, sich die praktische Anwendung zu veranschaulichen. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Um diese Informationen von einem Schema mit dem Namen `Test` zu einem Timestream-Thema zu migrieren, erstellen Sie Regeln, um die Daten dem Zielthema zuzuweisen. Die folgende Regel veranschaulicht die Zuweisung. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToTimestream",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Nachfolgend wird das resultierende Datensatzformat bei Verwendung unserer Beispieldaten in dem Timestream-Zielthema für ein bestimmtes Timestream-Thema und einen bestimmten Partitionsschlüssel (in diesem Fall `taskResourceId.schemaName.tableName`) illustriert. 

```
  {
     "FirstName": "Randy",
     "LastName": "Marsh",
     "StoreId":  "5",
     "HomeAddress": "221B Baker Street",
     "HomePhone": "1234567890",
     "WorkAddress": "31 Spooner Street, Quahog",
     "WorkPhone": "9876543210",
     "DateOfBirth": "02/29/1988"
  }
```

## Einschränkungen bei der Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Timestream.Limitations"></a>

Bei der Verwendung von Amazon Timestream als Ziel gelten die folgenden Einschränkungen:
+ **Dimensionen und Zeitstempel:** Timestream verwendet die Dimensionen und Zeitstempel in den Quelldaten wie einen zusammengesetzten Primärschlüssel und ermöglicht Ihnen auch nicht, diese Werte zu ändern. Dies bedeutet: Wenn Sie den Zeitstempel oder die Dimensionen für einen Datensatz in der Quelldatenbank ändern, versucht die Timestream-Datenbank, einen neuen Datensatz zu erstellen. Es ist also möglich, dass, wenn Sie die Dimension oder den Zeitstempel eines Datensatzes so ändern, dass sie denen eines anderen vorhandenen Datensatzes entsprechen, die Werte des anderen Datensatzes AWS DMS aktualisiert werden, anstatt einen neuen Datensatz zu erstellen oder den vorherigen entsprechenden Datensatz zu aktualisieren.
+ **DDL-Befehle:** Die aktuelle Version von unterstützt AWS DMS `CREATE TABLE` nur `DROP TABLE` DDL-Befehle.
+ **Einschränkungen bei Datensätzen:** Timestream hat Einschränkungen für Datensätze wie Datensatzgröße und Maßgröße. Weitere Informationen dazu finden Sie unter [Kontingente](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) im [Amazon-Timestream-Entwicklerhandbuch](https://docs.aws.amazon.com/).
+ **Löschen von Datensätzen und Nullwerten:** Timestream unterstützt das Löschen von Datensätzen nicht. AWS DMS Löscht die entsprechenden Felder in den Datensätzen in der Timestream-Zieldatenbank, um die Migration von Datensätzen zu unterstützen, die aus der Quelle gelöscht wurden. AWS DMS ändert die Werte in den Feldern des entsprechenden Zieldatensatzes mit **0** für numerische Felder, **Null** für Textfelder und **falsch** für boolesche Felder.
+ Timestream als Ziel unterstützt keine Quellen, die keine relationalen Datenbanken (RDBMS) sind.
+ AWS DMS unterstützt Timestream nur als Ziel in den folgenden Regionen:
  + USA Ost (Nord-Virginia)
  + USA Ost (Ohio)
  + USA West (Oregon)
  + Europa (Irland)
  + Europa (Frankfurt)
  + Asien-Pazifik (Sydney)
  + Asien-Pazifik (Tokio)
+ Timestream als Ziel unterstützt die Einstellung `TargetTablePrepMode` auf `TRUNCATE_BEFORE_LOAD` nicht. Wir empfehlen, `DROP_AND_CREATE` für diese Einstellung zu verwenden.

# Verwendung von Amazon RDS for Db2 und IBM Db2 LUW als Ziel für AWS DMS
<a name="CHAP_Target.DB2"></a>

Mit () können Sie Daten von einer Db2-LUW-Datenbank auf eine Amazon RDS for Db2- oder eine lokale Db2-Datenbank migrieren. AWS Database Migration Service AWS DMS

Informationen zu Versionen von Db2 LUW, die als Ziel unterstützt werden, AWS DMS finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md)

Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem Db2 LUW-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem Db2-LUW-Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md).

## Einschränkungen bei der Verwendung von Db2 LUW als Ziel für AWS DMS
<a name="CHAP_Target.DB2.Limitations"></a>

Die folgenden Einschränkungen gelten bei der Verwendung der Db2 LUW-Datenbank als Ziel für. AWS DMS Zu Einschränkungen bei der Verwendung von Db2 LUW als Quelle siehe [Einschränkungen bei der Verwendung von Db2 LUW als Quelle für AWS DMS](CHAP_Source.DB2.md#CHAP_Source.DB2.Limitations).
+ AWS DMS unterstützt nur Db2 LUW als Ziel, wenn die Quelle entweder Db2 LUW oder Db2 for z/OS ist.
+ Die Verwendung von Db2 LUW als Ziel unterstützt keine Replikationen mit vollständigem LOB-Modus.
+ Die Verwendung von Db2 LUW als Ziel unterstützt den XML-Datentyp in der Vollladephase nicht. Dies ist eine Einschränkung des IBM dbload-Dienstprogramms. Weitere Informationen finden Sie unter [Das Hilfsprogramm dbload](https://www.ibm.com/docs/en/informix-servers/14.10?topic=utilities-dbload-utility) in der Dokumentation von *IBM Informix Server*.
+ AWS DMS kürzt BLOB-Felder mit Werten, die dem doppelten Anführungszeichen („) entsprechen. Dies ist eine Einschränkung des IBM dbload-Dienstprogramms. 
+ AWS DMS unterstützt die Option paralleles Vollladen bei der Migration zu einem Db2-LUW-Ziel in DMS-Version 3.5.3 nicht. Diese Option ist ab DMS-Version 3.5.4 oder höher verfügbar.

## Endpunkteinstellungen bei Verwendung von Db2 LUW als Ziel für AWS DMS
<a name="CHAP_Target.DB2.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer Db2-LUW-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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--ibm-db2-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

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


| Name | Description | 
| --- | --- | 
|  `KeepCsvFiles`  |  Wenn der Wert true ist, werden alle CSV-Dateien, die zur Datenreplikation verwendet wurden, auf dem Db2-LUW-Ziel AWS DMS gespeichert. DMS verwendet diese Dateien zur Analyse und Problembehandlung..  | 
|  `LoadTimeout`  |  Die Zeitspanne (in Millisekunden), bevor bei Vorgängen, die von DMS auf dem Db2-Ziel ausgeführt werden, ein AWS DMS Timeout eintritt. Der Standardwert ist 1 200 (20 Minuten).  | 
|  `MaxFileSize`  |  Gibt die maximale Größe (in KB) der .csv-Dateien zum Übertragen von Daten zu Db2 LUW an.  | 
|  `WriteBufferSize`  |  Die Größe (in KB) des In-Memory-Datei-Schreibpuffers, der beim Generieren von .csv-Dateien auf der lokalen Festplatte in der DMS-Replikations-Instance verwendet wird. Der Standardwert ist 1 024 (1 MB).  | 