

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation des points de AWS terminaison DMS
<a name="CHAP_Endpoints"></a>

Un point de terminaison fournit des informations de connexion, de type de magasin de données et de localisation concernant votre magasin de données. AWS Database Migration Service utilise ces informations pour se connecter à un magasin de données et migrer les données d'un point de terminaison source vers un point de terminaison cible. Vous pouvez spécifier des attributs de connexion supplémentaires pour un point de terminaison à l’aide des paramètres de point de terminaison. Ces paramètres peuvent contrôler la journalisation, la taille de fichier et d’autres paramètres ; pour plus d’informations sur les paramètres de point de terminaison, consultez la section de la documentation relative à votre magasin de données. 

Ci-dessous, vous trouverez plus d'informations sur les points de terminaison.

**Topics**
+ [Création de points de terminaison source et cible](CHAP_Endpoints.Creating.md)
+ [Sources pour la migration des données](CHAP_Source.md)
+ [Cibles pour la migration des données](CHAP_Target.md)
+ [Configuration des points de terminaison VPC pour AWS DMS](CHAP_VPC_Endpoints.md)
+ [Déclarations DDL prises en charge par AWS DMS](CHAP_Introduction.SupportedDDL.md)
+ [Configuration avancée des terminaux](CHAP_Advanced.Endpoints.md)

# Création de points de terminaison source et cible
<a name="CHAP_Endpoints.Creating"></a>

Vous pouvez créer des points de terminaison source et cible lorsque vous créez votre instance de réplication ou vous pouvez créer les points de terminaison après que votre instance de réplication a été créée. Les magasins de données source et cible peuvent se trouver sur une instance Amazon Elastic Compute Cloud (Amazon EC2), une instance de base de données Amazon Relational Database Service (Amazon RDS) ou une base de données sur site. (Notez que l'un de vos points de terminaison doit se trouver sur un AWS service. Vous ne pouvez pas utiliser AWS DMS pour migrer d'une base de données locale vers une autre base de données locale.)

La procédure suivante suppose que vous avez choisi l'assistant de console AWS DMS. Notez que vous pouvez également effectuer cette étape en sélectionnant **Points de terminaison** dans le volet de navigation de la console AWS  DMS, puis en sélectionnant **Créer un point de terminaison**. Lorsque vous utilisez l'assistant de la console, vous créez les points de terminaison source et cible sur la même page. Lorsque vous n'utilisez pas l'assistant de la console, vous créez chaque point de terminaison séparément.

**Pour spécifier les points de terminaison de base de données source ou cible à l'aide de la console AWS**

1. Sur la page **Connecter les points de terminaison des bases de données source et cible**, spécifiez vos informations de connexion pour la base de données source ou cible. Le tableau suivant décrit les paramètres.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Endpoints.Creating.html)

   Le tableau suivant répertorie les caractères non pris en charge dans les mots de passe des terminaux et les secrets du gestionnaire de secrets pour les moteurs de base de données répertoriés. Si vous souhaitez utiliser des virgules (,) dans les mots de passe de vos terminaux, utilisez le support Secrets Manager fourni AWS DMS pour authentifier l'accès à vos AWS DMS instances. Pour de plus amples informations, veuillez consulter [Utilisation de secrets pour accéder aux points de AWS Database Migration Service terminaison](security_iam_secretsmanager.md).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Endpoints.Creating.html)

1. Choisissez **Paramètres de point de terminaison** et **AWS KMS key ** si vous en avez besoin. Vous pouvez tester la connexion au point de terminaison en sélectionnant **Exécuter test**. Le tableau suivant décrit les paramètres.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Endpoints.Creating.html)

# Utilisation de l'authentification IAM pour le point de terminaison Amazon RDS dans AWS DMS
<a name="CHAP_Endpoints.Creating.IAMRDS"></a>

AWS L'authentification des bases de données Identity and Access Management (IAM) renforce la sécurité de vos bases de données Amazon RDS en gérant l'accès aux bases de données via les informations d'identification IAM. AWS Au lieu d'utiliser des mots de passe de base de données traditionnels, l'authentification IAM génère des jetons d'authentification de courte durée, valides pendant 15 minutes, à l'aide AWS d'informations d'identification. Cette approche améliore considérablement la sécurité en éliminant le besoin de stocker les mots de passe des bases de données dans le code de l'application, en réduisant le risque d'exposition aux informations d'identification et en fournissant une gestion centralisée des accès via IAM. Il simplifie également la gestion des accès en tirant parti des rôles et politiques AWS IAM existants, ce qui vous permet de contrôler l'accès aux bases de données en utilisant le même framework IAM que celui que vous utilisez pour les autres AWS services.

AWS DMS prend désormais en charge l'authentification IAM pour les instances de réplication exécutant DMS version 3.6.1 ou ultérieure lors de la connexion aux points de terminaison MySQL, PostgreSQL, Aurora PostgreSQL, Aurora MySQL ou MariaDB sur Amazon RDS. Lorsque vous créez un nouveau point de terminaison pour ces moteurs, vous pouvez sélectionner l'authentification IAM et spécifier un rôle IAM au lieu de fournir des informations d'identification de base de données. Cette intégration améliore la sécurité en éliminant le besoin de gérer et de stocker les mots de passe des bases de données pour vos tâches de migration.

## Configuration de l'authentification IAM pour le point de terminaison Amazon RDS dans AWS DMS
<a name="CHAP_Endpoints.Creating.IAMRDS.config"></a>

Lorsque vous créez un point de terminaison, vous pouvez configurer l'authentification IAM pour votre base de données Amazon RDS. Pour configurer l'authentification IAM, procédez comme suit :

### Console DMS
<a name="CHAP_Endpoints.Creating.IAMRDS.console"></a>

1. Assurez-vous que l'authentification IAM est activée sur Amazon RDS et sur l'utilisateur de la base de données. Pour plus d'informations, consultez [Activation et désactivation de l'authentification de base de données IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Enabling.html) dans le guide de l'utilisateur d'*Amazon Relational Database Service*. 

1. Accédez à la console IAM, créez un rôle IAM avec les politiques ci-dessous :

   Politique

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "rds-db:connect"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Stratégie d'approbation :

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

****  

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

------

1. Lors de la configuration du point de terminaison dans la [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2), accédez à la section **Accès à la base de données du point de terminaison** et sélectionnez **Authentification IAM**.

1. Dans le menu déroulant **Rôle IAM pour l'authentification de base de données RDS**, sélectionnez le rôle IAM disposant des autorisations appropriées pour accéder à la base de données.

    Pour plus d'informations, consultez la section [Création de points de terminaison source et cible](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html).

### AWS CLI
<a name="CHAP_Endpoints.Creating.IAMRDS.awscli"></a>

1. Assurez-vous que l'authentification IAM est activée sur Amazon RDS et sur l'utilisateur de la base de données. Pour plus d'informations, consultez [Activation et désactivation de l'authentification de base de données IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Enabling.html) dans le guide de l'utilisateur d'*Amazon Relational Database Service*. 

1. Accédez à la AWS CLI, créez un rôle IAM et autorisez DMS à assumer ce rôle :

   Politique :

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "rds-db:connect"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Stratégie d'approbation :

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

****  

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

------

1. Exécutez la commande suivante pour importer le certificat et télécharger le fichier PEM. Pour plus d'informations, consultez [la section Télécharger des ensembles de certificats pour Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesDownload) dans le guide de l'utilisateur d'*Amazon Relational Database Service*. 

   ```
   aws dms import-certificate --certificate-identifier rdsglobal --certificate-pem file://~/global-bundle.pem
   ```

1. Exécutez les commandes suivantes pour créer un point de terminaison IAM :
   + Pour les points de terminaison PostgreSQL/Aurora PostgreSQL (`sslmode`lorsque ce paramètre est défini sur`--certificate-arn`, l'indicateur n'est `required` pas obligatoire) : 

     ```
     aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <postgres/aurora-postgres> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <required/verify-ca/verify-full> --postgre-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <if sslmode is verify-ca/verify full use cert arn generated in step 3, otherwise this parameter is not required>
     ```
   + Pour les points de terminaison MySQL, MariaDB ou Aurora MySQL : 

     ```
     aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <mysql/mariadb/aurora> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <verify-ca/verify-full> --my-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <cert arn from previously imported cert in step 3>
     ```

1. Exécutez un test de connexion avec l'instance de réplication de votre choix pour créer l'association du point de terminaison de l'instance et vérifiez que tout est correctement configuré : 

   ```
   aws dms test-connection --replication-instance-arn <replication instance arn> --endpoint-arn <endpoint arn from previously created endpoint in step 4>
   ```
**Note**  
Lorsque vous utilisez l'authentification IAM, l'instance de réplication fournie lors du test de connexion doit être en AWS DMS version 3.6.1 ou ultérieure.

## Limitations
<a name="CHAP_Endpoints.Creating.IAMRDS.Limitations"></a>

AWS DMS présente les limites suivantes lors de l'utilisation de l'authentification IAM avec le point de terminaison Amazon RDS :
+ Actuellement, les instances Amazon RDS PostgreSQL et Amazon Aurora PostgreSQL ne prennent pas en charge les connexions CDC avec authentification IAM. Pour plus d'informations, consultez la section [Limitations relatives à l'authentification de base de données IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html#UsingWithRDS.IAMDBAuth.Limitations) dans le guide de l'utilisateur d'*Amazon Relational Database Service*.

# Sources pour la migration des données
<a name="CHAP_Source"></a>

AWS Database Migration Service (AWS DMS) peut utiliser la plupart des moteurs de données les plus populaires comme source de réplication de données. La source de base de données peut être un moteur autogéré s’exécutant sur une instance Amazon EC2 ou une base de données sur site. Il peut également s'agir d'une source de données sur un AWS service tel qu'Amazon RDS ou Amazon S3.

Pour une liste complète des sources valides, consultez [Sources pour AWS DMS](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.title).

**Topics**
+ [Utilisation d'une base de données Oracle comme source pour AWS DMS](CHAP_Source.Oracle.md)
+ [Utilisation d'une base de données Microsoft SQL Server comme source pour AWS DMS](CHAP_Source.SQLServer.md)
+ [Utilisation de la base de données Microsoft Azure SQL comme source pour AWS DMS](CHAP_Source.AzureSQL.md)
+ [Utilisation de l'instance gérée Microsoft Azure SQL comme source pour AWS DMS](CHAP_Source.AzureMgd.md)
+ [Utilisation du serveur flexible Microsoft Azure Database pour PostgreSQL comme source pour AWS DMS](CHAP_Source.AzureDBPostgreSQL.md)
+ [Utilisation du serveur flexible Microsoft Azure Database pour MySQL comme source pour AWS DMS](CHAP_Source.AzureDBMySQL.md)
+ [Utilisation d'OCI MySQL Heatwave comme source pour AWS DMS](CHAP_Source.heatwave.md)
+ [Utilisation de Google Cloud pour MySQL comme source pour AWS DMS](CHAP_Source.GC.md)
+ [Utilisation de Google Cloud pour PostgreSQL comme source pour AWS DMS](CHAP_Source.GCPostgres.md)
+ [Utilisation d'une base de données PostgreSQL comme source AWS DMS](CHAP_Source.PostgreSQL.md)
+ [Utilisation d'une base de données compatible MySQL comme source pour AWS DMS](CHAP_Source.MySQL.md)
+ [Utilisation d'une base de données SAP ASE comme source pour AWS DMS](CHAP_Source.SAP.md)
+ [Utilisation de MongoDB comme source pour AWS DMS](CHAP_Source.MongoDB.md)
+ [Utilisation d'Amazon DocumentDB (compatible avec MongoDB) comme source pour AWS DMS](CHAP_Source.DocumentDB.md)
+ [Utilisation d'Amazon S3 comme source pour AWS DMS](CHAP_Source.S3.md)
+ [Utilisation d'IBM Db2 pour Linux, Unix, Windows et de la base de données Amazon RDS (Db2 LUW) comme source pour AWS DMS](CHAP_Source.DB2.md)
+ [Utilisation d'IBM Db2 pour les z/OS bases de données comme source pour AWS DMS](CHAP_Source.DB2zOS.md)

# Utilisation d'une base de données Oracle comme source pour AWS DMS
<a name="CHAP_Source.Oracle"></a>

Vous pouvez migrer les données d'une ou de plusieurs bases de données Oracle à l'aide de AWS DMS. Avec une base de données Oracle en tant que source, vous pouvez migrer des données vers l’une des cibles prises en charge par AWS DMS.

AWS DMS prend en charge les éditions de base de données Oracle suivantes :
+ Oracle Enterprise Edition
+ Oracle Standard Edition
+ Édition Oracle Express
+ Édition Oracle Personal

Pour plus d'informations sur les versions des bases de données Oracle AWS DMS prises en charge en tant que source, consultez[Sources pour AWS DMS](CHAP_Introduction.Sources.md).

Vous pouvez utiliser SSL (Secure Sockets Layer) pour chiffrer les connexions entre votre point de terminaison Oracle et votre instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison Oracle, consultez [Prise en charge de SSL pour un point de terminaison Oracle](#CHAP_Security.SSL.Oracle).

AWS DMS prend en charge l'utilisation du chiffrement transparent des données (TDE) Oracle pour chiffrer les données au repos dans la base de données source. Pour plus d'informations sur l'utilisation de TDE Oracle avec un point de terminaison source Oracle, consultez [Méthodes de chiffrement prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.Encryption).

AWS prend en charge l'utilisation de TLS version 1.2 et ultérieure avec les points de terminaison Oracle (et tous les autres types de points de terminaison) et recommande d'utiliser TLS version 1.3 ou ultérieure.

Procédez comme suit pour configurer une base de données Oracle en tant que point de terminaison AWS DMS source :

1. Créez un utilisateur Oracle doté des autorisations appropriées pour accéder AWS DMS à votre base de données source Oracle.

1. Créez un point de terminaison source Oracle conforme à la configuration de base de données Oracle que vous avez choisie. Pour créer une full-load-only tâche, aucune autre configuration n'est nécessaire.

1. Pour créer une tâche qui gère la capture des données de modification (une tâche uniquement CDC ou une tâche à chargement complet et une tâche CDC), choisissez Oracle LogMiner ou AWS DMS Binary Reader pour capturer les modifications de données. Le choix LogMiner de Binary Reader détermine certaines des autorisations et options de configuration ultérieures. Pour une comparaison entre Binary Reader LogMiner et Binary Reader, consultez la section suivante.

**Note**  
Pour plus d’informations sur les tâches de chargement complet, les tâches de CDC uniquement et les tâches de chargement complet et de CDC, consultez [Création d’une tâche](CHAP_Tasks.Creating.md)

Pour plus de détails sur l'utilisation des bases de données source Oracle AWS DMS, consultez les sections suivantes. 

**Topics**
+ [Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC](#CHAP_Source.Oracle.CDC)
+ [Flux de travail pour configurer une base de données source Oracle AWS autogérée ou gérée pour AWS DMSConfiguration d’une base de données source Oracle](#CHAP_Source.Oracle.Workflows)
+ [Utilisation d'une base de données Oracle autogérée comme source pour AWS DMS](#CHAP_Source.Oracle.Self-Managed)
+ [Utilisation d'une base de données Oracle AWS gérée comme source pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed)
+ [Restrictions relatives à l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.Limitations)
+ [Prise en charge de SSL pour un point de terminaison Oracle](#CHAP_Security.SSL.Oracle)
+ [Méthodes de chiffrement prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.Encryption)
+ [Méthodes de compression prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.Compression)
+ [Réplication de tables imbriquées à l'aide d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.NestedTables)
+ [Stockage de REDO sur Oracle ASM lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.REDOonASM)
+ [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)
+ [Types de données sources pour Oracle](#CHAP_Source.Oracle.DataTypes)

## Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC
<a name="CHAP_Source.Oracle.CDC"></a>

Dans AWS DMS, il existe deux méthodes pour lire les journaux de restauration lors de la capture des données de modification (CDC) pour Oracle en tant que source : Oracle LogMiner et AWS DMS Binary Reader. LogMiner est une API Oracle permettant de lire les journaux de journalisation en ligne et les fichiers de journalisation archivés. Le lecteur binaire est une AWS DMS méthode qui lit et analyse directement les fichiers de journalisation bruts. Ces méthodes présentent les fonctionnalités suivantes.


| Fonctionnalité | LogMiner | Binary Reader | 
| --- | --- | --- | 
| Facile à configurer | Oui | Non | 
| Réduction de l'impact sur le système source I/O et le processeur | Non | Oui | 
| Meilleures performances de CDC | Non | Oui | 
| Prend en charge les clusters de tables Oracle | Oui | Non | 
| Prend en charge tous les types de compressions HCC Oracle | Oui |  Partiellement Binary Reader ne prend pas en charge QUERY LOW pour les tâches avec CDC. Tous les autres types de HCC sont entièrement pris en charge.  | 
| Prise en charge des colonnes LOB dans Oracle 12c uniquement | Non (le support LOB n'est pas disponible LogMiner dans Oracle 12c.) | Oui | 
| Prend en charge les instructions UPDATE qui n’affectent que les colonnes LOB | Non | Oui | 
| Prend en charge le chiffrement transparent des données (TDE) Oracle |  Partiellement Lorsque vous utilisez Oracle LogMiner, AWS DMS le chiffrement TDE au niveau des colonnes n'est pas pris en charge pour Amazon RDS for Oracle.  |  Partiellement Binary Reader prend en charge le chiffrement TDE uniquement pour les bases de données Oracle autogérées.  | 
| Prend en charge toutes les méthodes de compression Oracle | Oui | Non | 
| Prend en charge les transactions XA | Non | Oui | 
| RAC |  Oui Non recommandé pour des raisons de performances et pour certaines limitations internes du DMS.  |  Oui Fortement recommandé  | 

**Note**  
Par défaut, AWS DMS utilise Oracle LogMiner pour (CDC).   
AWS DMS prend en charge les méthodes de chiffrement transparent des données (TDE) lorsque vous travaillez avec une base de données source Oracle. Si les informations d'identification TDE que vous spécifiez sont incorrectes, la tâche de AWS DMS migration n'échoue pas, ce qui peut avoir un impact sur la réplication continue des tables chiffrées. Pour plus d’informations sur la spécification des informations d’identification TDE, consultez [Méthodes de chiffrement prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.Encryption).

Les principaux avantages de l'utilisation de LogMiner with AWS DMS sont les suivants :
+ LogMiner prend en charge la plupart des options Oracle, telles que les options de chiffrement et de compression. Binary Reader ne prend pas en charge toutes les options Oracle, en particulier la compression et la plupart des options de chiffrement.
+ LogMiner offre une configuration plus simple, en particulier par rapport à la configuration à accès direct à Binary Reader ou lorsque les journaux de rétablissement sont gérés à l'aide d'Oracle Automatic Storage Management (ASM).
+ LogMiner prend en charge les clusters de tables destinés à être utilisés par AWS DMS. Binary Reader ne le fait pas.

Les principaux avantages de l'utilisation de Binary Reader AWS DMS sont les suivants :
+ Pour les migrations comportant un volume élevé de modifications, LogMiner cela peut avoir un impact sur le I/O processeur de l'ordinateur hébergeant la base de données source Oracle. Binary Reader a moins de chances d'avoir un impact sur le I/O processeur, car les journaux sont extraits directement au lieu d'effectuer plusieurs requêtes de base de données.
+ Pour les migrations impliquant un volume élevé de modifications, les performances du CDC sont généralement bien meilleures lorsque vous utilisez Binary Reader par rapport à Oracle LogMiner.
+ Binary Reader prend en charge le CDC pour LOBs Oracle version 12c. LogMiner ne le fait pas.

En général, utilisez Oracle LogMiner pour migrer votre base de données Oracle, sauf si vous vous trouvez dans l'une des situations suivantes :
+ Vous avez besoin d'exécuter plusieurs tâches de migration sur la base de données source Oracle.
+ Le volume de modifications ou le volume de journaux redo sur la base de données Oracle source est élevé, ou vous avez des modifications et vous utilisez également Oracle ASM.

**Note**  
Si vous passez d'Oracle LogMiner à AWS DMS Binary Reader, assurez-vous de redémarrer la tâche CDC. 

### Configuration de CDC sur une base de données source Oracle
<a name="CHAP_Source.Oracle.CDC.Configuration"></a>

Pour qu’un point de terminaison source Oracle puisse se connecter à la base de données pour une tâche de capture des données de modification (CDC), vous devrez peut-être spécifier des attributs de connexion supplémentaires. Vous devrez peut-être le faire pour une tâche de chargement complet et de CDC ou pour une tâche de CDC uniquement. Les attributs de connexion supplémentaires que vous spécifiez dépendent de la méthode que vous utilisez pour accéder aux journaux de journalisation : Oracle LogMiner ou AWS DMS Binary Reader. 

Vous spécifiez des attributs de connexion supplémentaires lorsque vous créez un point de terminaison source. Si vous avez plusieurs paramètres d'attribut de connexion, séparez-les les uns des autres par des points-virgules, sans espace supplémentaire (par exemple, `oneSetting;thenAnother`).

AWS DMS utilise LogMiner par défaut. Vous n’avez pas à spécifier d’attributs de connexion supplémentaires pour l’utiliser. 

Pour utiliser Binary Reader afin d’accéder aux journaux redo, ajoutez les attributs de connexion supplémentaires suivants.

```
useLogMinerReader=N;useBfile=Y;
```

Utilisez le format suivant pour les attributs de connexion supplémentaires afin d'accéder à un serveur qui utilise ASM avec Binary Reader.

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
```

Définissez le paramètre de demande `Password` du point de terminaison source sur le mot de passe d'utilisateur Oracle et le mot de passe ASM, séparés par une virgule comme suit.

```
oracle_user_password,asm_user_password
```

Dans les versions où la source Oracle utilise ASM, vous pouvez utiliser des options hautes performances dans Binary Reader pour le traitement des transactions à grande échelle. Ces options incluent des attributs de connexion supplémentaires pour spécifier le nombre de threads parallèles (`parallelASMReadThreads`) et le nombre de tampons de lecture anticipée (`readAheadBlocks`). La définition conjointe de ces attributs peut améliorer considérablement les performances de la tâche de CDC. Les paramètres suivants fournissent de bons résultats pour la plupart des configurations ASM.

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
    parallelASMReadThreads=6;readAheadBlocks=150000;
```

Pour de plus amples informations sur les valeurs prises en charge par les attributs de connexion supplémentaires, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

En outre, les performances d’une tâche de CDC avec une source Oracle qui utilise ASM dépendent d’autres paramètres que vous choisissez. Ces paramètres incluent vos attributs de connexion supplémentaires AWS DMS et les paramètres SQL pour configurer la source Oracle. Pour plus d’informations sur les attributs de connexion supplémentaires pour une source Oracle qui utilise ASM, consultez [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

Vous devez également choisir un point de départ de CDC approprié. Généralement, lorsque vous effectuez cette opération, vous souhaitez identifier le point de traitement des transactions qui capture la première transaction ouverte à partir de laquelle commencer la CDC. Dans le cas contraire, la tâche de CDC peut manquer les premières transactions ouvertes. Pour une base de données source Oracle, vous pouvez choisir un point de départ natif de CDC en fonction du numéro SCN Oracle afin d’identifier cette première transaction ouverte. Pour de plus amples informations, veuillez consulter [Exécution de la réplication à partir d'un point de départ CDC](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint).

Pour plus d’informations sur la configuration de la CDC pour une base de données Oracle autogérée en tant que source, consultez [Privilèges de compte requis lors de l'utilisation LogMiner d'Oracle pour accéder aux journaux de journalisation](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges), [Privilèges de compte requis lors de l'utilisation de AWS DMS Binary Reader pour accéder aux journaux de restauration](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges) et [Privilèges de compte supplémentaires requis lors de l’utilisation de Binary Reader avec Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges).

Pour plus d'informations sur la configuration du CDC pour une base de données Oracle AWS gérée en tant que source, consultez [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC) et[Utilisation d'un Amazon RDS Oracle Standby (lire une réplique) comme source avec Binary Reader for CDC dans AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy).

## Flux de travail pour configurer une base de données source Oracle AWS autogérée ou gérée pour AWS DMS


## Configuration d’une base de données source Oracle
<a name="CHAP_Source.Oracle.Workflows"></a>

Pour configurer une instance de base de données source autogérée, suivez les étapes du flux de travail suivantes, en fonction de la manière dont vous effectuez la CDC. 


| Pour cette étape du flux de travail | Si vous utilisez le CDC LogMiner, procédez comme suit | Si vous effectuez la CDC à l’aide de Binary Reader, procédez comme suit | 
| --- | --- | --- | 
| Accordez des privilèges de compte Oracle. | Consultez [Privilèges de compte utilisateur requis sur une source Oracle autogérée pour AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges). | Consultez [Privilèges de compte utilisateur requis sur une source Oracle autogérée pour AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges). | 
| Préparez la base de données source pour la réplication à l’aide de la CDC. | Consultez [Préparation d'une base de données source autogérée Oracle pour le CDC à l'aide de AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration). | Consultez [Préparation d'une base de données source autogérée Oracle pour le CDC à l'aide de AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration). | 
| Accordez les privilèges d’utilisateur Oracle supplémentaires requis pour la CDC. | Consultez [Privilèges de compte requis lors de l'utilisation LogMiner d'Oracle pour accéder aux journaux de journalisation](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges). | Consultez [Privilèges de compte requis lors de l'utilisation de AWS DMS Binary Reader pour accéder aux journaux de restauration](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges). | 
| Pour une instance Oracle avec ASM, accordez les privilèges de compte d’utilisateur supplémentaires requis pour accéder à ASM pour la CDC. | Aucune action supplémentaire. AWS DMS prend en charge Oracle ASM sans privilèges de compte supplémentaires. | Consultez [Privilèges de compte supplémentaires requis lors de l’utilisation de Binary Reader avec Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges). | 
| Si ce n'est pas déjà fait, configurez la tâche à utiliser LogMiner ou Binary Reader for CDC. | Consultez [Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC](#CHAP_Source.Oracle.CDC). | Consultez [Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC](#CHAP_Source.Oracle.CDC). | 
| Configurez Oracle Standby en tant que source pour la CDC. | AWS DMS ne prend pas en charge Oracle Standby en tant que source. | Consultez [Utilisation d'un Oracle Standby autogéré comme source avec Binary Reader for CDC dans AWS DMS](#CHAP_Source.Oracle.Self-Managed.BinaryStandby). | 

Utilisez les étapes de flux de travail suivantes pour configurer une instance de base de données source Oracle AWS gérée.


| Pour cette étape du flux de travail | Si vous utilisez le CDC LogMiner, procédez comme suit | Si vous effectuez la CDC à l’aide de Binary Reader, procédez comme suit | 
| --- | --- | --- | 
| Accordez des privilèges de compte Oracle. | Pour de plus amples informations, veuillez consulter [Privilèges de compte utilisateur requis sur une source Oracle AWS gérée pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges). | Pour de plus amples informations, veuillez consulter [Privilèges de compte utilisateur requis sur une source Oracle AWS gérée pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges). | 
| Préparez la base de données source pour la réplication à l’aide de la CDC. | Pour de plus amples informations, veuillez consulter [Configuration d'une source Oracle AWS gérée pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration). | Pour de plus amples informations, veuillez consulter [Configuration d'une source Oracle AWS gérée pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration). | 
| Accordez les privilèges d’utilisateur Oracle supplémentaires requis pour la CDC. | Aucun privilège de compte supplémentaire n’est requis. | Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). | 
| Si ce n'est pas déjà fait, configurez la tâche à utiliser LogMiner ou Binary Reader for CDC. | Pour de plus amples informations, veuillez consulter [Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC](#CHAP_Source.Oracle.CDC). | Pour de plus amples informations, veuillez consulter [Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC](#CHAP_Source.Oracle.CDC). | 
| Configurez Oracle Standby en tant que source pour la CDC. | AWS DMS ne prend pas en charge Oracle Standby en tant que source. | Pour de plus amples informations, veuillez consulter [Utilisation d'un Amazon RDS Oracle Standby (lire une réplique) comme source avec Binary Reader for CDC dans AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy). | 

## Utilisation d'une base de données Oracle autogérée comme source pour AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed"></a>

Une *base de données autogérée* est une base de données que vous configurez et contrôlez. Il peut s’agir d’une instance de base de données locale sur site ou d’une base de données sur Amazon EC2. Vous trouverez ci-dessous des informations sur les privilèges et les configurations dont vous avez besoin pour utiliser une base de données Oracle autogérée avec AWS DMS.

### Privilèges de compte utilisateur requis sur une source Oracle autogérée pour AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Privileges"></a>

Pour utiliser une base de données Oracle comme source dans AWS DMS, accordez les privilèges suivants à l'utilisateur Oracle spécifié dans les paramètres de connexion du point de terminaison Oracle.

**Note**  
Lorsque vous accordez des privilèges, utilisez le nom réel des objets, et non leur synonyme. Par exemple, utilisez `V_$OBJECT` en intégrant le trait de soulignement, et non `V$OBJECT` sans le trait de soulignement.

```
GRANT CREATE SESSION TO dms_user;
GRANT SELECT ANY TRANSACTION TO dms_user;
GRANT SELECT ON V_$ARCHIVED_LOG TO dms_user;
GRANT SELECT ON V_$LOG TO dms_user;
GRANT SELECT ON V_$LOGFILE TO dms_user;
GRANT SELECT ON V_$LOGMNR_LOGS TO dms_user;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO dms_user;
GRANT SELECT ON V_$DATABASE TO dms_user;
GRANT SELECT ON V_$THREAD TO dms_user;
GRANT SELECT ON V_$PARAMETER TO dms_user;
GRANT SELECT ON V_$NLS_PARAMETERS TO dms_user;
GRANT SELECT ON V_$TIMEZONE_NAMES TO dms_user;
GRANT SELECT ON V_$TRANSACTION TO dms_user;
GRANT SELECT ON V_$CONTAINERS TO dms_user;                   
GRANT SELECT ON ALL_INDEXES TO dms_user;
GRANT SELECT ON ALL_OBJECTS TO dms_user;
GRANT SELECT ON ALL_TABLES TO dms_user;
GRANT SELECT ON ALL_USERS TO dms_user;
GRANT SELECT ON ALL_CATALOG TO dms_user;
GRANT SELECT ON ALL_CONSTRAINTS TO dms_user;
GRANT SELECT ON ALL_CONS_COLUMNS TO dms_user;
GRANT SELECT ON ALL_TAB_COLS TO dms_user;
GRANT SELECT ON ALL_IND_COLUMNS TO dms_user;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dms_user;
GRANT SELECT ON ALL_LOG_GROUPS TO dms_user;
GRANT SELECT ON ALL_TAB_PARTITIONS TO dms_user;
GRANT SELECT ON SYS.DBA_REGISTRY TO dms_user;
GRANT SELECT ON SYS.OBJ$ TO dms_user;
GRANT SELECT ON DBA_TABLESPACES TO dms_user;
GRANT SELECT ON DBA_OBJECTS TO dms_user; -– Required if the Oracle version is earlier than 11.2.0.3.
GRANT SELECT ON SYS.ENC$ TO dms_user; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see Méthodes de chiffrement prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS.
GRANT SELECT ON GV_$TRANSACTION TO dms_user; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher.
GRANT SELECT ON V_$DATAGUARD_STATS TO dms_user; -- Required if the source database is Oracle Data Guard and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.
GRANT SELECT ON V_$DATABASE_INCARNATION TO dms_user;
```

Accordez le privilège supplémentaire suivant pour chaque table répliquée lorsque vous utilisez une liste de tables spécifique.

```
GRANT SELECT on any-replicated-table to dms_user;
```

Accordez le privilège supplémentaire suivant pour utiliser la fonction de validation.

```
GRANT EXECUTE ON SYS.DBMS_CRYPTO TO dms_user;
```

Accordez le privilège supplémentaire suivant si vous utilisez un lecteur binaire au lieu de LogMiner.

```
GRANT SELECT ON SYS.DBA_DIRECTORIES TO dms_user;
```

Accordez le privilège supplémentaire suivant pour exposer les vues.

```
GRANT SELECT on ALL_VIEWS to dms_user;
```

Pour exposer les vues, vous devez également ajouter l’attribut de connexion supplémentaire `exposeViews=true` au point de terminaison source.

Accordez le privilège supplémentaire suivant lorsque vous utilisez des réplications sans serveur.

```
GRANT SELECT on dba_segments to dms_user;
GRANT SELECT on v_$tablespace to dms_user;
GRANT SELECT on dba_tab_subpartitions to dms_user;
GRANT SELECT on dba_extents to dms_user;
```

Pour en savoir plus sur les réplications sans serveur, consultez [Travailler avec AWS DMS Serverless](CHAP_Serverless.md).

Accordez les privilèges supplémentaires suivants lorsque vous utilisez des évaluations de prémigration spécifiques à Oracle.

```
GRANT SELECT on gv_$parameter  to dms_user;
GRANT SELECT on v_$instance to dms_user;
GRANT SELECT on v_$version to dms_user;
GRANT SELECT on gv_$ASM_DISKGROUP to dms_user;
GRANT SELECT on gv_$database to dms_user;
GRANT SELECT on dba_db_links to dms_user;
GRANT SELECT on gv_$log_History to dms_user;
GRANT SELECT on gv_$log to dms_user;
GRANT SELECT ON DBA_TYPES TO dms_user;
GRANT SELECT ON DBA_USERS to dms_user;
GRANT SELECT ON DBA_DIRECTORIES to dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

Pour en savoir plus sur les évaluations de prémigration spécifiques à Oracle, consultez [Évaluations Oracle](CHAP_Tasks.AssessmentReport.Oracle.md).

#### Conditions préalables à la gestion des transactions ouvertes pour Oracle Standby
<a name="CHAP_Source.Oracle.Self-Managed.Privileges.Standby"></a>

Lorsque vous utilisez AWS DMS les versions 3.4.6 ou supérieures, effectuez les étapes suivantes pour gérer les transactions ouvertes pour Oracle Standby. 

1. Créez un lien de base de données nommé `AWSDMS_DBLINK` sur la base de données principale. `DMS_USER` utilisera ce lien pour se connecter à la base de données principale. Notez que le lien de base de données est exécuté à partir de l’instance de secours pour interroger les transactions ouvertes exécutées sur la base de données principale. Consultez l'exemple suivant. 

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. Vérifiez que la connexion au lien de base de données avec `DMS_USER` est établie, comme indiqué dans l’exemple suivant.

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### Préparation d'une base de données source autogérée Oracle pour le CDC à l'aide de AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Configuration"></a>

Préparez la base de données Oracle autogérée en tant que source pour exécuter une tâche de CDC en procédant comme suit : 
+ [Vérifier que la version de la base de données source est prise en AWS DMS charge](#CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion).
+ [Vérifiez que le mode ARCHIVELOG est activé](#CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode).
+ [Configurez une journalisation supplémentaire](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

#### Vérifier que la version de la base de données source est prise en AWS DMS charge
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion"></a>

Exécutez une requête similaire à ce qui suit pour vérifier que la version actuelle de la base de données source Oracle est prise en charge par AWS DMS.

```
SELECT name, value, description FROM v$parameter WHERE name = 'compatible';
```

Ici, `name`, `value` et `description` sont des colonnes quelque part dans la base de données qui sont interrogées en fonction de la valeur de `name`. Si cette requête s'exécute sans erreur, elle AWS DMS prend en charge la version actuelle de la base de données et vous pouvez poursuivre la migration. Si la requête génère une erreur, la version actuelle de la base de données AWS DMS n'est pas prise en charge. Pour procéder à la migration, convertissez d'abord la base de données Oracle vers une version prise en charge par AWS DMS.

#### Vérifiez que le mode ARCHIVELOG est activé
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode"></a>

Vous pouvez exécuter Oracle en deux modes différents : le mode `ARCHIVELOG` et le mode `NOARCHIVELOG`. Pour exécuter une tâche de CDC, exécutez la base de données en mode `ARCHIVELOG`. Pour savoir si la base de données est en mode `ARCHIVELOG`, exécutez la requête suivante.

```
SQL> SELECT log_mode FROM v$database;
```

Si le mode `NOARCHIVELOG` est renvoyé, définissez la base de données sur `ARCHIVELOG` conformément aux instructions d’Oracle. 

#### Configurez une journalisation supplémentaire
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging"></a>

Pour enregistrer les modifications en cours, AWS DMS vous devez activer une journalisation supplémentaire minimale sur votre base de données source Oracle. En outre, vous devez activer la journalisation supplémentaire sur chaque table répliquée de la base de données.

Par défaut, AWS DMS ajoute une journalisation `PRIMARY KEY` supplémentaire sur toutes les tables répliquées. AWS DMS Pour autoriser l'ajout d'une journalisation `PRIMARY KEY` supplémentaire, accordez le privilège suivant pour chaque table répliquée.

```
ALTER on any-replicated-table;
```

Vous pouvez désactiver la journalisation `PRIMARY KEY` supplémentaire par défaut ajoutée à AWS DMS l'aide de l'attribut `addSupplementalLogging` de connexion supplémentaire. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

Assurez-vous d'activer la journalisation supplémentaire si votre tâche de réplication met à jour une table à l'aide d'une `WHERE` clause qui ne fait pas référence à une colonne de clé primaire.

**Pour configurer manuellement la journalisation supplémentaire**

1. Exécutez la requête suivante pour vérifier si la journalisation supplémentaire est déjà activée pour la base de données.

   ```
   SELECT supplemental_log_data_min FROM v$database;
   ```

   Si le résultat renvoyé est `YES` ou `IMPLICIT`, la journalisation supplémentaire est activée pour la base de données.

   Sinon, activez la journalisation supplémentaire pour la base de données en exécutant la commande suivante.

   ```
   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
   ```

1. Assurez-vous que la journalisation supplémentaire requise est ajoutée pour chaque table répliquée.

   Éléments à prendre en compte :
   + Si la journalisation supplémentaire `ALL COLUMNS` est ajoutée à la table, il n’est pas nécessaire d’en ajouter une autre.
   + Si une clé primaire existe, ajoutez une journalisation supplémentaire pour la clé primaire. Vous pouvez le faire en utilisant le format pour ajouter une journalisation supplémentaire sur la clé primaire en elle-même, ou en ajoutant une journalisation supplémentaire sur les colonnes de clé primaire dans la base de données.

     ```
     ALTER TABLE Tablename ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ```
   + Si aucune clé primaire n'existe et que la table possède un seul index unique, toutes les colonnes de l'index unique doivent être ajoutées au journal supplémentaire.

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG GROUP LogGroupName (UniqueIndexColumn1[, UniqueIndexColumn2] ...) ALWAYS;
     ```

     L'utilisation `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` n'ajoute pas les colonnes d'index uniques au journal.
   + S'il n'existe aucune clé primaire et que la table comporte plusieurs index uniques, AWS DMS sélectionne le premier index unique dans une liste alphabétique croissante. Vous devez ajouter une journalisation supplémentaire sur les colonnes de l’index sélectionné, comme au point précédent.

     L'utilisation `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` n'ajoute pas les colonnes d'index uniques au journal.
   + Si aucune clé primaire n'existe et qu'il n'y a pas d'index unique, ajoutez une journalisation supplémentaire sur toutes les colonnes.

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
     ```

     Dans certains cas, l'index unique et la clé primaire de la table cible sont différents de ceux de la table source. Dans ce cas, ajoutez manuellement une journalisation supplémentaire sur les colonnes de la table source qui constituent l’index unique ou la clé primaire de la table cible.

     De plus, si vous modifiez la clé primaire de la table cible, vous devez ajouter la journalisation supplémentaire dans les colonnes de l'index cible, au lieu des colonnes de la clé primaire ou de l'index unique source.

Si un filtre ou une transformation est défini pour une table, vous devrez peut-être activer la journalisation supplémentaire.

Éléments à prendre en compte :
+ Si la journalisation supplémentaire `ALL COLUMNS` est ajoutée à la table, il n’est pas nécessaire d’en ajouter une autre.
+ Si la table a un index unique ou une clé primaire, ajoutez une journalisation supplémentaire sur chaque colonne impliquée dans un filtre ou une transformation. Toutefois, ne le faites que si ces colonnes sont différentes des colonnes de la clé primaire ou de l’index unique.
+ Si une transformation inclut une seule colonne, n’ajoutez pas cette colonne à un groupe de journalisations supplémentaires. Par exemple, pour une transformation `A+B`, ajoutez une journalisation supplémentaire sur les deux colonnes `A` et `B`. Cependant, pour une transformation `substring(A,10)`, n'ajoutez pas de journalisation supplémentaire sur la colonne `A`.
+ Pour configurer une journalisation supplémentaire sur les colonnes de clé primaire ou d’index unique et sur d’autres colonnes filtrées ou transformées, vous pouvez configurer la journalisation supplémentaire `USER_LOG_GROUP`. Ajoutez cette journalisation à la fois sur les colonnes de clé primaire ou d’index unique et sur toute autre colonne spécifique filtrée ou transformée.

  Par exemple, pour répliquer une table nommée `TEST.LOGGING` avec une clé primaire `ID` et un filtre sur la colonne `NAME`, vous pouvez exécuter une commande similaire à celle qui suit pour créer la journalisation supplémentaire du groupe de journaux.

  ```
  ALTER TABLE TEST.LOGGING ADD SUPPLEMENTAL LOG GROUP TEST_LOG_GROUP (ID, NAME) ALWAYS;
  ```

### Privilèges de compte requis lors de l'utilisation LogMiner d'Oracle pour accéder aux journaux de journalisation
<a name="CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges"></a>

Pour accéder aux journaux de journalisation à l'aide d'Oracle LogMiner, accordez les privilèges suivants à l'utilisateur Oracle spécifié dans les paramètres de connexion du point de terminaison Oracle.

```
GRANT EXECUTE on DBMS_LOGMNR to dms_user;
GRANT SELECT on V_$LOGMNR_LOGS to dms_user;
GRANT SELECT on V_$LOGMNR_CONTENTS to dms_user;
GRANT LOGMINING to dms_user; -– Required only if the Oracle version is 12c or higher.
```

### Privilèges de compte requis lors de l'utilisation de AWS DMS Binary Reader pour accéder aux journaux de restauration
<a name="CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges"></a>

Pour accéder aux journaux de journalisation à l'aide du lecteur AWS DMS binaire, accordez les privilèges suivants à l'utilisateur Oracle spécifié dans les paramètres de connexion du point de terminaison Oracle.

```
GRANT SELECT on v_$transportable_platform to dms_user;   -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM.
GRANT CREATE ANY DIRECTORY to dms_user;                  -– Grant this privilege to allow AWS DMS to use Oracle BFILE read file access in certain cases. This access is required when the replication instance does not have file-level access to the redo logs and the redo logs are on non-ASM storage.
GRANT EXECUTE on DBMS_FILE_TRANSFER to dms_user;         -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method.
GRANT EXECUTE on DBMS_FILE_GROUP to dms_user;
```

Binary Reader fonctionne avec les fonctions de fichier Oracle qui incluent des répertoires Oracle. Chaque objet répertoire Oracle inclut le nom du dossier contenant les journaux redo à traiter. Ces répertoires Oracle ne sont pas représentés au niveau du système de fichiers. Il s'agit plutôt de répertoires logiques créés au niveau de la base de données Oracle. Vous pouvez les afficher dans la vue Oracle `ALL_DIRECTORIES`.

Si vous souhaitez AWS DMS créer ces annuaires Oracle, accordez le `CREATE ANY DIRECTORY` privilège spécifié ci-dessus. AWS DMS crée les noms de répertoires avec le `DMS_` préfixe. Si vous n'accordez pas le privilège `CREATE ANY DIRECTORY`, créez manuellement les répertoires correspondants. Dans certains cas, lorsque vous créez manuellement les répertoires Oracle, l'utilisateur Oracle spécifié dans le point de terminaison source Oracle n'est pas l'utilisateur qui a créé ces répertoires. Dans ces cas, accordez également le privilège `READ on DIRECTORY`.

**Note**  
AWS DMS Le CDC ne prend pas en charge Active Dataguard Standby qui n'est pas configuré pour utiliser le service de rétablissement automatique du transport.

Dans certains cas, vous pouvez utiliser Oracle Managed Files (OMF) pour stocker les journaux. Ou le point de terminaison source se trouve dans ADG et vous ne pouvez donc pas accorder le privilège CREATE ANY DIRECTORY. Dans ces cas, créez manuellement les répertoires avec tous les emplacements de journal possibles avant de démarrer la tâche de AWS DMS réplication. Si AWS DMS le répertoire précréé attendu n'est pas trouvé, la tâche s'arrête. De plus, AWS DMS ne supprime pas les entrées qu'il a créées dans la `ALL_DIRECTORIES` vue. Supprimez-les donc manuellement.

### Privilèges de compte supplémentaires requis lors de l’utilisation de Binary Reader avec Oracle ASM
<a name="CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges"></a>

Pour accéder aux journaux redo dans Automatic Storage Management (ASM) à l’aide de Binary Reader, accordez les privilèges suivants à l’utilisateur Oracle spécifié dans les paramètres de connexion au point de terminaison Oracle.

```
SELECT ON v_$transportable_platform
SYSASM -– To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.
```

Vous pouvez valider l’accès au compte ASM en ouvrant une invite de commandes et en invoquant l’une des instructions suivantes, en fonction de votre version d’Oracle spécifiée précédemment.

Si vous avez besoin du privilège `SYSDBA`, utilisez ce qui suit.

```
sqlplus asmuser/asmpassword@+asmserver as sysdba
```

Si vous avez besoin du privilège `SYSASM`, utilisez ce qui suit. 

```
sqlplus asmuser/asmpassword@+asmserver as sysasm
```

### Utilisation d'un Oracle Standby autogéré comme source avec Binary Reader for CDC dans AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.BinaryStandby"></a>

Pour configurer une instance d’Oracle Standby en tant que source lors de l’utilisation de Binary Reader pour la CDC, commencez par prendre connaissance des prérequis suivants :
+ AWS DMS prend actuellement en charge uniquement Oracle Active Data Guard Standby.
+ Assurez-vous que la configuration d’Oracle Data Guard utilise :
  + Services de transport redo pour les transferts automatisés de données redo.
  + Services d’application pour appliquer automatiquement redo à la base de données de secours.

Pour confirmer que ces exigences sont satisfaites, exécutez la requête suivante.

```
SQL> select open_mode, database_role from v$database;
```

À partir du résultat de cette requête, vérifiez que la base de données de secours est ouverte en mode READ ONLY et que redo est appliqué automatiquement. Par exemple :

```
OPEN_MODE             DATABASE_ROLE
--------------------  ----------------
READ ONLY WITH APPLY  PHYSICAL STANDBY
```

**Pour configurer une instance d’Oracle Standby en tant que source lors de l’utilisation de Binary Reader pour la CDC**

1. Accordez les privilèges supplémentaires requis pour accéder aux fichiers journaux de secours.

   ```
   GRANT SELECT ON v_$standby_log TO dms_user;
   ```

1. Créez un point de terminaison source pour Oracle Standby à l’aide d’ AWS Management Console ou d’ AWS CLI. Lors de la création du point de terminaison, spécifiez les attributs de connexion supplémentaires suivants.

   ```
   useLogminerReader=N;useBfile=Y;
   ```
**Note**  
Dans AWS DMS, vous pouvez utiliser des attributs de connexion supplémentaires pour spécifier si vous souhaitez migrer à partir des journaux d'archives plutôt que des journaux de rétablissement. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

1. Configurez la destination du journal archivé.

   DMS Binary Reader pour la source Oracle sans ASM utilise les répertoires Oracle pour accéder aux journaux redo archivés. Si la base de données est configurée de sorte à utiliser la zone de récupération rapide (FRA) comme destination du journal d’archivage, l’emplacement des fichiers redo d’archivage n’est pas constant. Chaque jour de génération de journaux redo archivés entraîne la création d’un nouveau répertoire dans la FRA en utilisant le format de nom de répertoire AAAA\$1MM\$1JJ. Par exemple : 

   ```
   DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD
   ```

   Lorsque DMS a besoin d’accéder à des fichiers redo archivés dans le répertoire FRA récemment créé et que la base de données principale en lecture-écriture est utilisée en tant que source, DMS crée un nouveau répertoire Oracle ou remplace un répertoire Oracle existant, comme suit. 

   ```
   CREATE OR REPLACE DIRECTORY dmsrep_taskid AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD’;
   ```

   Lorsque la base de données de secours est utilisée en tant que source, DMS ne parvient pas à créer ou à remplacer le répertoire Oracle, car la base de données est en mode lecture seule. Toutefois, vous pouvez choisir d’effectuer l’une des étapes supplémentaires suivantes : 

   1. Modifiez `log_archive_dest_id_1` de sorte à utiliser un chemin réel plutôt que la FRA dans une configuration de ce type où Oracle ne créera pas de sous-répertoires quotidiens :

      ```
      ALTER SYSTEM SET log_archive_dest_1=’LOCATION=full directory path’
      ```

      Créez ensuite un objet de répertoire Oracle à utiliser par DMS :

      ```
      CREATE OR REPLACE DIRECTORY dms_archived_logs AS ‘full directory path’;
      ```

   1. Créez une destination de journal d’archivage supplémentaire et un objet de répertoire Oracle pointant vers cette destination. Par exemple :

      ```
      ALTER SYSTEM SET log_archive_dest_3=’LOCATION=full directory path’; 
      CREATE DIRECTORY dms_archived_log AS ‘full directory path’;
      ```

      Ajoutez ensuite un attribut de connexion supplémentaire au point de terminaison source de la tâche :

      ```
      archivedLogDestId=3
      ```

   1. Précréez manuellement des objets de répertoire Oracle à utiliser par DMS.

      ```
      CREATE DIRECTORY dms_archived_log_20210301 AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01’;
      CREATE DIRECTORY dms_archived_log_20210302 AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02’; 
      ...
      ```

   1. Créez une tâche de planificateur Oracle qui s’exécute quotidiennement et crée le répertoire requis.

1. Configurez la destination du journal en ligne. 

   Créez un répertoire Oracle qui pointe vers le répertoire du système d'exploitation contenant des journaux de restauration de secours :

   ```
   CREATE OR REPLACE DIRECTORY STANDBY_REDO_DIR AS '<full directory path>';
   GRANT READ ON DIRECTORY STANDBY_REDO_DIR TO <dms_user>;
   ```

### Utilisation d'une base de données gérée par l'utilisateur sur Oracle Cloud Infrastructure (OCI) comme source pour le CDC dans AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.OCI"></a>

Une base de données gérée par l’utilisateur est une base de données que vous configurez et contrôlez, comme une base de données Oracle créée sur une machine virtuelle (VM), un matériel nu ou un serveur Exadata. Il peut également s’agir de bases de données que vous configurez et contrôlez et qui s’exécutent sur une infrastructure dédiée, comme Oracle Cloud Infrastructure (OCI). Les informations suivantes décrivent les privilèges et les configurations dont vous avez besoin lorsque vous utilisez une base de données Oracle gérée par l’utilisateur sur OCI en tant que source pour la capture des données de modification (CDC) dans AWS DMS.

**Pour configurer une base de données Oracle gérée par l’utilisateur et hébergée par OCI en tant que source pour la capture des données de modification**

1. Accordez les privilèges de compte d’utilisateur requis pour une base de données source Oracle gérée par l’utilisateur sur OCI. Pour plus d’informations, consultez [Privilèges de compte pour un point de terminaison source Oracle autogéré](#CHAP_Source.Oracle.Self-Managed.Privileges).

1. Accordez les privilèges de compte requis lors de l’utilisation de Binary Reader pour accéder aux journaux redo. Pour plus d’informations, consultez [Privilèges de compte requis lors de l’utilisation de Binary Reader](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges).

1. Ajoutez les privilèges de compte requis lors de l’utilisation de Binary Reader avec Oracle Automatic Storage Management (ASM). Pour plus d’informations, consultez [Privilèges de compte supplémentaires requis lors de l’utilisation de Binary Reader avec Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges).

1. Configurez une journalisation supplémentaire. Pour plus d’informations, consultez [Configuration d’une journalisation supplémentaire](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

1. Configurez le chiffrement TDE. Pour plus d’informations, consultez [Méthodes de chiffrement lors de l’utilisation d’une base de données Oracle comme point de terminaison source](#CHAP_Source.Oracle.Encryption).

Les limitations suivantes s’appliquent lors de la réplication de données à partir d’une base de données source Oracle sur Oracle Cloud Infrastructure (OCI).

**Limitations**
+ DMS ne prend pas en charge l'utilisation d'Oracle LogMiner pour accéder aux journaux de journalisation.
+ DMS ne prend pas en charge la base de données autonome.

## Utilisation d'une base de données Oracle AWS gérée comme source pour AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed"></a>

Une base de données AWS gérée est une base de données qui se trouve sur un service Amazon tel qu'Amazon RDS, Amazon Aurora ou Amazon S3. Vous trouverez ci-dessous les privilèges et les configurations que vous devez configurer lorsque vous utilisez une base de données Oracle AWS gérée avec AWS DMS.

### Privilèges de compte utilisateur requis sur une source Oracle AWS gérée pour AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges"></a>

Accordez les privilèges suivants au compte d’utilisateur Oracle spécifié dans la définition du point de terminaison source Oracle.

**Important**  
Pour toutes les valeurs de paramètre telles que `dms_user` et `any-replicated-table`, Oracle suppose que la valeur est entièrement en majuscules, sauf si vous spécifiez la valeur avec un identifiant sensible à la casse. Supposons, par exemple, que vous créez une valeur `dms_user` sans utiliser de guillemets, comme dans `CREATE USER myuser` ou `CREATE USER MYUSER`. Dans ce cas, Oracle identifie et stocke la valeur entièrement en majuscules (`MYUSER`). Si vous utilisez des guillemets, comme dans `CREATE USER "MyUser"` ou `CREATE USER 'MyUser'`, Oracle identifie et stocke la valeur sensible à la casse que vous spécifiez (`MyUser`).

```
GRANT CREATE SESSION to dms_user;
GRANT SELECT ANY TRANSACTION to dms_user;
GRANT SELECT on DBA_TABLESPACES to dms_user;
GRANT SELECT ON any-replicated-table to dms_user;
GRANT EXECUTE on rdsadmin.rdsadmin_util to dms_user;
 -- For Oracle 12c or higher:
GRANT LOGMINING to dms_user; – Required only if the Oracle version is 12c or higher.
```

De plus, accordez les autorisations `SELECT` et `EXECUTE` sur les objets `SYS` à l’aide de la procédure Amazon RDS `rdsadmin.rdsadmin_util.grant_sys_object`, comme indiqué. Pour plus d'informations, consultez la page [Attribution des privilèges SELECT ou EXECUTE aux objets SYS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html#Appendix.Oracle.CommonDBATasks.TransferPrivileges).

```
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','dms_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'dms_user', 'EXECUTE');

-- (as of Oracle versions 12.1 and higher)
exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'dms_user', 'SELECT');

-- (for Amazon RDS Active Dataguard Standby (ADG))
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'dms_user', 'SELECT'); 

-- (for transparent data encryption (TDE))

exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'dms_user', 'SELECT'); 
               
-- (for validation with LOB columns)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'dms_user', 'EXECUTE');
                    
-- (for binary reader)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','dms_user','SELECT'); 
                    
-- Required when the source database is Oracle Data guard, and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.

exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS', 'dms_user', 'SELECT');
```

Pour plus d’informations sur l’utilisation d’Amazon RDS Active Dataguard Standby (ADG) avec AWS DMS , consultez [Utilisation d'un Amazon RDS Oracle Standby (lire une réplique) comme source avec Binary Reader for CDC dans AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy).

Pour plus d'informations sur l'utilisation d'Oracle TDE avec AWS DMS, consultez[Méthodes de chiffrement prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.Encryption).

#### Conditions préalables à la gestion des transactions ouvertes pour Oracle Standby
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges.Standby"></a>

Lorsque vous utilisez AWS DMS les versions 3.4.6 ou supérieures, effectuez les étapes suivantes pour gérer les transactions ouvertes pour Oracle Standby. 

1. Créez un lien de base de données nommé `AWSDMS_DBLINK` sur la base de données principale. `DMS_USER` utilisera ce lien pour se connecter à la base de données principale. Notez que le lien de base de données est exécuté à partir de l’instance de secours pour interroger les transactions ouvertes exécutées sur la base de données principale. Consultez l'exemple suivant. 

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. Vérifiez que la connexion au lien de base de données avec `DMS_USER` est établie, comme indiqué dans l’exemple suivant.

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### Configuration d'une source Oracle AWS gérée pour AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Configuration"></a>

Avant d'utiliser une base de données Oracle AWS gérée comme source pour AWS DMS, effectuez les tâches suivantes pour la base de données Oracle :
+ Activez les sauvegardes automatiques. Pour plus d’informations sur l’activation des sauvegardes automatiques, consultez [Activation des sauvegardes automatiques](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.Enabling) dans le *Guide de l’utilisateur Amazon RDS*.
+ Configurez la journalisation supplémentaire.
+ Configurez l'archivage. L'archivage des journaux redo de votre instance de base de données Amazon RDS for Oracle permet de récupérer les informations du journal AWS DMS à l'aide d'Oracle LogMiner ou de Binary Reader. 

**Pour configurer l'archivage**

1. Exécutez la commande `rdsadmin.rdsadmin_util.set_configuration` pour configurer l'archivage.

   Par exemple, pour conserver les journaux redo archivés pendant 24 heures, exécutez la commande suivante.

   ```
   exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
   commit;
   ```
**Note**  
La validation est obligatoire pour qu’une modification prenne effet.

1. Vérifiez que votre espace de stockage est suffisant pour les journaux redo archivés pendant la période spécifiée. Par exemple, si votre période de conservation est de 24 heures, calculez la taille totale de vos journaux redo archivés accumulés sur une heure type de traitement des transactions et multipliez ce total par 24. Comparez ce total calculé sur 24 heures avec votre espace de stockage disponible et déterminez si vous disposez de suffisamment d’espace de stockage pour traiter les transactions 24 h/24.

**Pour configurer la journalisation supplémentaire**

1. Exécutez la commande suivante pour activer la journalisation supplémentaire au niveau de la base de données.

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
   ```

1. Exécutez la commande suivante pour activer la journalisation supplémentaire des clés primaires.

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
   ```

1. (Facultatif) Activez la journalisation supplémentaire au niveau des clés, au niveau de la table.

   Votre base de données source exige un peu plus de temps système lorsqu’une journalisation supplémentaire au niveau des clés est activée. Par conséquent, si vous ne migrez qu’un sous-ensemble de vos tables, vous souhaiterez peut-être activer la journalisation supplémentaire au niveau des clés, au niveau de la table. Pour activer la journalisation supplémentaire au niveau des clés, au niveau de la table, exécutez la commande suivante.

   ```
   alter table table_name add supplemental log data (PRIMARY KEY) columns;
   ```

### Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.CDC"></a>

Vous pouvez configurer l'accès AWS DMS à la source des journaux redo de l'instance Amazon RDS pour Oracle à l'aide de Binary Reader for CDC. 

**Note**  
Pour utiliser Oracle LogMiner, les privilèges de compte utilisateur minimaux requis sont suffisants. Pour de plus amples informations, veuillez consulter [Privilèges de compte utilisateur requis sur une source Oracle AWS gérée pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges).

Pour utiliser AWS DMS Binary Reader, spécifiez des paramètres supplémentaires et des attributs de connexion supplémentaires pour le point de terminaison source Oracle, en fonction de votre AWS DMS version.

La prise en charge de Binary Reader est disponible dans les versions suivantes d’Amazon RDS for Oracle :
+ Oracle 11.2 : versions 11.2.0.4V11 et ultérieures
+ Oracle 12.1 : versions 12.1.0.2.V7 et ultérieures
+ Oracle 12.2 : toutes les versions
+ Oracle 18.0 : toutes les versions
+ Oracle 19.0 : toutes les versions

**Pour configurer CDC à l'aide d' Binary Reader**

1. Connectez-vous à la base de données source Amazon RDS for Oracle en tant qu’utilisateur principal et exécutez les procédures stockées suivantes pour créer les répertoires au niveau du serveur.

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. Accordez les privilèges suivants au compte d’utilisateur Oracle utilisé pour accéder au point de terminaison source Oracle.

   ```
   GRANT READ ON DIRECTORY ONLINELOG_DIR TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO dms_user;
   ```

1. Définissez les attributs de connexion supplémentaires suivants sur le point de terminaison source Amazon RDS Oracle :
   + Pour RDS Oracle versions 11.2 et 12.1, définissez les attributs suivants.

     ```
     useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;
     oraclePathPrefix=/rdsdbdata/db/{$DATABASE_NAME}_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;
     ```
   + Pour RDS Oracle versions 12.2, 18.0 et 19.0, définissez les attributs suivants.

     ```
     useLogminerReader=N;useBfile=Y;
     ```

**Note**  
Assurez-vous qu’il n’y ait pas d’espace après le point-virgule (;) si vous avez plusieurs paramètres d’attribut ; par exemple, `oneSetting;thenAnother`.

Pour plus d’informations sur la configuration d’une tâche de CDC, consultez [Configuration de CDC sur une base de données source Oracle](#CHAP_Source.Oracle.CDC.Configuration).

### Utilisation d'un Amazon RDS Oracle Standby (lire une réplique) comme source avec Binary Reader for CDC dans AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.StandBy"></a>

Vérifiez les conditions préalables suivantes pour utiliser Amazon RDS for Oracle Standby en tant que source lors de l’utilisation de Binary Reader pour la CDC dans AWS DMS :
+ Utilisez l’utilisateur principal Oracle pour configurer Binary Reader.
+ Assurez-vous qu'il ne prend AWS DMS actuellement en charge que l'utilisation d'Oracle Active Data Guard Standby.

Ensuite, procédez comme suit pour utiliser RDS for Oracle Standby en tant que source lors de l’utilisation de Binary Reader pour la CDC.

**Pour configurer RDS for Oracle Standby en tant que source lors de l’utilisation de Binary Reader pour la CDC**

1. Connectez-vous à l’instance principale de RDS for Oracle en tant qu’utilisateur principal.

1. Exécutez les procédures stockées suivantes, comme indiqué dans le Guide de l’utilisateur Amazon RDS, pour créer les répertoires au niveau du serveur.

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. Identifiez les répertoires créés à l’étape 2.

   ```
   SELECT directory_name, directory_path FROM all_directories
   WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' )
           OR directory_name LIKE ( 'ONLINELOG_DIR_%' )
   ```

   Par exemple, le code précédent affiche une liste de répertoires comme ce qui suit.  
![\[Table showing directory names and their corresponding paths for archive and online logs.\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-rds-server-level-directories.png)

1. Accordez le privilège `Read` sur les répertoires précédents au compte d’utilisateur Oracle utilisé pour accéder à Oracle Standby.

   ```
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_B TO dms_user;
   ```

1. Changez de journal d’archivage sur l’instance principale. Cela garantit que les modifications apportées à `ALL_DIRECTORIES` sont également transmises à Oracle Standby.

1. Exécutez une requête `ALL_DIRECTORIES` sur Oracle Standby pour confirmer que les modifications ont été appliquées.

1. Créez un point de terminaison source pour Oracle Standby à l'aide de la console AWS DMS de gestion ou AWS Command Line Interface (AWS CLI). Lors de la création du point de terminaison, spécifiez les attributs de connexion supplémentaires suivants.

   ```
   useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
   ```

1. Après avoir créé le point de terminaison, utilisez **Tester la connexion du point** de **terminaison sur la page Créer un point** de terminaison de la console ou utilisez la AWS CLI `test-connection` commande pour vérifier que la connectivité est établie.

## Restrictions relatives à l'utilisation d'Oracle comme source pour AWS DMS
<a name="CHAP_Source.Oracle.Limitations"></a>

Les limites suivantes s'appliquent lors de l'utilisation d'une base de données Oracle comme source pour AWS DMS:
+ AWS DMS prend en charge les types de données Oracle Extended dans les AWS DMS versions 3.5.0 et supérieures.
+ AWS DMS ne prend pas en charge les noms d'objets longs (plus de 30 octets).
+ AWS DMS ne prend pas en charge les index basés sur les fonctions.
+ Si vous gérez la journalisation supplémentaire et que vous effectuez des transformations sur l’une des colonnes, assurez-vous que la journalisation supplémentaire est activée pour tous les champs et colonnes. Pour plus d’informations sur la configuration d’une journalisation supplémentaire, consultez les rubriques suivantes :
  + Pour une base de données source Oracle autogérée, consultez [Configurez une journalisation supplémentaire](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).
  + Pour une base de données source Oracle AWS gérée, voir[Configuration d'une source Oracle AWS gérée pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration).
+ AWS DMS ne prend pas en charge la base de données racine de conteneurs à locataires multiples (CDB\$1ROOT). Il prend en charge une PDB qui utilise Binary Reader.
+ AWS DMS ne prend pas en charge les contraintes différées.
+ AWS DMS la version 3.5.3 et supérieure prend entièrement en charge le protocole sécurisé LOBs.
+ AWS DMS prend en charge la `rename table table-name to new-table-name` syntaxe de toutes les versions Oracle 11 et supérieures prises en charge. Cette syntaxe n’est pas prise en charge pour les bases de données sources Oracle version 10.
+ AWS DMS ne reproduit pas les résultats de l'instruction DDL. `ALTER TABLE ADD column data_type DEFAULT default_value` Au lieu de répliquer `default_value` vers la cible, il définit la nouvelle colonne sur `NULL`.
+ Lorsque vous utilisez AWS DMS la version 3.4.7 ou supérieure, pour répliquer les modifications résultant d'opérations de partition ou de sous-partition, procédez comme suit avant de démarrer une tâche DMS.
  + Créez manuellement la structure de table partitionnée (DDL) ; 
  + Assurez-vous que la DDL est la même sur la source Oracle et la cible Oracle ; 
  + Définissez l’attribut de connexion supplémentaire `enableHomogenousPartitionOps=true`.

  Pour plus d’informations sur `enableHomogenousPartitionOps`, consultez [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib). Notez également que sur les tâches FULL\$1CDC, DMS ne réplique pas les modifications de données capturées dans le cadre des modifications mises en cache. Dans ce cas d’utilisation, recréez la structure de table sur la cible Oracle et rechargez les tables en question.

  Avant la AWS DMS version 3.4.7 :

  DMS ne reproduit pas les modifications de données résultant d'opérations de partition ou de sous-partition (`ADD`, `DROP``EXCHANGE`, et). `TRUNCATE` Ces mises à jour peuvent provoquer les erreurs suivantes pendant la réplication :
  + Pour les opérations `ADD`, les mises à jour et les suppressions des données ajoutées peuvent déclencher un avertissement « 0 lignes affectées ».
  + Pour les opérations `DROP` et `TRUNCATE`, les nouvelles insertions peuvent générer des erreurs de « doublons ».
  + Les opérations `EXCHANGE` peuvent déclencher à la fois un avertissement « 0 lignes affectées » et des erreurs « doublons ».

  Pour répliquer les modifications résultant d'opérations de partition ou de sous-partition, rechargez les tables en question. Après l’ajout d’une nouvelle partition vide, les opérations sur la partition récemment ajoutée sont répliquées vers la cible comme d’habitude.
+ AWS DMS les versions antérieures à 3.4 ne prennent pas en charge les modifications de données sur la cible résultant de l'exécution de l'`CREATE TABLE AS`instruction sur la source. Toutefois, la nouvelle table est créée sur la cible.
+ AWS DMS ne capture pas les modifications apportées par le `DBMS_REDEFINITION` package Oracle, par exemple les métadonnées de la table et le `OBJECT_ID` champ.
+ Lorsque le mode LOB de taille limitée est activé, les BLOB/CLOB colonnes vides de la source Oracle sont répliquées sous forme de valeurs NULL. Lorsque le mode LOB complet est activé, ils sont répliqués sous forme de chaîne vide (« »).
+ Lors de la capture de modifications avec Oracle 11 LogMiner, une mise à jour sur une colonne CLOB dont la longueur de chaîne est supérieure à 1982 est perdue et la cible n'est pas mise à jour.
+ Lors de la capture des données de modification (CDC), les mises à jour par lots des colonnes numériques définies comme clé primaire AWS DMS ne sont pas prises en charge.
+ AWS DMS ne prend pas en charge certaines `UPDATE` commandes. L’exemple suivant est une commande `UPDATE` non prise en charge.

  ```
  UPDATE TEST_TABLE SET KEY=KEY+1;
  ```

  Ici, `TEST_TABLE` est le nom de la table et `KEY` est une colonne numérique définie comme une clé primaire.
+ AWS DMS ne prend pas en charge le mode LOB complet pour le chargement de colonnes LONG et LONG RAW. Vous pouvez plutôt utiliser le mode LOB limité pour migrer ces types de données vers une cible Oracle. En mode LOB limité, AWS DMS tronque à 64 Ko toutes les données que vous définissez comme des colonnes LONG ou LONG RAW de plus de 64 Ko.
+ AWS DMS ne prend pas en charge le mode LOB complet pour le chargement de colonnes XMLTYPE. Vous pouvez plutôt utiliser le mode LOB limité pour migrer les colonnes XMLTYPE vers une cible Oracle. En mode LOB limité, DMS tronque toutes les données dont la taille est supérieure à la variable « Taille de LOB maximale » définie par l’utilisateur. La valeur maximale recommandée pour « Taille de LOB maximale » est de 100 Mo.
+ AWS DMS ne reproduit pas les tables dont les noms contiennent des apostrophes.
+ AWS DMS soutient le CDC à partir de vues matérialisées. Mais le DMS ne soutient pas le CDC d'un autre point de vue.
+ AWS DMS ne prend pas en charge le CDC pour les tables organisées par index avec un segment de débordement.
+ AWS DMS ne prend pas en charge l'`Drop Partition`opération pour les tables partitionnées par référence avec la valeur `enableHomogenousPartitionOps` définie sur. `true`
+ Lorsque vous utilisez Oracle LogMiner pour accéder aux journaux de journalisation, les limites suivantes AWS DMS s'appliquent :
  + Pour Oracle 12 uniquement, AWS DMS ne reproduit aucune modification apportée aux colonnes LOB.
  + AWS DMS ne prend pas en charge les transactions XA lors de la réplication lors de l'utilisation d'Oracle LogMiner.
  + Oracle LogMiner ne prend pas en charge les connexions à une base de données enfichable (PDB). Pour vous connecter à un PDB, accédez aux fichiers de journalisation à l'aide de Binary Reader.
  + Les opérations SHRINK SPACE ne sont pas prises en charge.
+ Lorsque vous utilisez Binary Reader, il AWS DMS présente les limites suivantes :
  + Il ne prend pas en charge les clusters de tables.
  + Il ne prend en charge que les opérations `SHRINK SPACE` au niveau de la table. Ce niveau inclut la table complète, les partitions et les sous-partitions.
  + Il ne prend pas en charge les modifications apportées aux tables organisées par index à l'aide de la compression des touches.
  + Il ne prend pas en charge la mise en œuvre de journaux de restauration en ligne sur les appareils bruts.
  + Binary Reader prend en charge le TDE uniquement pour les bases de données Oracle autogérées, car RDS for Oracle ne prend pas en charge la récupération des mots de passe de portefeuille pour les clés de chiffrement TDE.
+ AWS DMS ne prend pas en charge les connexions à une source Oracle Amazon RDS à l'aide d'un proxy Oracle Automatic Storage Management (ASM).
+ AWS DMS ne prend pas en charge les colonnes virtuelles. 
+ AWS DMS ne prend pas en charge le type de `ROWID` données ou les vues matérialisées basées sur une colonne ROWID.

  AWS DMS prend partiellement en charge Oracle Materialized Views. Pour les chargements complets, DMS peut effectuer une copie de chargement complet d’une vue matérialisée Oracle. DMS copie la vue matérialisée en tant que table de base sur le système cible et ignore les colonnes ROWID dans la vue matérialisée. Pour la réplication continue (CDC), DMS essaie de répliquer les modifications apportées aux données de la vue matérialisée, mais il est possible que les résultats ne soient pas idéaux. Plus précisément, si la vue matérialisée est complètement actualisée, DMS réplique les suppressions individuelles pour toutes les lignes, puis les insertions individuelles pour toutes les lignes. Cet exercice nécessite beaucoup de ressources et risque d’être peu performant pour les vues matérialisées comportant un grand nombre de lignes. Pour une réplication continue où les vues matérialisées sont actualisées rapidement, DMS essaie de traiter et de répliquer les modifications des données d’actualisation rapide. Dans les deux cas, DMS ignore toutes les colonnes ROWID dans la vue matérialisée.
+ AWS DMS ne charge ni ne capture de tables temporaires globales.
+ Pour les cibles S3 utilisant la réplication, activez la journalisation supplémentaire sur chaque colonne afin que les mises à jour des lignes source puissent capturer chaque valeur de colonne. Voici un exemple : `alter table yourtablename add supplemental log data (all) columns;`.
+ La mise à jour d’une ligne comportant une clé unique composite contenant `null` ne peut pas être répliquée sur la cible.
+ AWS DMS ne prend pas en charge l'utilisation de plusieurs clés de chiffrement Oracle TDE sur le même point de terminaison source. Chaque point de terminaison ne peut avoir qu’un seul attribut pour le nom de clé de chiffrement TDE « `securityDbEncryptionName` » et un seul mot de passe TDE pour cette clé.
+ Lors de la réplication depuis Amazon RDS for Oracle, le TDE n'est pris en charge qu'avec un tablespace chiffré et avec Oracle. LogMiner
+ AWS DMS ne prend pas en charge plusieurs opérations de renommage de table en succession rapide.
+ Lorsque vous utilisez Oracle 19.0 comme source, les fonctionnalités suivantes AWS DMS ne sont pas prises en charge :
  + Redirection DML dans Data Guard
  + Tables hybrides partitionnées
  + Comptes Oracle de schéma uniquement
+ AWS DMS ne prend pas en charge la migration de tables ou de vues de type `BIN$` ou`DR$`.
+ À partir d'Oracle 18.x, la capture des données de modification (CDC) AWS DMS n'est pas prise en charge à partir d'Oracle Express Edition (Oracle Database XE).
+ Lors de la migration de données à partir d’une colonne CHAR, DMS tronque les espaces de fin. 
+ AWS DMS ne prend pas en charge la réplication à partir de conteneurs d'applications.
+ AWS DMS ne prend pas en charge l'exécution de la base de données Oracle Flashback et des points de restauration, car ces opérations affectent la cohérence des fichiers Oracle Redo Log.
+ Avant la AWS DMS version 3.5.3, la `INSERT` procédure de chargement direct avec l'option d'exécution parallèle n'était pas prise en charge dans les cas suivants :
  + Tables non compressées de plus de 255 colonnes
  + Taille de ligne supérieure à 8 Ko
  + Tables HCC Exadata
  + Base de données exécutée sur la plateforme Big Endian
+ Une table source n’ayant ni clé primaire ni clé unique nécessite l’activation de la journalisation supplémentaire ALL COLUMN. Des activités de journal redo supplémentaires seront créées et la latence de la CDC DMS peut augmenter.
+ AWS DMS ne migre pas les données des colonnes invisibles de votre base de données source. Pour inclure ces colonnes dans la portée de migration, utilisez l’instruction `ALTER TABLE` pour les rendre visibles.
+ Pour toutes les versions d'Oracle, AWS DMS ne reproduit pas le résultat des `UPDATE` opérations sur les colonnes LOB `XMLTYPE` et sur les colonnes.
+ AWS DMS ne prend pas en charge la réplication à partir de tables soumises à des contraintes de validité temporelle.
+ Si la source Oracle devient indisponible pendant une tâche de chargement complet, AWS DMS il est possible que la tâche soit marquée comme terminée après plusieurs tentatives de reconnexion, même si la migration des données reste incomplète. Dans ce scénario, les tables cibles contiennent uniquement les enregistrements migrés avant la perte de connexion, ce qui peut créer des incohérences de données entre les systèmes source et cible. Pour garantir l'exhaustivité des données, vous devez soit redémarrer entièrement la tâche de chargement complet, soit recharger les tables spécifiques concernées par l'interruption de connexion.

## Prise en charge de SSL pour un point de terminaison Oracle
<a name="CHAP_Security.SSL.Oracle"></a>

AWS DMS Les points de terminaison Oracle prennent en charge le protocole SSL V3 pour les modes `none` et `verify-ca` SSL. Pour utiliser SSL avec un point de terminaison Oracle, vous devez charger le portefeuille Oracle pour le point de terminaison au lieu des fichiers de certificat .pem. 

**Topics**
+ [Utilisation d'un certificat existant pour Oracle SSL](#CHAP_Security.SSL.Oracle.Existing)
+ [Utilisation d'un certificat auto-signé pour Oracle SSL](#CHAP_Security.SSL.Oracle.SelfSigned)

### Utilisation d'un certificat existant pour Oracle SSL
<a name="CHAP_Security.SSL.Oracle.Existing"></a>

Pour utiliser une installation de client Oracle existante afin de créer le fichier de portefeuille Oracle à partir du fichier de certificat CA, procédez comme suit.

**Pour utiliser une installation de client Oracle existante pour Oracle SSL avec AWS DMS**

1. Définissez la variable système `ORACLE_HOME` sur l'emplacement de votre répertoire `dbhome_1` en exécutant la commande suivante.

   ```
   prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1                        
   ```

1. Ajouter `$ORACLE_HOME/lib` à la variable système `LD_LIBRARY_PATH`.

   ```
   prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib                        
   ```

1. Créez un répertoire pour le portefeuille Oracle dans `$ORACLE_HOME/ssl_wallet`.

   ```
   prompt>mkdir $ORACLE_HOME/ssl_wallet
   ```

1. Placez le fichier `.pem` du certificat de l'autorité de certification dans le répertoire `ssl_wallet`. Si vous utilisez Amazon RDS, vous pouvez télécharger le fichier de certificat d’autorité de certification racine `rds-ca-2015-root.pem` hébergé par Amazon RDS. Pour plus d'informations sur le téléchargement de ce fichier, consultez la section [Utilisation SSL/TLS pour chiffrer une connexion à une instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) de base de données dans le guide de l'*utilisateur Amazon RDS*.

1. Si votre certificat CA contient plusieurs fichiers PEM (comme le bundle mondial ou régional Amazon RDS), vous devez le diviser en fichiers séparés et les ajouter au portefeuille Oracle à l'aide du script bash suivant. Ce script nécessite deux entrées de paramètres : le chemin d'accès au certificat CA et le chemin d'accès au dossier du portefeuille Oracle créé précédemment.

   ```
   #!/usr/bin/env bash
   
   certnum=$(grep -c BEGIN <(cat $1))
   
   cnt=0
   temp_cert=""
   while read line
   do
   if [ -n "$temp_cert" -a "$line" == "-----BEGIN CERTIFICATE-----" ]
   then
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   temp_cert=""
   fi
   temp_cert+="$line"$'\n'
   done < <(cat $1)
   
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   echo ""
   ```

Une fois que vous avez terminé les étapes précédentes, vous pouvez importer le fichier de portefeuille avec l'appel d'API `ImportCertificate` en spécifiant le paramètre de portefeuille de certificat. Vous pouvez ensuite utiliser le certificat de portefeuille importé lorsque vous sélectionnez `verify-ca` comme mode SSL lors de la création ou de la modification de votre point de terminaison Oracle.

**Note**  
 Les portefeuilles Oracle sont des fichiers binaires. AWS DMS accepte ces fichiers tels quels. 

### Utilisation d'un certificat auto-signé pour Oracle SSL
<a name="CHAP_Security.SSL.Oracle.SelfSigned"></a>

Pour utiliser un certificat auto-signé pour Oracle SSL, procédez comme suit en supposant que le mot de passe du portefeuille Oracle est `oracle123`.

**Pour utiliser un certificat auto-signé pour Oracle SSL avec AWS DMS**

1. Créez un répertoire que vous utiliserez pour travailler avec le certificat auto-signé.

   ```
   mkdir -p /u01/app/oracle/self_signed_cert
   ```

1. Accédez au répertoire que vous avez créé à l'étape précédente.

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1. Créez une clé racine.

   ```
   openssl genrsa -out self-rootCA.key 2048
   ```

1. Auto-signez un certificat racine à l'aide de la clé racine que vous avez créée à l'étape précédente.

   ```
   openssl req -x509 -new -nodes -key self-rootCA.key 
           -sha256 -days 3650 -out self-rootCA.pem
   ```

   Utilisez les paramètres d’entrée suivants.
   + `Country Name (2 letter code) [XX]`, par exemple : `AU`
   + `State or Province Name (full name) []`, par exemple : `NSW`
   + `Locality Name (e.g., city) [Default City]`, par exemple : `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`, par exemple : `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`, par exemple : `DBeng`
   + `Common Name (e.g., your name or your server's hostname) []`, par exemple : `aws`
   + `Email Address []`, par exemple : abcd.efgh@amazonwebservice.com

1. Créez un répertoire de portefeuille Oracle pour la base de données Oracle.

   ```
   mkdir -p /u01/app/oracle/wallet
   ```

1. Créez un nouveau portefeuille Oracle.

   ```
   orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
   ```

1. Ajoutez le certificat racine au portefeuille Oracle.

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert 
   -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
   ```

1. Affichez le contenu du portefeuille Oracle. La liste doit inclure le certificat racine. 

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

   Par exemple, ce paramètre peut s’afficher comme suit.

   ```
   Requested Certificates:
   User Certificates:
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O= AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. Générez la demande de signature de certificat (CSR) à l'aide de l'utilitaire ORAPKI.

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 
   -dn "CN=aws" -keysize 2048 -sign_alg sha256
   ```

1. Exécutez la commande suivante.

   ```
   openssl pkcs12 -in /u01/app/oracle/wallet/ewallet.p12 -nodes -out /u01/app/oracle/wallet/nonoracle_wallet.pem
   ```

   Ce paramètre a un résultat similaire à ce qui suit.

   ```
   Enter Import Password:
   MAC verified OK
   Warning unsupported bag type: secretBag
   ```

1. Mettez « dms » comme nom commun.

   ```
   openssl req -new -key /u01/app/oracle/wallet/nonoracle_wallet.pem -out certdms.csr
   ```

   Utilisez les paramètres d’entrée suivants.
   + `Country Name (2 letter code) [XX]`, par exemple : `AU`
   + `State or Province Name (full name) []`, par exemple : `NSW`
   + `Locality Name (e.g., city) [Default City]`, par exemple : `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`, par exemple : `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`, par exemple : `aws`
   + `Common Name (e.g., your name or your server's hostname) []`, par exemple : `aws`
   + `Email Address []`, par exemple : abcd.efgh@amazonwebservice.com

   Assurez-vous qu’il est différent de l’étape 4. Pour ce faire, remplacez par exemple le nom de l’unité organisationnelle par un autre nom, comme indiqué.

   Entrez les attributs supplémentaires suivants à envoyer avec votre demande de certificat.
   + `A challenge password []`, par exemple : `oracle123`
   + `An optional company name []`, par exemple : `aws`

1. Obtenez la signature de certificat.

   ```
   openssl req -noout -text -in certdms.csr | grep -i signature
   ```

   La clé de signature de ce message est `sha256WithRSAEncryption`.

1. Exécutez la commande suivante pour générer le fichier de certificat (`.crt`).

   ```
   openssl x509 -req -in certdms.csr -CA self-rootCA.pem -CAkey self-rootCA.key 
   -CAcreateserial -out certdms.crt -days 365 -sha256
   ```

   Ce paramètre a un résultat similaire à ce qui suit.

   ```
   Signature ok
   subject=/C=AU/ST=NSW/L=Sydney/O=awsweb/OU=DBeng/CN=aws
   Getting CA Private Key
   ```

1. Ajoutez le certificat au portefeuille.

   ```
   orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
   ```

1. Consultez le portefeuille. Il doit comporter deux entrées. Consultez le code suivant.

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

1. Configurez le fichier `sqlnet.ora` (`$ORACLE_HOME/network/admin/sqlnet.ora`).

   ```
   WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = /u01/app/oracle/wallet/)
        )
      ) 
   
   SQLNET.AUTHENTICATION_SERVICES = (NONE)
   SSL_VERSION = 1.0
   SSL_CLIENT_AUTHENTICATION = FALSE
   SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
   ```

1. Arrêtez l'écouteur Oracle.

   ```
   lsnrctl stop
   ```

1. Ajoutez des entrées pour SSL dans le fichier `listener.ora` (`$ORACLE_HOME/network/admin/listener.ora`).

   ```
   SSL_CLIENT_AUTHENTICATION = FALSE
   WALLET_LOCATION =
     (SOURCE =
       (METHOD = FILE)
       (METHOD_DATA =
         (DIRECTORY = /u01/app/oracle/wallet/)
       )
     )
   
   SID_LIST_LISTENER =
    (SID_LIST =
     (SID_DESC =
      (GLOBAL_DBNAME = SID)
      (ORACLE_HOME = ORACLE_HOME)
      (SID_NAME = SID)
     )
    )
   
   LISTENER =
     (DESCRIPTION_LIST =
       (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
         (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
         (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
       )
     )
   ```

1. Configurez le fichier `tnsnames.ora` (`$ORACLE_HOME/network/admin/tnsnames.ora`).

   ```
   <SID>=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   
   <SID>_ssl=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   ```

1. Redémarrez l'écouteur Oracle.

   ```
   lsnrctl start
   ```

1. Affichez le statut de l'écouteur Oracle.

   ```
   lsnrctl status
   ```

1. Testez la connexion SSL à la base de données à partir de localhost à l'aide de sqlplus et de l'entrée SSL tnsnames.

   ```
   sqlplus -L ORACLE_USER@SID_ssl
   ```

1. Vérifiez que la connexion a été établie à l'aide de SSL.

   ```
   SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL;
   
   SYS_CONTEXT('USERENV','NETWORK_PROTOCOL')
   --------------------------------------------------------------------------------
   tcps
   ```

1. Accédez au répertoire contenant le certificat auto-signé.

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1. Créez un nouveau portefeuille client Oracle AWS DMS à utiliser.

   ```
   orapki wallet create -wallet ./ -auto_login_only
   ```

1. Ajoutez le certificat racine auto-signé au portefeuille Oracle.

   ```
   orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
   ```

1. Répertoriez le contenu du portefeuille Oracle AWS DMS à utiliser. La liste doit inclure le certificat racine auto-signé.

   ```
   orapki wallet display -wallet ./
   ```

   Ce paramètre a un résultat similaire à ce qui suit.

   ```
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. Téléchargez le portefeuille Oracle que vous venez de créer sur AWS DMS.

## Méthodes de chiffrement prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS
<a name="CHAP_Source.Oracle.Encryption"></a>

Dans le tableau suivant, vous trouverez les méthodes de chiffrement transparent des données (TDE) prises AWS DMS en charge lors de l'utilisation d'une base de données source Oracle. 


| Méthode d'accès aux journaux de journalisation | Espace disque logique TDE | Colonne TDE | 
| --- | --- | --- | 
| Oracle LogMiner | Oui | Oui | 
| Binary Reader | Oui | Oui | 

AWS DMS prend en charge Oracle TDE lorsque vous utilisez Binary Reader, à la fois au niveau des colonnes et au niveau de l'espace disque logique. Pour utiliser le chiffrement TDE avec AWS DMS, identifiez d'abord l'emplacement du portefeuille Oracle où sont stockés la clé de chiffrement TDE et le mot de passe TDE. Identifiez ensuite la clé de chiffrement TDE et le mot de passe appropriés pour le point de terminaison source Oracle.

**Pour identifier et spécifier la clé de chiffrement et le mot de passe pour le chiffrement TDE**

1. Exécutez la requête suivante pour trouver le portefeuille de chiffrement Oracle sur l’hôte de base de données Oracle.

   ```
   SQL> SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET;
   
   WRL_PARAMETER
   --------------------------------------------------------------------------------
   /u01/oracle/product/12.2.0/dbhome_1/data/wallet/
   ```

   Dans cet exemple, l’emplacement du portefeuille est `/u01/oracle/product/12.2.0/dbhome_1/data/wallet/`.

1. Obtenez l'ID de clé principale pour une source non CDB ou CDB comme suit :

   1. Pour une source non CDB, exécutez la requête suivante pour récupérer l'ID de la clé de chiffrement principale :

      ```
      SQL>  select rownum, key_id, activation_time from v$encryption_keys;
      
      ROWNUM KEY_ID                                                 ACTIVATION_TIME
      ------ ------------------------------------------------------ ---------------
           1 AeKask0XZU+NvysflCYBEVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   04-SEP-24 10.20.56.605200 PM +00:00
           2 AV7WU9uhoU8rv8daE/HNnSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   10-AUG-21 07.52.03.966362 PM +00:00
           3 AckpoJ/f+k8xvzJ+gSuoVH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA   14-SEP-20 09.26.29.048870 PM +00:00
      ```

      Le temps d'activation est utile si vous prévoyez de démarrer le CDC à un moment donné dans le passé. Par exemple, en utilisant les résultats ci-dessus, vous pouvez démarrer le CDC à partir d'un moment donné entre le 10 août et le 21 août à 07h52 ,03 et le 14 septembre 20 à 21h26,29 en utilisant l'ID de clé principale dans ROWNUM 2. Lorsque la tâche atteint le point de terminaison généré le 14 septembre 20 à 21h26.29 ou après cette date, elle échoue. Vous devez modifier le point de terminaison source, fournir l'ID de la clé principale dans ROWNUM 3, puis reprendre la tâche.

   1. Pour la source CDB, DMS nécessite la clé de chiffrement principale CDB\$1ROOT. Connectez-vous à CDB\$1ROOT et exécutez la requête suivante :

      ```
      SQL> select rownum, key_id, activation_time from v$encryption_keys where con_id = 1;
      
      ROWNUM KEY_ID                                               ACTIVATION_TIME
      ------ ---------------------------------------------------- -----------------------------------
           1 Aa2E/Vwb5U+zv5hCncS5ErMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 29-AUG-24 12.51.19.699060 AM +00:00
      ```

1. À partir de la ligne de commande, répertoriez les entrées du portefeuille de chiffrement sur l’hôte de base de données Oracle source.

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -list
   Oracle Secret Store entries:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
   ORACLE.SECURITY.ID.ENCRYPTION.
   ORACLE.SECURITY.KB.ENCRYPTION.
   ORACLE.SECURITY.KM.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

   Recherchez l’entrée contenant l’ID de clé principale que vous avez trouvé à l’étape 2 (`AWGDC9glSk8Xv+3bVveiVSg`). Cette entrée est le nom de la clé de chiffrement TDE.

1. Consultez les détails de l’entrée que vous avez trouvés à l’étape précédente.

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   Oracle Secret Store Tool : Version 12.2.0.1.0
   Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
   Enter wallet password:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   Entrez le mot de passe du portefeuille pour voir le résultat.

   Ici, la valeur à droite de `'='` est le mot de passe TDE.

1. Spécifiez le nom de la clé de chiffrement TDE pour le point de terminaison source Oracle en définissant l’attribut de connexion supplémentaire `securityDbEncryptionName`.

   ```
   securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

1. Indiquez le mot de passe TDE associé à cette clé sur la console dans le champ **Mot de passe** de la source Oracle. Utilisez l’ordre suivant pour mettre en forme les valeurs de mot de passe séparées par des virgules, qui se terminent par la valeur du mot de passe TDE.

   ```
   Oracle_db_password,ASM_Password,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   Spécifiez les valeurs de mot de passe dans cet ordre quelle que soit la configuration de votre base de données Oracle. Par exemple, si vous utilisez TDE, mais que la base de données Oracle n’utilise pas ASM, spécifiez les valeurs de mot de passe dans l’ordre suivant séparé par des virgules.

   ```
   Oracle_db_password,,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

Si les informations d'identification TDE que vous spécifiez sont incorrectes, la tâche de AWS DMS migration n'échoue pas. Toutefois, la tâche ne lit pas et n'applique pas non plus les modifications de réplication en cours à la base de données cible. Après avoir démarré la tâche, surveillez les **Statistiques de table** sur la page de la tâche de migration de la console pour vous assurer que les modifications sont répliquées.

Si un administrateur de base de données modifie les valeurs d’informations d’identification TDE pour la base de données Oracle pendant l’exécution de la tâche, celle-ci échoue. Le message d’erreur contient le nouveau nom de clé de chiffrement TDE. Pour spécifier de nouvelles valeurs et redémarrer la tâche, procédez comme suit.

**Important**  
Vous ne pouvez pas manipuler un portefeuille TDE créé dans un emplacement Oracle Automatic Storage Management (ASM), car les commandes au niveau du système d’exploitation telles que `cp`, `mv`, `orapki` et `mkstore` corrompent les fichiers du portefeuille stockés dans un emplacement ASM. Cette restriction est spécifique aux fichiers de portefeuille TDE stockés dans un emplacement ASM uniquement, mais pas aux fichiers de portefeuille TDE stockés dans un répertoire local du système d’exploitation.  
Pour manipuler un portefeuille TDE stocké dans ASM à l’aide de commandes au niveau du système d’exploitation, créez un magasin de clés local et fusionnez-le avec le magasin de clés ASM, comme suit :   
Créez un magasin de clés local.  

   ```
   ADMINISTER KEY MANAGEMENT create keystore file system wallet location identified by wallet password;
   ```
Fusionnez le magasin de clés ASM avec le magasin de clés local.  

   ```
   ADMINISTER KEY MANAGEMENT merge keystore ASM wallet location identified by wallet password into existing keystore file system wallet location identified by wallet password with backup;
   ```
Ensuite, pour répertorier les entrées du portefeuille de chiffrement et le mot de passe TDE, exécutez les étapes 3 et 4 sur le magasin de clés local.

## Méthodes de compression prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS
<a name="CHAP_Source.Oracle.Compression"></a>

Dans le tableau suivant, vous trouverez les méthodes de compression prises AWS DMS en charge lors de l'utilisation d'une base de données source Oracle. Comme le montre le tableau, la prise en charge de la compression dépend à la fois de la version de votre base de données Oracle et de la configuration de DMS pour utiliser Oracle LogMiner pour accéder aux journaux de journalisation.


| Version | Base | OLTP |  HCC (à partir d’Oracle 11g R2 ou ultérieur)  | Autres | 
| --- | --- | --- | --- | --- | 
| Oracle 10 | Non | N/A | N/A | Non | 
| Oracle 11 ou version ultérieure — Oracle LogMiner | Oui | Oui | Oui  | Oui — Toutes les méthodes de compression prises en charge par Oracle LogMiner. | 
| Oracle 11 ou version ultérieure : Binary Reader | Oui | Oui | Oui : pour plus d’informations, consultez la remarque suivante. | Oui | 

**Note**  
Lorsque le point de terminaison source Oracle est configuré pour utiliser Binary Reader, le niveau Query Low de la méthode de compression HCC est pris en charge uniquement pour les tâches à pleine charge.

## Réplication de tables imbriquées à l'aide d'Oracle comme source pour AWS DMS
<a name="CHAP_Source.Oracle.NestedTables"></a>

AWS DMS prend en charge la réplication des tables Oracle contenant des colonnes qui sont des tables imbriquées ou des types définis. Pour activer cette fonctionnalité, ajoutez le paramètre d’attribut de connexion supplémentaire suivant au point de terminaison source Oracle.

```
allowSelectNestedTables=true;
```

AWS DMS crée les tables cibles à partir des tables imbriquées Oracle en tant que tables parent et enfant normales sur la cible sans contrainte unique. Pour accéder aux données correctes sur la cible, joignez les tables parent et enfant. Pour ce faire, créez d'abord manuellement un index non unique sur la colonne `NESTED_TABLE_ID` de la table enfant cible. Vous pouvez ensuite utiliser la colonne `NESTED_TABLE_ID` dans la clause de jointure `ON` avec la colonne parent qui correspond au nom de la table enfant. En outre, la création d'un tel index améliore les performances lorsque les données de la table enfant cible sont mises à jour ou supprimées par AWS DMS. Pour obtenir un exemple, consultez [Exemple de jointure pour les tables parent et enfant sur la cible](#CHAP_Source.Oracle.NestedTables.JoinExample).

Nous vous recommandons de configurer la tâche pour qu'elle s'arrête une fois la charge complète terminée. Ensuite, créez ces index non uniques pour toutes les tables enfants répliquées sur la cible et reprenez la tâche.

Si une table imbriquée capturée est ajoutée à une table parent existante (capturée ou non capturée), elle AWS DMS est gérée correctement. Toutefois, l'index non unique de la table cible correspondante n'est pas créé. Dans ce cas, si la table enfant cible devient extrêmement volumineuse, les performances peuvent être affectées. Dans ce cas, nous vous recommandons d'arrêter la tâche, de créer l'index, puis de reprendre la tâche.

Une fois les tables imbriquées répliquées vers la cible, faites en sorte que l'administrateur de base de données exécute une jointure sur les tables parent et enfant correspondantes pour aplatir les données.

### Conditions préalables à la réplication des tables imbriquées Oracle en tant que source
<a name="CHAP_Source.Oracle.NestedTables.Prerequisites"></a>

Assurez-vous de répliquer les tables parentes pour toutes les tables imbriquées répliquées. Incluez à la fois les tables parents (les tables contenant la colonne de table imbriquée) et les tables enfants (c'est-à-dire imbriquées) dans les AWS DMS mappages de tables.

### Types de tables imbriquées Oracle pris en charge en tant que source
<a name="CHAP_Source.Oracle.NestedTables.Types"></a>

AWS DMS prend en charge les types de tables imbriquées Oracle suivants en tant que source :
+ Type de données
+ Objet défini par l'utilisateur

### Limites de la AWS DMS prise en charge des tables imbriquées Oracle en tant que source
<a name="CHAP_Source.Oracle.NestedTables.Limitations"></a>

AWS DMS présente les limites suivantes quant à sa prise en charge des tables imbriquées Oracle en tant que source :
+ AWS DMS ne prend en charge qu'un seul niveau d'imbrication de tables.
+ AWS DMS le mappage des tables ne vérifie pas que la ou les tables parent et enfant sont sélectionnées pour la réplication. Autrement dit, il est possible de sélectionner une table parent sans enfant ou une table enfant sans parent.

### Comment AWS DMS réplique-t-il les tables imbriquées Oracle en tant que source
<a name="CHAP_Source.Oracle.NestedTables.HowReplicated"></a>

AWS DMS réplique les tables parentes et imbriquées vers la cible comme suit :
+ AWS DMS crée la table parent identique à la source. Il définit ensuite la colonne imbriquée dans le parent comme `RAW(16)` et inclut une référence aux tables imbriquées du parent dans sa colonne `NESTED_TABLE_ID`.
+ AWS DMS crée la table enfant identique à la source imbriquée, mais avec une colonne supplémentaire nommée`NESTED_TABLE_ID`. Cette colonne a le même type et la même valeur que la colonne imbriquée parent correspondante et a la même signification.

### Exemple de jointure pour les tables parent et enfant sur la cible
<a name="CHAP_Source.Oracle.NestedTables.JoinExample"></a>

Pour aplatir la table parent, exécutez une jointure entre les tables parent et enfant, comme illustré dans l'exemple suivant :

1. Créez la table `Type`.

   ```
   CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
   ```

1. Créez la table parent avec une colonne de type `NESTED_TEST_T`, tel que défini précédemment.

   ```
   CREATE TABLE NESTED_PARENT_TEST (ID NUMBER(10,0) PRIMARY KEY, NAME NESTED_TEST_T) NESTED TABLE NAME STORE AS NAME_KEY;
   ```

1. Aplatissez la table `NESTED_PARENT_TEST` à l'aide d'une jointure avec la table `NAME_KEY` enfant où `CHILD.NESTED_TABLE_ID` correspond à `PARENT.NAME`.

   ```
   SELECT … FROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_
   TABLE_ID = PARENT.NAME;
   ```

## Stockage de REDO sur Oracle ASM lors de l'utilisation d'Oracle comme source pour AWS DMS
<a name="CHAP_Source.Oracle.REDOonASM"></a>

Pour les sources Oracle à forte génération de REDO, le stockage de REDO sur Oracle ASM peut améliorer les performances, en particulier dans une configuration RAC, car vous pouvez configurer DMS pour distribuer les lectures ASM REDO sur tous les nœuds ASM.

Pour utiliser cette configuration, utilisez l’attribut de connexion `asmServer`. Par exemple, la chaîne de connexion suivante distribue les lectures DMS REDO sur 3 nœuds ASM :

```
asmServer=(DESCRIPTION=(CONNECT_TIMEOUT=8)(ENABLE=BROKEN)(LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node1_ip_address)(PORT=asm_node1_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node2_ip_address)(PORT=asm_node2_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node3_ip_address)(PORT=asm_node3_port_number)))
(CONNECT_DATA=(SERVICE_NAME=+ASM)))
```

Lorsque vous utilisez NFS pour stocker Oracle REDO, il est important de vous assurer que les correctifs client DNFS (Direct NFS) appropriés sont appliqués, en particulier les correctifs qui corrigent le bogue Oracle 25224242. Pour plus d’informations, consultez la publication Oracle suivante concernant les correctifs liés au client Direct NFS, intitulée [Recommended Patches for Direct NFS Client](https://support.oracle.com/knowledge/Oracle Cloud/1495104_1.html). 

En outre, pour améliorer les performances de lecture NFS, nous vous recommandons d’augmenter la valeur de `rsize` et de `wsize` dans `fstab` pour le volume NFS, comme indiqué dans l’exemple suivant.

```
NAS_name_here:/ora_DATA1_archive /u09/oradata/DATA1 nfs rw,bg,hard,nointr,tcp,nfsvers=3,_netdev,
timeo=600,rsize=262144,wsize=262144
```

Ajustez également la valeur de `tcp-max-xfer-size` comme suit :

```
vserver nfs modify -vserver vserver -tcp-max-xfer-size 262144
```

## Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS
<a name="CHAP_Source.Oracle.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données source Oracle comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Oracle en tant que source sont indiqués dans le tableau suivant.


| Nom | Description | 
| --- | --- | 
| AccessAlternateDirectly |  Définissez cet attribut sur false pour utiliser Binary Reader afin de capturer les données de modification pour Amazon RDS for Oracle en tant que source. Cette opération indique à l'instance DMS qu'elle ne doit pas accéder aux journaux redo via un remplacement de préfixe de chemin spécifié en utilisant un accès direct aux fichiers. Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Valeur par défaut : true  Valeurs valides : true/false Exemple : `--oracle-settings '{"AccessAlternateDirectly": false}'`  | 
|  `AdditionalArchivedLogDestId`  |  Définissez cet attribut avec `ArchivedLogDestId` dans une configuration principale/de secours. Cet attribut est utile lors d’un basculement lorsqu’une base de données Oracle Data Guard est utilisée en tant que source. Dans ce cas, vous AWS DMS devez savoir de quelle destination obtenir les journaux de restauration des archives pour lire les modifications. En effet, après le basculement, l’instance précédemment principale est désormais une instance de secours. Bien qu'il AWS DMS supporte l'utilisation de l'`RESETLOGS`option Oracle pour ouvrir la base de données, ne l'utilisez jamais `RESETLOGS` sauf si cela est nécessaire. Pour plus d’informations sur `RESETLOGS`, consultez [RMAN Data Repair Concepts](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/rman-data-repair-concepts.html#GUID-1805CCF7-4AF2-482D-B65A-998192F89C2B) dans le *Guide de l’utilisateur Oracle® Database Backup and Recovery*. Valeurs valides : ID de destination d’archive Exemple : `--oracle-settings '{"AdditionalArchivedLogDestId": 2}'`  | 
|  `AddSupplementalLogging`  |  Définissez cet attribut pour configurer la journalisation supplémentaire au niveau de la table pour la base de données Oracle. Cet attribut active l’une des options suivantes sur toutes les tables sélectionnées pour une tâche de migration, en fonction des métadonnées des tables : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.Oracle.html) Valeur par défaut : false  Valeurs valides : true/false  Exemple : `--oracle-settings '{"AddSupplementalLogging": false}'`  Si vous utilisez cette option, vous devez encore activer la journalisation supplémentaire au niveau de la base de données, comme indiqué précédemment.    | 
|  `AllowSelectNestedTables`  |  Définissez cet attribut sur true pour activer la réplication des tables Oracle contenant des colonnes imbriquées ou des types définis. Pour de plus amples informations, veuillez consulter [Réplication de tables imbriquées à l'aide d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.NestedTables). Valeur par défaut : false  Valeurs valides : true/false Exemple : `--oracle-settings '{"AllowSelectNestedTables": true}'`  | 
|  `ArchivedLogDestId`  |  Spécifie l'ID de la destination des journaux redo archivés. Cette valeur doit être identique à un des nombres de la colonne dest\$1id de la vue v\$1archived\$1log. Si vous travaillez avec une destination de journal redo supplémentaire, nous vous recommandons d’utiliser l’attribut `AdditionalArchivedLogDestId` pour spécifier l’ID de destination supplémentaire. Cela améliore les performances en garantissant l'accès aux journaux appropriés dès le départ.  Valeur par défaut : 1 Valeurs valides : nombre  Exemple : `--oracle-settings '{"ArchivedLogDestId": 1}'`  | 
|  `ArchivedLogsOnly`  |  Lorsque ce champ est défini sur Y, il accède AWS DMS uniquement aux journaux de journalisation archivés. Si les journaux de restauration archivés sont stockés uniquement sur Oracle ASM, le compte AWS DMS utilisateur doit disposer de privilèges ASM.  Valeur par défaut : N  Valeurs valides : Y/N  Exemple : `--oracle-settings '{"ArchivedLogsOnly": Y}'`  | 
|  `asmUsePLSQLArray` (ECA uniquement)  |  Utilisez cet attribut de connexion supplémentaire (ECA) lors de la capture des modifications de source avec BinaryReader. Ce paramètre permet à DMS de mettre en mémoire tampon 50 lectures au niveau ASM par thread de lecture unique tout en contrôlant le nombre de threads à l’aide de l’attribut `parallelASMReadThreads`. Lorsque vous définissez cet attribut, le lecteur AWS DMS binaire utilise un PL/SQL bloc anonyme pour capturer les données de restauration et les renvoyer à l'instance de réplication sous forme de grande mémoire tampon. Cela réduit le nombre d’allers retours jusqu’à la source. Cela peut améliorer de manière significative les performances de capture de source, mais cela entraîne une consommation de mémoire PGA plus élevée sur l’instance ASM. Des problèmes de stabilité peuvent survenir si la mémoire cible n’est pas suffisante. Vous pouvez utiliser la formule suivante pour estimer l’utilisation totale de la mémoire PGA sur l’instance ASM par tâche DMS : `number_of_redo_threads * parallelASMReadThreads * 7 MB` Valeur par défaut : false Valeurs valides : true/false Exemple d’ECA : `asmUsePLSQLArray=true;`  | 
|  `ConvertTimestampWithZoneToUTC`  |  Définissez cet attribut sur `true` pour convertir la valeur d’horodatage des colonnes « TIMESTAMP WITH TIME ZONE » et « TIMESTAMP WITH LOCAL TIME ZONE » au format UTC. Par défaut, la valeur de cet attribut est « false » et les données seront répliquées en utilisant le fuseau horaire de la base de données source. Valeur par défaut : false Valeurs valides : true/false Exemple : `--oracle-settings '{"ConvertTimestampWithZoneToUTC": true}'`  | 
|  `EnableHomogenousPartitionOps`  |  Définissez cet attribut sur `true` pour permettre la réplication des opérations DDL de partition et de sous-partition Oracle pour une migration Oracle *homogène*. Notez que cette fonctionnalité et cette amélioration ont été introduites dans la AWS DMS version 3.4.7. Valeur par défaut : false Valeurs valides : true/false Exemple : `--oracle-settings '{"EnableHomogenousPartitionOps": true}'`  | 
|  `EnableHomogenousTablespace`  |  Définissez cet attribut pour activer la réplication homogène d'un espace de table et créer des tables ou des index existants sous le même espace de table sur la cible. Valeur par défaut : false Valeurs valides : true/false Exemple : `--oracle-settings '{"EnableHomogenousTablespace": true}'`  | 
|  `EscapeCharacter`  |  Définissez cet attribut sur un caractère d’échappement. Ce caractère d’échappement vous permet de faire en sorte qu’un caractère générique unique se comporte comme un caractère normal dans les expressions de mappage de table. Pour de plus amples informations, veuillez consulter [Caractères génériques dans le mappage de table](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Wildcards.md). Valeur par défaut : Null  Valeurs valides : tout caractère autre qu’un caractère générique Exemple : `--oracle-settings '{"EscapeCharacter": "#"}'` Vous pouvez uniquement utiliser `escapeCharacter` pour les noms de table. Il n’exclut pas les caractères des noms de schéma ou de colonne.  | 
|  `ExposeViews`  |  Utilisez cet attribut pour extraire les données d’une vue une fois ; vous ne pouvez pas l’utiliser pour la réplication continue. Lorsque vous extrayez les données d’une vue, la vue est représentée sous la forme d’une table sur le schéma cible. Valeur par défaut : false Valeurs valides : true/false Exemple : `--oracle-settings '{"ExposeViews": true}'`  | 
|  `ExtraArchivedLogDestIds`  |  Spécifie IDs une ou plusieurs destinations pour un ou plusieurs journaux de journalisation archivés. Il s' IDs agit des valeurs de la colonne dest\$1id dans la vue v\$1archived\$1log. Utilisez ce paramètre avec l'attribut de connexion ArchivedLogDestId supplémentaire dans une primary-to-single configuration ou une primary-to-multiple-standby configuration. Ce paramètre est utile lors d'un basculement lorsque vous utilisez une base de données Oracle Data Guard comme source. Dans ce cas, il AWS DMS a besoin d'informations sur la destination à partir de laquelle obtenir les journaux de restauration des archives pour lire les modifications. AWS DMS en a besoin car après le basculement, l'instance principale précédente est une instance de secours. Valeurs valides : ID de destination d’archive Exemple : `--oracle-settings '{"ExtraArchivedLogDestIds": 1}'`  | 
|  `FailTasksOnLobTruncation`  |  Lorsque la valeur `true` est définie, cet attribut provoque l'échec d'une tâche si la taille réelle d'une colonne LOB est supérieure à la valeur `LobMaxSize` spécifiée. Si une tâche est définie sur le mode LOB limité et que cette option a pour valeur `true`, la tâche échoue au lieu de tronquer les données LOB. Valeur par défaut : false  Valeurs valides : booléen  Exemple : `--oracle-settings '{"FailTasksOnLobTruncation": true}'`  | 
|  `filterTransactionsOfUser` (ECA uniquement)  |  Utilisez cet attribut de connexion supplémentaire (ECA) pour permettre à DMS d'ignorer les transactions d'un utilisateur spécifié lors de la réplication des données d'Oracle lors de l'utilisation. LogMiner Vous pouvez transmettre des valeurs de nom d’utilisateur séparées par des virgules, mais elles doivent être entièrement en majuscules. Exemple d’ECA : `filterTransactionsOfUser=USERNAME;`  | 
|  `NumberDataTypeScale`  |  Spécifie l'échelle de nombres. Vous pouvez sélectionner une échelle jusqu’à 38, -1 pour FLOAT ou -2 pour VARCHAR. Par défaut, le type de données NUMBER est converti en précision 38, échelle 10. Valeur par défaut : 10  Valeurs valides : -2 à 38 (-2 pour VARCHAR, -1 pour FLOAT) Exemple : `--oracle-settings '{"NumberDataTypeScale": 12}'`  Sélectionnez une combinaison d’échelle de précision, -1 (FLOAT) ou -2 (VARCHAR). DMS prend en charge toutes les combinaisons d’échelle de précision prises en charge par Oracle. Si la précision est supérieure ou égale à 39, sélectionnez -2 (VARCHAR). Le NumberDataTypeScale paramètre de la base de données Oracle est utilisé uniquement pour le type de données NUMBER (sans précision ni définition d'échelle explicites). Vous devez noter qu'une perte de précision peut survenir lorsque ce paramètre est mal configuré.   | 
|  `OpenTransactionWindow`  |   Fournit le délai en minutes pour vérifier l’existence de transactions ouvertes pour une tâche de CDC uniquement. Lorsque vous définissez une valeur supérieure ou égale `OpenTransactionWindow` à 1, DMS convertit les valeurs `SCN_TO_TIMESTAMP` SCN en valeurs d'horodatage. En raison des limites de la base de données Oracle, si vous spécifiez un SCN trop ancien comme point de départ du CDC, le SCN\$1TO\$1TIMESTAMP échouera avec une `ORA-08181` erreur et vous ne pourrez pas démarrer de tâches uniquement relatives au CDC. Valeur par défaut : 0  Valeurs valides : entier compris entre 0 et 240 Exemple : `openTransactionWindow=15;`  | 
| OraclePathPrefix | Définissez cet attribut de chaîne sur la valeur requise afin d'utiliser Binary Reader pour capturer les données modifiées pour un Amazon RDS for Oracle en tant que source. Cette valeur spécifie la racine Oracle utilisée par défaut pour accéder aux journaux redo. Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valeur par défaut : none Valeur valide :/rdsdbdata/db/ORCL\$1A/ Exemple : `--oracle-settings '{"OraclePathPrefix": "/rdsdbdata/db/ORCL_A/"}'`  | 
| ParallelASMReadThreads |  Définissez cet attribut pour modifier le nombre de threads configurés par DMS pour effectuer une capture des données de modification (CDC) à l’aide d’Oracle Automatic Storage Management (ASM). Vous pouvez spécifier un nombre entier compris entre 2 (par défaut) et 8 (maximum). Utilisez cet attribut avec l'attribut `ReadAheadBlocks`. Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Valeur par défaut : 2  Valeurs valides : un nombre entier compris entre 2 à 8 Exemple : `--oracle-settings '{"ParallelASMReadThreads": 6;}'`  | 
| ReadAheadBlocks |  Définissez cet attribut pour modifier le nombre de blocs de lecture anticipée configurés par DMS pour effectuer une CDC à l’aide d’Oracle Automatic Storage Management (ASM) et d’un stockage NAS non ASM. Vous pouvez spécifier une valeur entière comprise entre 1 000 (valeur par défaut) et 2 000 000 (valeur maximale). Utilisez cet attribut avec l'attribut `ParallelASMReadThreads`. Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Valeur par défaut : 1000  Valeurs valides : un entier compris entre 1 000 et 2 000 000 Exemple : `--oracle-settings '{"ReadAheadBlocks": 150000}'`  | 
|  `ReadTableSpaceName`  |  Lorsque la valeur `true` est définie, cet attribut prend en charge la réplication d'espace de table. Valeur par défaut : false  Valeurs valides : booléen  Exemple : `--oracle-settings '{"ReadTableSpaceName": true}'`  | 
| ReplacePathPrefix | Définissez cet attribut sur true (vrai) pour utiliser Binary Reader afin de capturer les données modifiées pour un Amazon RDS for Oracle en tant que source. Ce paramètre indique à l'instance DMS qu'elle doit remplacer la racine Oracle par défaut par le paramètre UsePathPrefix pour accéder aux journaux redo. Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valeur par défaut : false Valeurs valides : true/false Exemple : `--oracle-settings '{"ReplacePathPrefix": true}'`  | 
|  `RetryInterval`  |  Spécifie le nombre de secondes que le système attend avant de renvoyer une requête.  Valeur par défaut : 5  Valeurs valides : nombres à partir de 1  Exemple : `--oracle-settings '{"RetryInterval": 6}'`  | 
|  `SecurityDbEncryptionName`  |  Spécifie le nom d'une clé utilisée pour le chiffrement transparent des données (TDE) des colonnes et de l'espace disque logique dans la base de données source Oracle. Pour de plus amples informations sur la définition de cet attribut et de son mot de passe associé sur le point de terminaison source Oracle, veuillez consulter [Méthodes de chiffrement prises en charge pour l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.Encryption). Valeur par défaut : ""  Valeurs valides : string  Exemple : `--oracle-settings '{"SecurityDbEncryptionName": "ORACLE.SECURITY.DB.ENCRYPTION.Adg8m2dhkU/0v/m5QUaaNJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}'`  | 
|  `SpatialSdo2GeoJsonFunctionName`  |  Pour les sources Oracle version 12.1 ou antérieures migrant vers des cibles PostgreSQL, utilisez cet attribut pour convertir SDO\$1GEOMETRY au format GEOJSON. Par défaut, AWS DMS appelle la fonction `SDO2GEOJSON` personnalisée qui doit être présente et accessible à l' AWS DMS utilisateur. Vous pouvez également créer votre propre fonction personnalisée qui imite le fonctionnement de `SDOGEOJSON` et définir `SpatialSdo2GeoJsonFunctionName` pour l'appeler à la place.  Valeur par défaut : SDO2 GEOJSON Valeurs valides : string  Exemple : `--oracle-settings '{"SpatialSdo2GeoJsonFunctionName": "myCustomSDO2GEOJSONFunction"}'`  | 
|  `StandbyDelayTime`  |  Utilisez cet attribut pour spécifier une durée en minutes pour le retard de synchronisation de l'instance de secours. Si la source est une base de données de secours Active Data Guard, utilisez cet attribut pour spécifier le décalage entre les bases de données principale et de secours. Dans AWS DMS, vous pouvez créer une tâche Oracle CDC qui utilise une instance de secours Active Data Guard comme source pour répliquer les modifications en cours. Cela vous permet de ne plus avoir besoin de vous connecter à une base de données active pouvant être en production. Valeur par défaut : 0  Valeurs valides : nombre  Exemple : `--oracle-settings '{"StandbyDelayTime": 1}'` **Remarque :** lorsque vous utilisez DMS 3.4.6, 3.4.7 ou ultérieur, l’utilisation de ce paramètre de connexion est facultative. Dans les dernières versions de DMS 3.4.6 et 3.4.7, `dms_user` devrait avoir l’autorisation `select` sur `V_$DATAGUARD_STATS`, ce qui permet à DMS de calculer le délai de veille.  | 
| UseAlternateFolderForOnline | Définissez cet attribut sur true (vrai) pour utiliser Binary Reader afin de capturer les données modifiées pour un Amazon RDS for Oracle en tant que source. Cette opération indique à l'instance DMS qu'elle doit utiliser un remplacement de préfixe spécifié pour accéder à tous les journaux redo en ligne. Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valeur par défaut : false Valeurs valides : true/false Exemple : `--oracle-settings '{"UseAlternateFolderForOnline": true}'`  | 
| UseBfile |  Définissez cet attribut sur Y pour capturer les données modifiées à l'aide de l'utilitaire Binary Reader. Attribuez la valeur N à `UseLogminerReader` pour définir cet attribut sur Y. Pour utiliser Binary Reader avec Amazon RDS for Oracle en tant que source, définissez des attributs supplémentaires. Pour plus d'informations sur ce paramètre et l'utilisation d'Oracle Automatic Storage Management (ASM), consultez [Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC](#CHAP_Source.Oracle.CDC). Remarque : lorsque vous définissez cette valeur en tant qu’attribut de connexion supplémentaire (ECA), les valeurs valides sont « Y » et « N ». Lorsque vous définissez cette valeur en tant que paramètre de point de terminaison, les valeurs valides sont `true` et `false`. Valeur par défaut : N  Valeurs valides : Y/N (lors de la définition de cette valeur en tant que paramètre ECA) ; true/false (lors de la définition de cette valeur en tant que paramètre de point de terminaison). Exemple : `--oracle-settings '{"UseBfile": Y}'`  | 
|  `UseLogminerReader`  |  Définissez cet attribut sur Y pour capturer les données de modification à l'aide de l' LogMiner utilitaire (valeur par défaut). Définissez cette option sur N si vous voulez qu' AWS DMS accède aux journaux redo en tant que fichier binaire. Lorsque vous définissez cette option sur N, ajoutez également le paramètre useBfile=Y. Pour plus d’informations sur ce paramètre et sur l’utilisation d’Oracle Automatic Storage Management (ASM), consultez [Utilisation d'Oracle LogMiner ou de AWS DMS Binary Reader pour le CDC](#CHAP_Source.Oracle.CDC). Remarque : lorsque vous définissez cette valeur en tant qu’attribut de connexion supplémentaire (ECA), les valeurs valides sont « Y » et « N ». Lorsque vous définissez cette valeur en tant que paramètre de point de terminaison, les valeurs valides sont `true` et `false`. Valeur par défaut : Y  Valeurs valides : Y/N (lors de la définition de cette valeur en tant que paramètre ECA) ; true/false (lors de la définition de cette valeur en tant que paramètre de point de terminaison). Exemple : `--oracle-settings '{"UseLogminerReader": Y}'`  | 
| UsePathPrefix | Définissez cet attribut de chaîne sur la valeur requise afin d'utiliser Binary Reader pour capturer les données modifiées pour un Amazon RDS for Oracle en tant que source. Cette valeur spécifie le préfixe de chemin utilisé pour remplacer la racine Oracle utilisée par défaut pour accéder aux journaux redo. Pour de plus amples informations, veuillez consulter [Configuration d'une tâche CDC pour utiliser Binary Reader avec une source RDS pour Oracle pour AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valeur par défaut : none Valeur valide : /rdsdbdata/log/ Exemple : `--oracle-settings '{"UsePathPrefix": "/rdsdbdata/log/"}'`  | 

## Types de données sources pour Oracle
<a name="CHAP_Source.Oracle.DataTypes"></a>

Le point de terminaison Oracle pour AWS DMS prend en charge la plupart des types de données Oracle. Le tableau suivant indique les types de données source Oracle pris en charge lors de l'utilisation AWS DMS et le mappage par défaut aux types de AWS DMS données.

**Note**  
À l’exception des types de données LONG et LONG RAW, lors de la réplication d’une source Oracle vers une cible Oracle (*réplication homogène*), tous les types de données source et cibles seront identiques. Toutefois, le type de données LONG sera mappé aux objets CLOB et le type de données LONG RAW sera mappé aux objets BLOB. 

Pour en savoir plus sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section concernant le point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Type de données Oracle  |  AWS DMS type de données  | 
| --- | --- | 
|  BINARY\$1FLOAT  |  REAL4  | 
|  BINARY\$1DOUBLE  |  REAL8  | 
|  BINAIRE  |  BYTES  | 
|  FLOAT (P)  |  Si la précision est inférieure ou égale à 24, utilisez REAL4. Si la précision est supérieure à 24, utilisez REAL8.  | 
|  NUMBER (P,S)  |  Lorsque l’échelle est supérieure à 0, utilisez NUMERIC. Lorsque l'échelle est 0 : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.Oracle.html) Lorsque l'échelle est inférieure à 0, utilisez REAL8. | 
|  DATE  |  DATETIME  | 
|  INTERVAL\$1YEAR TO MONTH  |  STRING (avec indication d'intervalle year\$1to\$1month)  | 
|  INTERVAL\$1DAY TO SECOND  |  STRING (avec indication d'intervalle day\$1to\$1second)  | 
|  TIMESTAMP  |  DATETIME  | 
|  TIMESTAMP WITH TIME ZONE  |  STRING (avec indication timestamp\$1with\$1timezone)  | 
|  TIMESTAMP WITH LOCAL TIME ZONE  |  STRING (avec indication timestamp\$1with\$1local\$1timezone)  | 
|  CHAR  |  CHAÎNE  | 
|  VARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  RAW  |  BYTES  | 
|  REAL  |  REAL8  | 
|  BLOB  |  BLOB Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données BLOB pour une tâche spécifique. AWS DMS prend en charge les types de données BLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  CLOB  |  CLOB Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données CLOB pour une tâche spécifique. Pendant le CDC, AWS DMS prend en charge les types de données CLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  NCLOB  |  NCLOB Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données NCLOB pour une tâche spécifique. Pendant le CDC, AWS DMS prend en charge les types de données NCLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  LONG  |  CLOB Le type de données LONG n'est pas pris en charge en mode d'application optimisé par lots (mode TurboStream CDC). Pour utiliser ce type de données avec AWS DMS, activez l'utilisation de LOBs pour une tâche spécifique. Pendant le CDC ou le chargement complet, AWS DMS prend en charge les types de données LOB uniquement dans les tables dotées d'une clé primaire. De plus, AWS DMS ne prend pas en charge le mode LOB complet pour le chargement de colonnes LONGUES. Vous pouvez plutôt utiliser le mode LOB limité pour migrer les colonnes LONG vers une cible Oracle. En mode LOB limité, AWS DMS tronque à 64 Ko toutes les données que vous définissez comme des colonnes LONGUES de plus de 64 Ko. Pour plus d'informations sur le support LOB dans AWS DMS, voir [Configuration du support LOB pour les bases de données sources dans une tâche AWS DMS](CHAP_Tasks.LOBSupport.md)  | 
|  LONG RAW  |  BLOB Le type de données LONG RAW n'est pas pris en charge en mode d'application optimisé par lots (mode TurboStream CDC). Pour utiliser ce type de données avec AWS DMS, activez l'utilisation de LOBs pour une tâche spécifique. Pendant le CDC ou le chargement complet, AWS DMS prend en charge les types de données LOB uniquement dans les tables dotées d'une clé primaire. De plus, AWS DMS ne prend pas en charge le mode LOB complet pour le chargement de colonnes LONG RAW. Vous pouvez plutôt utiliser le mode LOB limité pour migrer les colonnes LONG RAW vers une cible Oracle. En mode LOB limité, AWS DMS tronque à 64 Ko toutes les données que vous définissez comme des colonnes LONG RAW de plus de 64 Ko. Pour plus d'informations sur le support LOB dans AWS DMS, voir [Configuration du support LOB pour les bases de données sources dans une tâche AWS DMS](CHAP_Tasks.LOBSupport.md)  | 
|  XMLTYPE  |  CLOB  | 
| SDO\$1GEOMETRY | BLOB (pour une migration Oracle vers Oracle)CLOB (pour une migration Oracle vers PostgreSQL) | 

Les tables Oracle utilisées comme source avec des colonnes des types de données suivants ne sont pas prises en charge et ne peuvent pas être répliquées. La réplication des colonnes avec ces types de données a pour conséquence une colonne nulle.
+ BFILE
+ ROWID
+ REF
+ UROWID
+ Types de données définis par l'utilisateur
+ ANYDATA
+ VARRAY

**Note**  
Les colonnes virtuelles ne sont pas prises en charge.

### Migration de types de données spatiales Oracle
<a name="CHAP_Source.Oracle.DataTypes.Spatial"></a>

Les *données spatiales* identifient les informations de géométrie d'un objet ou d'un emplacement dans l'espace. Dans une base de données Oracle, la description géométrique d'un objet spatial est stockée dans un objet de type SDO\$1GEOMETRY. Dans cet objet, la description géométrique est stockée dans une seule ligne dans une seule colonne d'une table définie par l'utilisateur. 

AWS DMS prend en charge la migration du type Oracle SDO\$1GEOMETRY d'une source Oracle vers une cible Oracle ou PostgreSQL.

Lorsque vous migrez des types de données spatiales Oracle à l'aide de AWS DMS, tenez compte des points suivants :
+ Lors de la migration vers une cible Oracle, assurez-vous de transférer manuellement les entrées USER\$1SDO\$1GEOM\$1METADATA qui incluent des informations de type. 
+ Lors de la migration d'un point de terminaison source Oracle vers un point de terminaison AWS DMS cible PostgreSQL, crée des colonnes cibles. Ces colonnes contiennent des informations sur la géométrie et le type de géographie par défaut avec une dimension 2D et un identificateur de référence spatiale (SRID) égal à zéro (0). Par exemple : `GEOMETRY, 2, 0`.
+ Pour les sources Oracle version 12.1 ou antérieures qui migrent vers des cibles PostgreSQL, convertissez les objets `SDO_GEOMETRY` au format `GEOJSON` à l'aide de la fonction `SDO2GEOJSON` ou de l'attribut de connexion `spatialSdo2GeoJsonFunctionName` supplémentaire. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).
+ AWS DMS prend en charge les migrations de colonnes spatiales Oracle pour le mode LOB complet uniquement. AWS DMS ne prend pas en charge les modes LOB limité ou LOB en ligne. Pour plus d’informations sur le mode LOB, consultez [Configuration du support LOB pour les bases de données sources dans une tâche AWS DMS](CHAP_Tasks.LOBSupport.md).
+ Comme le mode Full LOB est AWS DMS uniquement compatible avec la migration des colonnes Oracle Spatial, la table des colonnes a besoin d'une clé primaire et d'une clé unique. Si la table ne possède pas de clé primaire ni de clé unique, elle est ignorée lors de la migration.

# Utilisation d'une base de données Microsoft SQL Server comme source pour AWS DMS
<a name="CHAP_Source.SQLServer"></a>

Migrez les données d'une ou de plusieurs bases de données Microsoft SQL Server à l'aide de AWS DMS. Avec une base de données SQL Server comme source, vous pouvez migrer des données vers une autre base de données SQL Server ou vers l'une des autres bases de données AWS DMS prises en charge. 

Pour plus d'informations sur les versions de SQL Server prises AWS DMS en charge en tant que source, consultez[Sources pour AWS DMS](CHAP_Introduction.Sources.md).

La base de données source SQL Server peut être installée sur n'importe quel ordinateur dans votre réseau. Un compte SQL Server avec les privilèges d'accès appropriés à la base de données source pour le type de tâche que vous avez choisi est également nécessaire pour une utilisation avec AWS DMS. Pour de plus amples informations, veuillez consulter [Autorisations pour les tâches SQL Server](#CHAP_Source.SQLServer.Permissions).

AWS DMS prend en charge la migration de données à partir d'instances nommées de SQL Server. Vous pouvez utiliser la notation suivante dans le nom du serveur lorsque vous créez le point de terminaison source.

```
IPAddress\InstanceName
```

Par exemple, voici un nom de serveur correct de point de terminaison source. Ici, la première partie du nom est l'adresse IP du serveur, et la seconde est le nom de l'instance de SQL Server (dans cet exemple, SQLTest).

```
10.0.0.25\SQLTest
```

Obtenez également le numéro de port sur lequel votre instance nommée de SQL Server écoute et utilisez-le pour configurer votre point de terminaison AWS DMS source. 

**Note**  
Le port 1433 est le port par défaut pour Microsoft SQL Server. Mais les ports dynamiques qui changent chaque fois que SQL Server est démarré, et les numéros de port statiques spécifiques utilisés pour se connecter à SQL Server via un pare-feu sont également souvent utilisés. Vous souhaitez donc connaître le numéro de port réel de votre instance nommée de SQL Server lorsque vous créez le point de terminaison AWS DMS source.

Vous pouvez utiliser SSL pour chiffrer les connexions entre votre point de terminaison SQL Server et l'instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison SQL Server, consultez [Utilisation du protocole SSL avec AWS Database Migration Service](CHAP_Security.SSL.md).

Vous pouvez utiliser le CDC pour effectuer une migration continue depuis une base de données SQL Server. Pour plus d'informations sur la configuration de votre base de données SQL Server source pour CDC, consultez[Capture des modifications de données pour une réplication continue à partir de SQL Server](CHAP_Source.SQLServer.CDC.md).

Pour plus de détails sur l'utilisation des bases de données source SQL Server AWS DMS, consultez les sections suivantes.

**Topics**
+ [Limitations relatives à l'utilisation de SQL Server comme source pour AWS DMS](#CHAP_Source.SQLServer.Limitations)
+ [Autorisations pour les tâches SQL Server](#CHAP_Source.SQLServer.Permissions)
+ [Conditions préalables pour l’utilisation de la réplication continue (CDC) à partir d’une source SQL Server](#CHAP_Source.SQLServer.Prerequisites)
+ [Méthodes de compression prises en charge pour SQL Server](#CHAP_Source.SQLServer.Compression)
+ [Utilisation de groupes de AlwaysOn disponibilité SQL Server autogérés](#CHAP_Source.SQLServer.AlwaysOn)
+ [Paramètres du point de terminaison lors de l'utilisation de SQL Server comme source pour AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)
+ [Types de données sources pour SQL Server](#CHAP_Source.SQLServer.DataTypes)
+ [Capture des modifications de données pour une réplication continue à partir de SQL Server](CHAP_Source.SQLServer.CDC.md)

## Limitations relatives à l'utilisation de SQL Server comme source pour AWS DMS
<a name="CHAP_Source.SQLServer.Limitations"></a>

Les limites suivantes s'appliquent lors de l'utilisation d'une base de données SQL Server comme source pour AWS DMS :
+ La propriété d'identité d'une colonne n'est pas migrée vers une colonne de base de données cible.
+ Le point de terminaison SQL Server ne prend pas en charge l'utilisation de tables contenant des colonnes éparses.
+ L'authentification Windows n'est pas prise en charge.
+ Les modifications apportées aux champs calculés dans un serveur SQL Server ne sont pas répliquées.
+ Les tables temporelles ne sont pas prises en charge.
+ L'échange de partition SQL Server n'est pas pris en charge.
+ Lorsque vous utilisez les utilitaires WRITETEXT et UPDATETEXT, les événements appliqués à la base de données source AWS DMS ne sont pas capturés.
+ Le modèle de langage de manipulation de données (DML) suivant n’est pas pris en charge. 

  ```
  SELECT * INTO new_table FROM existing_table
  ```
+ Lorsque vous utilisez SQL Server comme source, le chiffrement au niveau des colonnes n'est pas pris en charge.
+ AWS DMS ne prend pas en charge les audits au niveau du serveur sur SQL Server 2008 ou SQL Server 2008 R2 en tant que sources. Cela est dû à un problème connu avec SQL Server 2008 et 2008 R2. Par exemple, l'exécution de la commande suivante AWS DMS entraîne un échec.

  ```
  USE [master]
  GO 
  ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on)
  GO
  ```
+ Les colonnes de géométrie et de géographie ne sont pas prises en charge en mode lob complet lors de l'utilisation de SQL Server comme source. Utilisez plutôt le mode LOB limité ou définissez le paramètre de tâche `InlineLobMaxSize` pour utiliser le mode LOB en ligne.
+ Lorsque vous utilisez une base de données source Microsoft SQL Server dans une tâche de réplication, les définitions du diffuseur de publication de réplication SQL Server ne sont pas supprimées si vous supprimez la tâche. Un administrateur système Microsoft SQL Server doit supprimer ces définitions de Microsoft SQL Server.
+ La migration des données depuis les non-schema-bound vues et les données liées au schéma est prise en charge uniquement pour les tâches à chargement complet. 
+ La modification de noms de tables à l'aide de sp\$1rename n'est pas prise en charge (par exemple, `sp_rename 'Sales.SalesRegion', 'SalesReg;)`
+ La modification de noms de colonnes à l'aide de sp\$1rename n'est pas prise en charge (par exemple, `sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';`)
+ AWS DMS ne prend pas en charge le traitement des modifications pour définir ou annuler les valeurs par défaut des colonnes (en utilisant la `ALTER COLUMN SET DEFAULT` clause avec `ALTER TABLE` instructions).
+ AWS DMS ne prend pas en charge le traitement des modifications pour définir la nullité des colonnes (en utilisant la `ALTER COLUMN [SET|DROP] NOT NULL` clause avec des `ALTER TABLE` instructions).
+ Avec SQL Server 2012 et SQL Server 2014, lors de l’utilisation de la réplication DMS avec des groupes de disponibilité, la base de données de distribution ne peut pas être placée dans un groupe de disponibilité. SQL 2016 prend en charge le placement de la base de données de distribution dans un groupe de disponibilité, à l'exception des bases de données de distribution utilisées dans les topologies de fusion, bidirectionnelles ou de peer-to-peer réplication.
+ Pour les tables partitionnées, AWS DMS ne prend pas en charge les différents paramètres de compression des données pour chaque partition.
+ Lorsque vous insérez une valeur dans les types de données spatiales SQL Server (GEOGRAPHY et GEOMETRY), vous pouvez ignorer la propriété SRID (Spatial Reference System Identifier) ou spécifier un nombre différent. Lors de la réplication de tables contenant des types de données spatiales, AWS DMS remplace le SRID par le SRID par défaut (0 pour GEOMETRY et 4326 pour GEOGRAPHY).
+ Si votre base de données n'est pas configurée pour MS-REPLICATION ou MS-CDC, vous pouvez toujours capturer des tables dépourvues de clé primaire, mais seuls les événements INSERT/DELETE DML sont capturés. Les événements UPDATE et TRUNCATE TABLE sont ignorés.
+ Les index Columnstore ne sont pas pris en charge.
+ Les tables optimisées pour la mémoire (utilisant OLTP en mémoire) ne sont pas prises en charge.
+ Lors de la réplication d’une table avec une clé primaire composée de plusieurs colonnes, la mise à jour des colonnes de clé primaire pendant le chargement complet n’est pas prise en charge.
+ La durabilité retardée n'est pas prise en charge.
+ Le paramètre de point de terminaison `readBackupOnly=true` (attribut de connexion supplémentaire) ne fonctionne pas sur les instances source RDS for SQL Server en raison de la manière dont RDS effectue les sauvegardes.
+ `EXCLUSIVE_AUTOMATIC_TRUNCATION` ne fonctionne pas sur les instances source Amazon RDS SQL Server, car les utilisateurs de RDS ne sont pas autorisés à exécuter la procédure stockée SQL Server `sp_repldone`.
+ AWS DMS ne capture pas les commandes de troncation.
+ AWS DMS ne prend pas en charge la réplication à partir de bases de données lorsque la restauration accélérée des bases de données (ADR) est activée.
+ AWS DMS ne prend pas en charge la capture d'instructions en langage de définition de données (DDL) et en langage de manipulation de données (DML) au cours d'une seule transaction.
+ AWS DMS ne prend pas en charge la réplication des packages d'applications au niveau des données (DACPAC).
+ Les instructions UPDATE qui impliquent des clés primaires ou des index uniques et qui mettent à jour plusieurs lignes de données peuvent provoquer des conflits lorsque vous appliquez les modifications à la base de données cible. Cela peut se produire, par exemple, lorsque la base de données cible applique des mises à jour sous forme d’instructions INSERT et DELETE au lieu d’une seule instruction UPDATE. Avec le mode d’application optimisé par lots, la table peut être ignorée. Avec le mode d’application transactionnel, l’opération UPDATE peut entraîner des violations de contrainte. Pour éviter ce problème, rechargez la table correspondante. Vous pouvez également rechercher les enregistrements problématiques dans la table de contrôle Application des exceptions (`dmslogs.awsdms_apply_exceptions`) et les modifier manuellement dans la base de données cible. Pour de plus amples informations, veuillez consulter [Paramètres de réglage du traitement des modifications](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md).
+ AWS DMS ne prend pas en charge la réplication de tables et de schémas dont le nom inclut un caractère spécial de l'ensemble suivant.

  `\\ -- \n \" \b \r ' \t ;` 
+ Le masquage des données n'est pas pris en charge. AWS DMS migre les données masquées sans les masquer.
+ AWS DMS réplique jusqu'à 32 767 tables avec des clés primaires et jusqu'à 1 000 colonnes pour chaque table. Cela est dû au fait que AWS DMS crée un article de réplication SQL Server pour chaque table répliquée, et les articles de réplication de SQL Server présentent ces limites.
+ Lorsque vous utilisez la capture des données de modification (CDC), vous devez définir toutes les colonnes qui constituent un index unique en tant que `NOT NULL`. Si cette exigence n’est pas remplie, l’erreur système SQL Server 22838 se produit. 
+ Vous risquez de perdre des événements si SQL Server archive le journal des transactions actif vers le journal de sauvegarde ou les tronque du journal des transactions actif.

Les limitations suivantes s'appliquent lors de l'accès aux journaux de transactions de sauvegarde :
+ Les sauvegardes chiffrées ne sont pas prises en charge.
+ Les sauvegardes stockées sur une URL ou sur Windows Azure ne sont pas prises en charge.
+ AWS DMS ne prend pas en charge le traitement direct des sauvegardes du journal des transactions au niveau des fichiers à partir de dossiers partagés alternatifs.
+ Pour les sources Cloud SQL Server autres qu'Amazon RDS pour Microsoft SQL Server AWS DMS , prend en charge la réplication continue (CDC) uniquement avec le journal des transactions actif. Vous ne pouvez pas utiliser le journal de sauvegarde avec la CDC. Vous risquez de perdre des événements si SQL Server les archive du journal des transactions actif vers le journal de sauvegarde ou les tronque du journal des transactions actif avant que DMS ne puisse les lire. 
+ Pour les sources Amazon RDS for Microsoft SQL Server AWS DMS , les versions 3.5.2 et antérieures prennent en charge la réplication continue (CDC) uniquement avec le journal des transactions actif, car DMS ne peut pas accéder au journal de sauvegarde avec CDC. Vous risquez de perdre des événements si RDS pour SQL Server les archive du journal des transactions actif vers le journal de sauvegarde, ou les tronque du journal des transactions actif avant que DMS ne puisse les lire. Cette limitation ne s'applique pas aux AWS DMS versions 3.5.3 et supérieures.
+ AWS DMS ne prend pas en charge le proxy CDC pour Amazon RDS pour SQL Server en tant que source.
+ Si la source SQL Server devient indisponible pendant une tâche de chargement complet, AWS DMS il est possible que la tâche soit marquée comme terminée après plusieurs tentatives de reconnexion, même si la migration des données reste incomplète. Dans ce scénario, les tables cibles contiennent uniquement les enregistrements migrés avant la perte de connexion, ce qui peut créer des incohérences de données entre les systèmes source et cible. Pour garantir l'exhaustivité des données, vous devez soit redémarrer entièrement la tâche de chargement complet, soit recharger les tables spécifiques concernées par l'interruption de connexion.

## Autorisations pour les tâches SQL Server
<a name="CHAP_Source.SQLServer.Permissions"></a>

**Topics**
+ [Autorisations pour les tâches de chargement complet uniquement](#CHAP_Source.SQLServer.Permissions.FullLoad)
+ [Autorisations pour les tâches faisant l'objet d'une réplication continue](#CHAP_Source.SQLServer.Permissions.Ongoing)

### Autorisations pour les tâches de chargement complet uniquement
<a name="CHAP_Source.SQLServer.Permissions.FullLoad"></a>

Les autorisations suivantes sont requises pour effectuer des tâches de chargement complet uniquement. Notez qu’ AWS DMS ne crée pas l’identifiant de connexion `dms_user`. Pour plus d'informations sur la création d'un identifiant pour SQL Server, consultez la rubrique [Création d'un utilisateur de base](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16) de données dans *la documentation de Microsoft*.

```
USE db_name;
                
                CREATE USER dms_user FOR LOGIN dms_user; 
                ALTER ROLE [db_datareader] ADD MEMBER dms_user; 
                GRANT VIEW DATABASE STATE to dms_user;
                GRANT VIEW DEFINITION to dms_user;
                
                USE master;
                
                GRANT VIEW SERVER STATE TO dms_user;
```

### Autorisations pour les tâches faisant l'objet d'une réplication continue
<a name="CHAP_Source.SQLServer.Permissions.Ongoing"></a>

Les instances SQL Server autogérées peuvent être configurées pour une réplication continue à l'aide de DMS avec ou sans utilisation du `sysadmin` rôle. Pour les instances de SQL Server, où vous ne pouvez pas accorder le `sysadmin` rôle, assurez-vous que l'utilisateur DMS dispose des privilèges décrits ci-dessous.

**Configurer des autorisations pour une réplication continue à partir d'une base de données SQL Server autogérée**

1. Créez un nouveau compte SQL Server avec authentification par mot de passe à l'aide de SQL Server Management Studio (SSMS) ou comme décrit précédemment dans[Autorisations pour les tâches de chargement complet uniquement](#CHAP_Source.SQLServer.Permissions.FullLoad), par exemple,`self_managed_user`.

1. Exécutez les `GRANT` commandes suivantes : 

   ```
   GRANT VIEW SERVER STATE TO self_managed_user;
   
   USE msdb;
       GRANT SELECT ON msdb.dbo.backupset TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupmediafamily TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupfile TO self_managed_user;
       
   USE db_name;
       CREATE USER self_managed_user FOR LOGIN self_managed_user;
       ALTER ROLE [db_owner] ADD MEMBER self_managed_user;
       GRANT VIEW DEFINITION to self_managed_user;
   ```

1. Outre les autorisations précédentes, l'utilisateur a besoin de l'une des autorisations suivantes :
   + L'utilisateur doit être membre du rôle de serveur `sysadmin` fixe
   + Configurations et autorisations telles que décrites dans [Configuration de la réplication continue sur une instance SQL Server dans un environnement de groupe de disponibilité : sans le rôle sysadmin](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.ag) ou[Configuration de la réplication continue sur une instance SQL Server autonome : sans le rôle sysadmin](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.standalone), en fonction de votre configuration source.

#### Configurer des autorisations pour une réplication continue à partir d'une base de données SQL Server dans le cloud
<a name="CHAP_Source.SQLServer.Permissions.Cloud"></a>

Une instance SQL Server hébergée dans le cloud est une instance exécutée sur Amazon RDS pour Microsoft SQL Server, une instance gérée Azure SQL ou toute autre instance SQL Server cloud gérée prise en charge par DMS.

Créez un nouveau compte SQL Server avec authentification par mot de passe à l'aide de SQL Server Management Studio (SSMS) ou comme décrit précédemment dans[Autorisations pour les tâches de chargement complet uniquement](#CHAP_Source.SQLServer.Permissions.FullLoad), par exemple,`rds_user`.

Exécutez les commandes GRANT suivantes.

```
GRANT VIEW SERVER STATE TO rds_user;
```

Pour les sources Amazon RDS for Microsoft SQL Server, la version 3.5.3 et les versions ultérieures de DMS prennent en charge la lecture à partir des sauvegardes du journal des transactions. Pour garantir que DMS est en mesure d'accéder aux sauvegardes des journaux, en plus de ce qui précède, accordez des privilèges `master` utilisateur ou les privilèges suivants sur une source RDS SQL Server :

```
USE msdb;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_download TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_read TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_list_current_lsn TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_task_status TO rds_user;
    
USE db_name;
    CREATE USER rds_user FOR LOGIN rds_user;
    ALTER ROLE [db_owner] ADD MEMBER rds_user;
    GRANT VIEW DEFINITION to rds_user;
```

Pour les instances gérées SQL Amazon Azure, accordez les privilèges suivants :

```
GRANT SELECT ON msdb.dbo.backupset TO rds_user;
GRANT SELECT ON msdb.dbo.backupmediafamily TO rds_user;
GRANT SELECT ON msdb.dbo.backupfile TO rds_user;
```

## Conditions préalables pour l’utilisation de la réplication continue (CDC) à partir d’une source SQL Server
<a name="CHAP_Source.SQLServer.Prerequisites"></a>

Vous pouvez utiliser la réplication continue (capture des données de modification ou CDC) pour une base de données SQL Server autogérée sur site ou sur Amazon EC2, ou une base de données de cloud telle que Amazon RDS ou une instance gérée par Microsoft Azure SQL.

Les conditions suivantes s'appliquent précisément lorsque la réplication continue est utilisée avec une base de données SQL Server comme source pour AWS DMS :
+ SQL Server doit être configuré pour des sauvegardes complètes et vous devez effectuer une sauvegarde avant de commencer la réplication des données.
+ Le modèle de récupération doit être défini sur **Bulk logged** ou **Full**.
+ La sauvegarde SQL Server sur plusieurs disques n'est pas prise en charge. Si la sauvegarde est définie pour écrire la sauvegarde de la base de données dans plusieurs fichiers sur différents disques, AWS DMS vous ne pouvez pas lire les données et la AWS DMS tâche échoue.
+ Pour les sources SQL Server autogérées, les définitions du diffuseur de publication de réplication SQL Server pour la source utilisée dans une tâche de CDC DMS ne sont pas supprimées lorsque vous supprimez la tâche. Un administrateur système SQL Server doit supprimer ces définitions de SQL Server pour les sources autogérées.
+ Pendant le CDC, il AWS DMS doit consulter les sauvegardes du journal des transactions de SQL Server pour lire les modifications. AWS DMS ne prend pas en charge les sauvegardes du journal des transactions SQL Server créées à l'aide de logiciels de sauvegarde tiers qui *ne sont pas* au format natif. Pour prendre en charge les sauvegardes du journal des transactions qui *sont* au format natif et qui ont été créées à l’aide d’un logiciel de sauvegarde tiers, ajoutez l’attribut de connexion `use3rdPartyBackupDevice=Y` au point de terminaison source.
+ Pour les sources SQL Server autogérées, sachez que SQL Server ne capture pas les modifications sur les tables nouvellement créées tant qu'elles n'ont pas été publiées. Lorsque des tables sont ajoutées à une source SQL Server, AWS DMS gère la création de la publication. Toutefois, ce processus peut prendre plusieurs minutes. Les opérations réalisées sur les tables nouvellement créées pendant ce délai ne sont pas capturées ni répliquées sur la cible. 
+ AWS DMS la capture des données de modification nécessite l'activation de la journalisation complète des transactions dans SQL Server. Pour activer la journalisation complète des transactions dans SQL Server, activez MS-REPLICATION ou CHANGE DATA CAPTURE (CDC).
+ Les entrées *tlog* SQL Server ne seront pas marquées pour être réutilisées tant que la tâche de capture MS CDC n’aura pas traité ces modifications.
+ Les opérations CDC ne sont pas prises en charge sur les tables de mémoire optimisée. Cette limitation s’applique à SQL Server 2014 (lorsque la fonctionnalité a été introduite pour la première fois) et aux versions ultérieures.
+ AWS DMS la capture des données de modification nécessite une base de données de distribution par défaut sur Amazon EC2 ou On-Prem SQL Server comme source. Vous devez donc vous assurer d’avoir activé le distributeur lors de la configuration de la réplication MS pour les tables comportant des clés primaires.

## Méthodes de compression prises en charge pour SQL Server
<a name="CHAP_Source.SQLServer.Compression"></a>

Notez ce qui suit concernant la prise en charge des méthodes de compression SQL Server dans AWS DMS :
+ AWS DMS prend en charge la Row/Page compression dans SQL Server version 2008 et versions ultérieures.
+ AWS DMS ne prend pas en charge le format de stockage Vardecimal.
+ AWS DMS ne prend pas en charge les colonnes clairsemées et la compression de structure en colonnes.

## Utilisation de groupes de AlwaysOn disponibilité SQL Server autogérés
<a name="CHAP_Source.SQLServer.AlwaysOn"></a>

Les groupes de disponibilité SQL Server Always On assurent la haute disponibilité et la reprise après sinistre comme alternative au niveau de l’entreprise à la mise en miroir de base de données. 

Dans AWS DMS, vous pouvez migrer les modifications à partir d'une seule réplique de groupe de disponibilité principal ou secondaire.

### Utilisation du réplica de groupe de disponibilité principal
<a name="CHAP_Source.SQLServer.AlwaysOn.Primary"></a>

 

**Pour utiliser le groupe de disponibilité principal comme source dans AWS DMS, procédez comme suit :**

1. Activez l’option de distribution pour toutes les instances de SQL Server dans vos réplicas de disponibilité. Pour de plus amples informations, veuillez consulter [Configuration de la réplication continue sur une instance SQL Server autogérée](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC).

1. Dans la AWS DMS console, ouvrez les paramètres de la base de données source SQL Server. Pour **Nom du serveur**, spécifiez le nom DNS (Domain Name Service) ou l’adresse IP qui a été configuré(e) pour l’écouteur du groupe de disponibilité. 

Lorsque vous démarrez une AWS DMS tâche pour la première fois, le démarrage peut prendre plus de temps que d'habitude. Cette lenteur est due au fait que la création des articles de la table est dupliquée par le serveur du groupe de disponibilité. 

### Utilisation d’un réplica de groupe de disponibilité secondaire
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary"></a>

**Pour utiliser un groupe de disponibilité secondaire comme source dans AWS DMS, procédez comme suit :**

1. Utilisez les mêmes informations d'identification pour vous connecter à des répliques individuelles que celles utilisées par l'utilisateur du point de terminaison AWS DMS source.

1. Assurez-vous que votre instance de AWS DMS réplication peut résoudre les noms DNS de toutes les répliques existantes et s'y connecter. Vous pouvez utiliser la requête SQL suivante pour obtenir les noms DNS de tous vos réplicas.

   ```
   select ar.replica_server_name, ar.endpoint_url from sys.availability_replicas ar
   JOIN sys.availability_databases_cluster adc
   ON adc.group_id = ar.group_id AND adc.database_name = '<source_database_name>';
   ```

1. Lorsque vous créez le point de terminaison source, spécifiez le nom DNS de l’écouteur du groupe de disponibilité pour le **nom du serveur** du point de terminaison ou pour l’**adresse du serveur** du secret de point de terminaison. Pour plus d’informations sur les écouteurs de groupe de disponibilité, consultez [Qu’est-ce qu’un écouteur de groupe de disponibilité ?](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-listener-overview?view=sql-server-ver15) dans la documentation de SQL Server.

   Vous pouvez utiliser un serveur DNS public ou un serveur DNS sur site pour résoudre l’écouteur du groupe de disponibilité, le réplica principal et les réplicas secondaires. Pour utiliser un serveur DNS sur site, configurez Amazon Route 53 Resolver. Pour de plus amples informations, veuillez consulter [Utilisation de votre propre serveur de noms sur site](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver).

1. Ajoutez les attributs de connexion supplémentaires suivants au point de terminaison source.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.SQLServer.html)

1. Activez l’option de distribution sur tous les réplicas de votre groupe de disponibilité. Ajoutez tous les nœuds à la liste des distributeurs. Pour de plus amples informations, veuillez consulter [Pour configurer la distribution](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC.Setup).

1. Exécutez la requête suivante sur le réplica principal en lecture-écriture pour activer la publication de la base de données. Vous n’exécutez cette requête qu’une seule fois pour la base de données. 

   ```
   sp_replicationdboption @dbname = N'<source DB name>', @optname = N'publish', @value = N'true';
   ```



#### Limitations
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.limitations"></a>

Les limitations de l’utilisation d’un réplica de groupe de disponibilité secondaire sont les suivantes :
+ AWS DMS ne prend pas en charge Safeguard lors de l'utilisation d'une réplique de groupe de disponibilité en lecture seule comme source. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation de SQL Server comme source pour AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib).
+ AWS DMS ne prend pas en charge l'attribut de connexion `setUpMsCdcForTables` supplémentaire lors de l'utilisation d'une réplique de groupe de disponibilité en lecture seule comme source. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation de SQL Server comme source pour AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib).
+ AWS DMS peut utiliser une réplique de groupe de disponibilité secondaire autogérée comme base de données source pour une réplication continue (capture des données de modification, ou CDC) à partir de la version 3.4.7. Les réplicas de lecture SQL Server Multi-AZ cloud ne sont pas pris en charge. Si vous utilisez des versions précédentes de AWS DMS, assurez-vous d'utiliser la réplique du groupe de disponibilité principal comme base de données source pour CDC.

#### Basculement vers d’autres nœuds
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.failover"></a>

Si vous définissez l'attribut de connexion `ApplicationIntent` supplémentaire pour votre point de terminaison sur`ReadOnly`, votre AWS DMS tâche se connecte au nœud en lecture seule ayant la priorité de routage en lecture seule la plus élevée. Il bascule ensuite vers les autres nœuds en lecture seule de votre groupe de disponibilité lorsque le nœud en lecture seule ayant la priorité la plus élevée n’est pas disponible. Si vous ne le définissez pas`ApplicationIntent`, votre AWS DMS tâche se connecte uniquement au nœud principal (lecture/écriture) de votre groupe de disponibilité.

## Paramètres du point de terminaison lors de l'utilisation de SQL Server comme source pour AWS DMS
<a name="CHAP_Source.SQLServer.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données source SQL Server comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec SQL Server en tant que source sont indiqués dans le tableau suivant.

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

## Types de données sources pour SQL Server
<a name="CHAP_Source.SQLServer.DataTypes"></a>

La migration de données qui utilise SQL Server comme source AWS DMS prend en charge la plupart des types de données SQL Server. Le tableau suivant indique les types de données source SQL Server pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour en savoir plus sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section concernant le point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Types de données SQL Server  |  AWS DMS types de données  | 
| --- | --- | 
|  BIGINT  |  INT8  | 
|  BIT  |  BOOLEAN  | 
|  DECIMAL  |  NUMERIC  | 
|  INT  |  INT4  | 
|  MONEY  |  NUMERIC  | 
|  NUMERIC (p,s)  |  NUMERIC   | 
|  SMALLINT  |  INT2  | 
|  SMALLMONEY  |  NUMERIC  | 
|  TINYINT  |  UINT1  | 
|  REAL  |  REAL4  | 
|  FLOAT  |  REAL8  | 
|  DATETIME  |  DATETIME  | 
|  DATETIME2 (SQL Server 2008 et versions ultérieures)  |  DATETIME  | 
|  SMALLDATETIME  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIMEOFFSET  |  WSTRING  | 
|  CHAR  |  CHAÎNE  | 
|  VARCHAR  |  CHAÎNE  | 
|  VARCHAR (max)  |  CLOB TEXT Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données CLOB pour une tâche spécifique. Pour les tables SQL Server, AWS DMS met à jour les colonnes LOB de la cible, même pour les instructions UPDATE qui ne modifient pas la valeur de la colonne LOB dans SQL Server. Pendant le CDC, AWS DMS prend en charge les types de données CLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR (length)  |  WSTRING  | 
|  NVARCHAR (max)  |  NCLOB NTEXT Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation de SupportLobs pour une tâche spécifique. Pour plus d’informations sur l’activation de la prise en charge des objets LOB, consultez [Configuration du support LOB pour les bases de données sources dans une tâche AWS DMS](CHAP_Tasks.LOBSupport.md).  Pour les tables SQL Server, AWS DMS met à jour les colonnes LOB de la cible, même pour les instructions UPDATE qui ne modifient pas la valeur de la colonne LOB dans SQL Server. Pendant le CDC, AWS DMS prend en charge les types de données CLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  BINAIRE  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  VARBINARY (max)  |  BLOB IMAGE Pour les tables SQL Server, AWS DMS met à jour les colonnes LOB de la cible, même pour les instructions UPDATE qui ne modifient pas la valeur de la colonne LOB dans SQL Server. Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données BLOB pour une tâche spécifique. AWS DMS prend en charge les types de données BLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  TIMESTAMP  |  BYTES  | 
|  UNIQUEIDENTIFIER  |  CHAÎNE  | 
|  HIERARCHYID   |  Utilisez HIERARCHYID lors de la réplication sur un point de terminaison cible SQL Server. Utilisez WSTRING (250) lors de la réplication sur tous les autres points de terminaison cibles.  | 
|  xml  |  NCLOB Pour les tables SQL Server, AWS DMS met à jour les colonnes LOB de la cible, même pour les instructions UPDATE qui ne modifient pas la valeur de la colonne LOB dans SQL Server. Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données NCLOB pour une tâche spécifique. Pendant le CDC, AWS DMS prend en charge les types de données NCLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  GEOMETRY  |  Utilisez GEOMETRY lors de la réplication de points de terminaison cibles qui prennent en charge ce type de données. Utilisez CLOB lors de la réplication de points de terminaison cibles qui ne prennent pas en charge ce type de données.  | 
|  GEOGRAPHY  |  Utilisez GEOGRAPHY lors de la réplication de points de terminaison cibles qui prennent en charge ce type de données. Utilisez CLOB lors de la réplication de points de terminaison cibles qui ne prennent pas en charge ce type de données.  | 

AWS DMS ne prend pas en charge les tables qui incluent des champs contenant les types de données suivants. 
+ CURSOR
+ SQL\$1VARIANT
+ TABLE

**Note**  
Les types de données définis par l'utilisateur sont pris en charge selon leur type de base. Par exemple, un type de données défini par l'utilisateur basé sur DATETIME est traité en tant que type de données DATETIME.

# Capture des modifications de données pour une réplication continue à partir de SQL Server
<a name="CHAP_Source.SQLServer.CDC"></a>

Cette rubrique décrit comment configurer la réplication CDC sur une source SQL Server.

**Topics**
+ [Capture des modifications de données pour SQL Server autogéré sur site ou sur Amazon EC2](#CHAP_Source.SQLServer.CDC.Selfmanaged)
+ [Configuration de la réplication continue sur une instance de base de données SQL Server cloud](#CHAP_Source.SQLServer.Configuration)

## Capture des modifications de données pour SQL Server autogéré sur site ou sur Amazon EC2
<a name="CHAP_Source.SQLServer.CDC.Selfmanaged"></a>

Pour capturer les modifications à partir d’une base de données Microsoft SQL Server source, assurez-vous que la base de données est configurée pour des sauvegardes complètes. Configurez la base de données en mode récupération complète ou en mode journalisation en bloc.

Pour une source SQL Server autogérée, AWS DMS utilise ce qui suit :

**Réplication Microsoft**  
Pour capturer les modifications pour des tables comportant des clés primaires. Vous pouvez le configurer automatiquement en octroyant des privilèges d'administrateur système à l'utilisateur du AWS DMS point de terminaison sur l'instance SQL Server source. Vous pouvez également suivre les étapes décrites dans cette section pour préparer la source et utiliser un utilisateur ne disposant pas des privilèges d'administrateur système pour le AWS DMS point de terminaison.

**MS-CDC**  
Pour capturer les modifications pour des tables sans clés primaires. Activez MS-CDC au niveau de la base de données et individuellement pour toutes les tables.

Lorsque vous configurez une base de données SQL Server pour la réplication continue (CDC), vous pouvez procéder de différentes manières :
+ Configurez la réplication continue en utilisant le rôle sysadmin.
+ Configurez la réplication continue pour qu'elle n'utilise pas le rôle sysadmin.

**Note**  
Vous pouvez utiliser le script suivant pour rechercher toutes les tables sans clé primaire ou unique :  

```
USE [DBname]
SELECT SCHEMA_NAME(schema_id) AS schema_name, name AS table_name
FROM sys.tables
WHERE OBJECTPROPERTY(object_id, 'TableHasPrimaryKey') = 0
        AND  OBJECTPROPERTY(object_id, 'TableHasUniqueCnst') = 0
ORDER BY schema_name, table_name;
```

### Configuration de la réplication continue sur une instance SQL Server autogérée
<a name="CHAP_Source.SQLServer.CDC.MSCDC"></a>

Cette section contient des informations sur la configuration de la réplication continue sur une instance SQL Server autogérée en utilisant ou non le rôle sysadmin.

**Topics**
+ [Configuration de la réplication continue sur une instance SQL Server autogérée : Utilisation du rôle sysadmin](#CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin)
+ [Configuration de la réplication continue sur une instance SQL Server autonome : sans le rôle sysadmin](#CHAP_SupportScripts.SQLServer.standalone)
+ [Configuration de la réplication continue sur une instance SQL Server dans un environnement de groupe de disponibilité : sans le rôle sysadmin](#CHAP_SupportScripts.SQLServer.ag)

#### Configuration de la réplication continue sur une instance SQL Server autogérée : Utilisation du rôle sysadmin
<a name="CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin"></a>

AWS DMS la réplication continue pour SQL Server utilise la réplication native de SQL Server pour les tables dotées de clés primaires et la capture des données de modification (CDC) pour les tables sans clés primaires.

Avant de configurer la réplication continue, consultez [Conditions préalables pour l’utilisation de la réplication continue (CDC) à partir d’une source SQL Server](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites). 

Pour les tables avec des clés primaires, AWS DMS vous pouvez généralement configurer les artefacts requis sur la source. En revanche, pour les instances SQL Server source autogérées, assurez-vous de configurer manuellement la distribution SQL Server en premier. Ensuite, les utilisateurs de la AWS DMS source disposant d'une autorisation d'administrateur système peuvent créer automatiquement la publication pour les tables avec des clés primaires.

Pour vérifier si la distribution a déjà été configurée, exécutez la commande suivante.

```
sp_get_distributor
```

Si le résultat est `NULL` pour la distribution de colonnes, cela signifie que la distribution n’est pas configurée. Vous pouvez procéder comme suit pour configurer la distribution.<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup"></a>

**Pour configurer la distribution**

1. Connectez-vous à la base de données source SQL Server à l’aide de l’outil SQL Server Management Studio (SSMS).

1. Ouvrez le menu contextuel (clic droit) pour le dossier **Replication**, puis choisissez **Configurer la distribution**. L’assistant Configurer la distribution s’affiche. 

1. Suivez les instructions de l’assistant pour entrer les valeurs par défaut et créer la distribution.<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup.CDC"></a>

**Pour configurer la CDC**

AWS DMS la version 3.4.7 et les versions ultérieures peuvent configurer MS CDC pour votre base de données et toutes vos tables automatiquement si vous n'utilisez pas de réplique en lecture seule. Pour utiliser cette fonctionnalité, définissez l’ECA `SetUpMsCdcForTables` sur true. Pour plus d'informations sur ECAs, voir[Paramètres de point de terminaison](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.ConnectionAttrib).

Pour les versions AWS DMS antérieures à 3.4.7, ou pour une réplique en lecture seule en tant que source, effectuez les opérations suivantes :

1. Pour les tables sans clés primaires, configurez MS-CDC pour la base de données. Pour ce faire, utilisez un compte auquel le rôle sysadmin est affecté et exécutez la commande suivante.

   ```
   use [DBname]
   EXEC sys.sp_cdc_enable_db
   ```

1. Configurez ensuite MS-CDC pour chacune des tables sources. Pour chaque table disposant de clés uniques mais ne disposant pas de clé primaire, exécutez la requête suivante afin de configurer MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

1. Pour chaque table ne disposant pas de clé primaire ou de clé unique, exécutez la requête suivante afin de configurer MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

Pour plus d'informations sur la configuration de MS-CDC pour des tables spécifiques, consultez la [documentation SQL Server](https://msdn.microsoft.com/en-us/library/cc627369.aspx). 

#### Configuration de la réplication continue sur une instance SQL Server autonome : sans le rôle sysadmin
<a name="CHAP_SupportScripts.SQLServer.standalone"></a>

Cette section décrit comment configurer la réplication continue pour une source de base de données SQL Server autonome qui n’exige pas que le compte d’utilisateur dispose des privilèges sysadmin.

**Note**  
Après avoir exécuté les étapes de cette section, l’utilisateur DMS qui n’est pas un administrateur système sera autorisé à effectuer les étapes suivantes :  
Lire les modifications du journal de transactions en ligne
Accéder au disque pour lire les modifications des fichiers de sauvegarde des journaux de transactions
Ajouter ou modifier la publication utilisée par DMS
Ajouter des articles à la publication

1. Configurez Microsoft SQL Server pour la réplication comme décrit dans [Capture des modifications de données pour une réplication continue à partir de SQL Server](#CHAP_Source.SQLServer.CDC).

1. Activez la réplication Microsoft sur la base de données source. Cela peut être fait manuellement ou en exécutant la tâche une fois en tant qu’utilisateur sysadmin.

1. Créez le schéma `awsdms` sur la base de données source à l’aide du script suivant :

   ```
   use master
   go
   create schema awsdms
   go
   
   
   -- Create the table valued function [awsdms].[split_partition_list] on the Master database, as follows:
   USE [master]
   GO
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   go
   
   if (object_id('[awsdms].[split_partition_list]','TF')) is not null
   
   drop function [awsdms].[split_partition_list];
   
   go
   
   create function [awsdms].[split_partition_list]
   
   (
   
   @plist varchar(8000), --A delimited list of partitions
   
   @dlm nvarchar(1) --Delimiting character
   
   )
   
   returns @partitionsTable table --Table holding the BIGINT values of the string fragments
   
   (
   
   pid bigint primary key
   
   )   
   
   as
   
   begin
   
   declare @partition_id bigint;
   
   declare @dlm_pos integer;
   
   declare @dlm_len integer;
   
   set @dlm_len = len(@dlm);
   
   while (charindex(@dlm,@plist)>0)
   
   begin
   
   set @dlm_pos = charindex(@dlm,@plist);
   
   set @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
   
   insert into @partitionsTable (pid) values (@partition_id)
   
   set @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
   
   end
   
   set @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
   
   insert into @partitionsTable (pid) values ( @partition_id );
   
   return
   
   end
   
   GO
   ```

1. Créez la procédure `[awsdms].[rtm_dump_dblog]` sur la base de données Master à l’aide du script suivant :

   ```
   use [MASTER]
   
   go
   
   if (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null drop procedure [awsdms].[rtm_dump_dblog];
   go
   
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   GO
   
   
   
   CREATE procedure [awsdms].[rtm_dump_dblog]
   
   (
   
   @start_lsn varchar(32),
   
   @seqno integer,
   
   @filename varchar(260),
   
   @partition_list varchar(8000), -- A comma delimited list: P1,P2,... Pn
   
   @programmed_filtering integer,
   
   @minPartition bigint,
   
   @maxPartition bigint
   
   )
   
   as begin
   
   declare @start_lsn_cmp varchar(32); -- Stands against the GT comparator
   
   SET NOCOUNT ON -- – Disable "rows affected display"
   
   set @start_lsn_cmp = @start_lsn;
   
   if (@start_lsn_cmp) is null
   
   set @start_lsn_cmp = '00000000:00000000:0000';
   
   if (@partition_list is null)
   
   begin
   
   RAISERROR ('Null partition list waspassed',16,1);
   
   return
   
   end
   
   if (@start_lsn) is not null
   
   set @start_lsn = '0x'+@start_lsn;
   
   if (@programmed_filtering=0)
   
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1]
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   else
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1] -- After Image
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   
   SET NOCOUNT OFF -- Re-enable "rows affected display"
   
   end
   
   GO
   ```

1. Créez le certificat sur la base de données Master à l’aide du script suivant :

   ```
   Use [master]
   Go
   
   CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert] ENCRYPTION BY PASSWORD = N'@5trongpassword'
   
   WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions';
   ```

1. Créez la connexion à partir du certificat à l’aide du script suivant : 

   ```
   Use [master]
   Go
   
   CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE [awsdms_rtm_dump_dblog_cert];
   ```

1. Ajoutez la connexion au rôle serveur sysadmin à l’aide du script suivant :

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
   ```

1. Ajoutez la signature à [master].[awsdms].[rtm\$1dump\$1dblog] utilisant le certificat, à l’aide du script suivant : 

   ```
   Use [master]
   GO
   ADD SIGNATURE
   TO [master].[awsdms].[rtm_dump_dblog] BY CERTIFICATE [awsdms_rtm_dump_dblog_cert] WITH PASSWORD = '@5trongpassword';
   ```
**Note**  
Si vous recréez la procédure stockée, vous devez ajouter à nouveau la signature.

1. Créez [awsdms]. [rtm\$1position\$11st\$1timestamp] dans la base de données principale à l’aide du script suivant :

   ```
   use [master]
       if object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
       DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
       go
       create procedure [awsdms].[rtm_position_1st_timestamp]
       (
       @dbname                sysname,      -- Database name
       @seqno                 integer,      -- Backup set sequence/position number within file
       @filename              varchar(260), -- The backup filename
       @1stTimeStamp          varchar(40)   -- The timestamp to position by
       ) 
       as begin
   
       SET NOCOUNT ON       -- Disable "rows affected display"
   
       declare @firstMatching table
       (
       cLsn varchar(32),
       bTim datetime
       )
   
       declare @sql nvarchar(4000)
       declare @nl                       char(2)
       declare @tb                       char(2)
       declare @fnameVar                 nvarchar(254) = 'NULL'
   
       set @nl  = char(10); -- New line
       set @tb  = char(9)   -- Tab separator
   
       if (@filename is not null)
       set @fnameVar = ''''+@filename +''''
   
       set @sql='use ['+@dbname+'];'+@nl+
       'select top 1 [Current LSN],[Begin Time]'+@nl+
       'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @fnameVar+','+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default)'+@nl+
       'where operation=''LOP_BEGIN_XACT''' +@nl+
       'and [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
   
       --print @sql
       delete from  @firstMatching 
       insert into @firstMatching  exec sp_executesql @sql    -- Get them all
   
       select top 1 cLsn as [matching LSN],convert(varchar,bTim,121) as [matching Timestamp] from @firstMatching;
   
       SET NOCOUNT OFF      -- Re-enable "rows affected display"
   
       end
       GO
   ```

1. Créez le certificat sur la base de données Master à l’aide du script suivant :

   ```
   Use [master]
   Go
   CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
   ENCRYPTION BY PASSWORD = '@5trongpassword'
   WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
   ```

1. Créez la connexion à partir du certificat à l’aide du script suivant :

   ```
   Use [master]
   Go
   CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert];
   ```

1. Ajoutez la connexion au rôle sysadmin à l’aide du script suivant :

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
   ```

1. Ajoutez la signature à [master].[awsdms].[rtm\$1position\$11st\$1timestamp] en utilisant le certificat à l’aide du script suivant :

   ```
   Use [master]
       GO
       ADD SIGNATURE
       TO [master].[awsdms].[rtm_position_1st_timestamp]
       BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
       WITH PASSWORD = '@5trongpassword';
   ```

1. Accordez à l’utilisateur DMS l’accès lui permettant d’exécuter la nouvelle procédure stockée à l’aide du script suivant :

   ```
   use master
   go
   GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dms_user;
   ```

1. Créez un utilisateur avec les autorisations et les rôles suivants dans chacune des bases de données suivantes :
**Note**  
Vous devez créer le compte d’utilisateur dmsnosysadmin avec le même SID sur chaque réplica. La requête SQL suivante peut aider à vérifier la valeur SID du compte dmsnosysadmin sur chaque réplica. Pour plus d’informations sur la création d’un utilisateur, consultez [CREATE USER (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql) dans la [documentation sur Microsoft SQL Server](https://learn.microsoft.com/en-us/sql/). Pour plus d’informations sur la création de comptes d’utilisateur SQL pour la base de données Azure SQL, consultez [Géoréplication active](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview).

   ```
   use master
   go
   grant select on sys.fn_dblog to [DMS_user]
   grant view any definition to [DMS_user]
   grant view server state to [DMS_user]--(should be granted to the login).
   grant execute on sp_repldone to [DMS_user]
   grant execute on sp_replincrementlsn to [DMS_user]
   grant execute on sp_addpublication to [DMS_user]
   grant execute on sp_addarticle to [DMS_user]
   grant execute on sp_articlefilter to [DMS_user]
   grant select on [awsdms].[split_partition_list] to [DMS_user]
   grant execute on [awsdms].[rtm_dump_dblog] to [DMS_user]
   ```

   ```
   use msdb
   go
   grant select on msdb.dbo.backupset to self_managed_user
   grant select on msdb.dbo.backupmediafamily to self_managed_user
   grant select on msdb.dbo.backupfile to self_managed_user
   ```

   Exécutez le script suivant sur la base de données source :

   ```
   use Source_DB
       Go
       EXEC sp_addrolemember N'db_owner', N'DMS_user'
   ```

1. Enfin, ajoutez un attribut de connexion supplémentaire (ECA) au point de terminaison SQL Server source :

   ```
   enableNonSysadminWrapper=true;
   ```

#### Configuration de la réplication continue sur une instance SQL Server dans un environnement de groupe de disponibilité : sans le rôle sysadmin
<a name="CHAP_SupportScripts.SQLServer.ag"></a>

Cette section décrit comment configurer la réplication continue pour une source de base de données SQL Server dans un environnement de groupe de disponibilité qui n’exige pas que le compte d’utilisateur dispose des privilèges sysadmin.

**Note**  
Après avoir exécuté les étapes de cette section, l’utilisateur DMS qui n’est pas un administrateur système sera autorisé à effectuer les étapes suivantes :  
Lire les modifications du journal de transactions en ligne
Accéder au disque pour lire les modifications des fichiers de sauvegarde des journaux de transactions
Ajouter ou modifier la publication utilisée par DMS
Ajouter des articles à la publication

**Pour configurer la réplication continue sans utiliser l’utilisateur sysadmin dans un environnement de groupe de disponibilité**

1. Configurez Microsoft SQL Server pour la réplication comme décrit dans [Capture des modifications de données pour une réplication continue à partir de SQL Server](#CHAP_Source.SQLServer.CDC).

1. Activez la réplication Microsoft sur la base de données source. Cela peut être fait manuellement ou en exécutant la tâche une fois en ayant recours à un utilisateur sysadmin.
**Note**  
Vous devez configurer le distributeur de réplication Microsoft comme local ou de manière à autoriser l’accès aux utilisateurs non sysadmin via le serveur lié associé.

1. Si l’option de point de terminaison **Utiliser exclusivement sp\$1repldone au sein d’une seule tâche** est activée, arrêtez la tâche Log Reader de réplication Microsoft.

1. Sur chaque réplica, procédez comme suit :

   1. Créez le schéma `[awsdms]`[awsdms] dans la base de données Master :

      ```
      CREATE SCHEMA [awsdms]
      ```

   1. Créez la fonction à valeur de table `[awsdms].[split_partition_list]` sur la base de données Master :

      ```
      USE [master]
      GO
      
      SET ansi_nulls on
      GO
        
      SET quoted_identifier on
      GO
      
      IF (object_id('[awsdms].[split_partition_list]','TF')) is not null
        DROP FUNCTION [awsdms].[split_partition_list];
      GO
      
      CREATE FUNCTION [awsdms].[split_partition_list] 
      ( 
        @plist varchar(8000),    --A delimited list of partitions    
        @dlm nvarchar(1)    --Delimiting character
      ) 
      RETURNS @partitionsTable table --Table holding the BIGINT values of the string fragments
      (
        pid bigint primary key
      ) 
      AS 
      BEGIN
        DECLARE @partition_id bigint;
        DECLARE @dlm_pos integer;
        DECLARE @dlm_len integer;  
        SET @dlm_len = len(@dlm);
        WHILE (charindex(@dlm,@plist)>0)
        BEGIN 
          SET @dlm_pos = charindex(@dlm,@plist);
          SET @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
          INSERT into @partitionsTable (pid) values (@partition_id)
          SET @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
        END 
        SET @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
        INSERT into @partitionsTable (pid) values (  @partition_id  );
        RETURN
      END
      GO
      ```

   1. Créez la procédure `[awsdms].[rtm_dump_dblog]` sur la base de données Master :

      ```
      USE [MASTER] 
      GO
      
      IF (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null
        DROP PROCEDURE [awsdms].[rtm_dump_dblog]; 
      GO
      
      SET ansi_nulls on
      GO 
      
      SET quoted_identifier on 
      GO
                                          
      CREATE PROCEDURE [awsdms].[rtm_dump_dblog]
      (
        @start_lsn            varchar(32),
        @seqno                integer,
        @filename             varchar(260),
        @partition_list       varchar(8000), -- A comma delimited list: P1,P2,... Pn
        @programmed_filtering integer,
        @minPartition         bigint,
        @maxPartition         bigint
      ) 
      AS 
      BEGIN
      
        DECLARE @start_lsn_cmp varchar(32); -- Stands against the GT comparator
      
        SET NOCOUNT ON  -- Disable "rows affected display"
      
        SET @start_lsn_cmp = @start_lsn;
        IF (@start_lsn_cmp) is null
          SET @start_lsn_cmp = '00000000:00000000:0000';
      
        IF (@partition_list is null)
          BEGIN
            RAISERROR ('Null partition list was passed',16,1);
            return
            --set @partition_list = '0,';    -- A dummy which is never matched
          END
      
        IF (@start_lsn) is not null
          SET @start_lsn = '0x'+@start_lsn;
      
        IF (@programmed_filtering=0)
          SELECT
            [Current LSN],
            [operation],
            [Context],
            [Transaction ID],
            [Transaction Name],
            [Begin Time],
            [End Time],
            [Flag Bits],
            [PartitionID],
            [Page ID],
            [Slot ID],
            [RowLog Contents 0],
            [Log Record],
            [RowLog Contents 1] -- After Image
          FROM
            fn_dump_dblog (
              @start_lsn, NULL, N'DISK', @seqno, @filename,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default)
          WHERE 
            [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND       
                [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
              )
            OR
            ([operation] = 'LOP_HOBT_DDL')
          )
          ELSE
            SELECT
              [Current LSN],
              [operation],
              [Context],
              [Transaction ID],
              [Transaction Name],
              [Begin Time],
              [End Time],
              [Flag Bits],
              [PartitionID],
              [Page ID],
              [Slot ID],
              [RowLog Contents 0],
              [Log Record],
              [RowLog Contents 1] -- After Image
            FROM
              fn_dump_dblog (
                @start_lsn, NULL, N'DISK', @seqno, @filename,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default)
            WHERE [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
              )
              OR
              ([operation] = 'LOP_HOBT_DDL')
            )
            SET NOCOUNT OFF -- Re-enable "rows affected display"
      END
      GO
      ```

   1. Créez un certificat sur la base de données Master :

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions'
      ```

   1. Créez une connexion à partir du certificat :

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE
        [awsdms_rtm_dump_dblog_cert];
      ```

   1. Ajoutez la connexion au rôle serveur sysadmin :

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
      ```

   1. Ajoutez la signature à la procédure [master].[awsdms].[rtm\$1dump\$1dblog] utilisant le certificat :

      ```
      USE [master]
      GO
      
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_dump_dblog]
        BY CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**Note**  
Si vous recréez la procédure stockée, vous devez ajouter à nouveau la signature.

   1. Créez la procédure `[awsdms].[rtm_position_1st_timestamp]` sur la base de données Master :

      ```
      USE [master]
      IF object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
        DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
      GO
      CREATE PROCEDURE [awsdms].[rtm_position_1st_timestamp]
      (
        @dbname                sysname,      -- Database name
        @seqno                 integer,      -- Backup set sequence/position number within file
        @filename              varchar(260), -- The backup filename
        @1stTimeStamp          varchar(40)   -- The timestamp to position by
      ) 
      AS 
      BEGIN
        SET NOCOUNT ON       -- Disable "rows affected display"
      
        DECLARE @firstMatching table
        (
          cLsn varchar(32),
          bTim datetime
        )
        DECLARE @sql nvarchar(4000)
        DECLARE @nl                       char(2)
        DECLARE @tb                       char(2)
        DECLARE @fnameVar                 sysname = 'NULL'
      
        SET @nl  = char(10); -- New line
        SET @tb  = char(9)   -- Tab separator
      
        IF (@filename is not null)
          SET @fnameVar = ''''+@filename +''''
        SET @filename = ''''+@filename +''''
        SET @sql='use ['+@dbname+'];'+@nl+
          'SELECT TOP 1 [Current LSN],[Begin Time]'+@nl+
          'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @filename +','+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default)'+@nl+
          'WHERE operation=''LOP_BEGIN_XACT''' +@nl+
          'AND [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
      
          --print @sql
          DELETE FROM @firstMatching 
          INSERT INTO @firstMatching  exec sp_executesql @sql    -- Get them all
          SELECT TOP 1 cLsn as [matching LSN],convert(varchar,bTim,121) AS[matching Timestamp] FROM @firstMatching;
      
          SET NOCOUNT OFF      -- Re-enable "rows affected display"
      
      END
      GO
      ```

   1. Créez un certificat sur la base de données Master :

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
      ```

   1. Créez une connexion à partir du certificat :

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE
        [awsdms_rtm_position_1st_timestamp_cert];
      ```

   1. Ajoutez la connexion au rôle serveur sysadmin :

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
      ```

   1. Ajoutez la signature à la procédure `[master].[awsdms].[rtm_position_1st_timestamp]` utilisant le certificat :

      ```
      USE [master]
      GO
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_position_1st_timestamp]
        BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**Note**  
Si vous recréez la procédure stockée, vous devez ajouter à nouveau la signature.

   1. Créez un utilisateur avec les éléments suivants permissions/roles dans chacune des bases de données suivantes :
**Note**  
Vous devez créer le compte d’utilisateur dmsnosysadmin avec le même SID sur chaque réplica. La requête SQL suivante peut aider à vérifier la valeur SID du compte dmsnosysadmin sur chaque réplica. Pour plus d’informations sur la création d’un utilisateur, consultez [CREATE USER (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql) dans la [documentation sur Microsoft SQL Server](https://learn.microsoft.com/en-us/sql/). Pour plus d’informations sur la création de comptes d’utilisateur SQL pour la base de données Azure SQL, consultez [Géoréplication active](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview).

      ```
      SELECT @@servername servername, name, sid, create_date, modify_date
        FROM sys.server_principals
        WHERE name = 'dmsnosysadmin';
      ```

   1. Accordez des autorisations sur la base de données Master pour chaque réplica :

      ```
      USE master
      GO 
      
      GRANT select on sys.fn_dblog to dmsnosysadmin;
      GRANT view any definition to dmsnosysadmin;
      GRANT view server state to dmsnosysadmin -- (should be granted to the login).
      GRANT execute on sp_repldone to dmsnosysadmin;
      GRANT execute on sp_replincrementlsn to dmsnosysadmin;
      GRANT execute on sp_addpublication to dmsnosysadmin;
      GRANT execute on sp_addarticle to dmsnosysadmin;
      GRANT execute on sp_articlefilter to dmsnosysadmin;
      GRANT select on [awsdms].[split_partition_list] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_dump_dblog] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dmsnosysadmin;
      ```

   1. Accordez des autorisations sur la base de données msdb pour chaque réplica :

      ```
      USE msdb
      GO
      GRANT select on msdb.dbo.backupset TO self_managed_user
      GRANT select on msdb.dbo.backupmediafamily TO self_managed_user
      GRANT select on msdb.dbo.backupfile TO self_managed_user
      ```

   1. Ajoutez le rôle `db_owner` à `dmsnosysadmin` sur la base de données source. La base de données étant synchronisée, vous pouvez vous contenter d’ajouter le rôle sur le réplica principal uniquement.

      ```
      use <source DB>
      GO 
      EXEC sp_addrolemember N'db_owner', N'dmsnosysadmin'
      ```

## Configuration de la réplication continue sur une instance de base de données SQL Server cloud
<a name="CHAP_Source.SQLServer.Configuration"></a>

Cette section explique comment configurer la CDC sur une instance de base de données SQL Server hébergée sur le cloud. Une instance SQL Server hébergée sur le cloud est une instance exécutée sur Amazon RDS for SQL Server, une instance gérée par Azure SQL ou toute autre instance SQL Server gérée dans le cloud. Pour en savoir plus sur les limitations relatives à la réplication continue pour chaque type de base de données, consultez [Limitations relatives à l'utilisation de SQL Server comme source pour AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations). 

Avant de configurer la réplication continue, consultez [Conditions préalables pour l’utilisation de la réplication continue (CDC) à partir d’une source SQL Server](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites). 

À la différence des sources Microsoft SQL Server autogérées, Amazon RDS for SQL Server ne prend pas en charge la réplication Microsoft. Par conséquent, AWS DMS vous devez utiliser MS-CDC pour les tables avec ou sans clés primaires.

Amazon RDS n'accorde pas de privilèges d'administrateur système pour configurer les artefacts de réplication AWS DMS utilisés pour les modifications continues dans une instance SQL Server source. Veillez à activer MS-CDC pour l’instance Amazon RDS (en utilisant des privilèges d’utilisateur principal) comme décrit dans la procédure suivante.

**Pour activer MS-CDC pour une instance de base de données SQL Server cloud**

1. Exécutez l’une des requêtes suivantes au niveau de la base de données.

   Pour une instance de base de données RDS for SQL Server, utilisez cette requête.

   ```
   exec msdb.dbo.rds_cdc_enable_db 'DB_name'
   ```

   Pour une instance de base de données gérée par Azure SQL, utilisez cette requête.

   ```
   USE DB_name 
   GO 
   EXEC sys.sp_cdc_enable_db 
   GO
   ```

1. Pour chaque table disposant d’une clé primaire, exécutez la requête suivante afin d’activer MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

   Pour chaque table disposant de clés uniques mais ne disposant pas de clé primaire, exécutez la requête suivante afin d’activer MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

    Pour chaque table ne disposant pas de clé unique ni de clé primaire, exécutez la requête suivante afin d’activer MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

1. Définissez la période de conservation :
   + Pour les instances RDS for SQL Server qui se répliquent à l'aide de DMS version 3.5.3 ou ultérieure, assurez-vous que la période de rétention est définie sur la valeur par défaut de 5 secondes. Si vous effectuez une mise à niveau ou passez de DMS 3.5.2 ou d'une version antérieure à DMS 3.5.3 ou version ultérieure, modifiez la valeur de l'intervalle d'interrogation une fois les tâches exécutées sur la nouvelle instance ou sur l'instance mise à niveau. Le script suivant définit la période de rétention à 5 secondes :

     ```
     use dbname
     EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 5
     exec sp_cdc_stop_job 'capture'
     exec sp_cdc_start_job 'capture'
     ```
   + Le paramètre `@pollinginterval` est mesuré en secondes avec une valeur recommandée définie sur 86399. Cela signifie que le journal des transactions conserve les modifications pendant 86 399 secondes (un jour) lorsque `@pollinginterval = 86399`. La procédure `exec sp_cdc_start_job 'capture'` lance les paramètres.
**Note**  
Dans certaines versions de SQL Server, si la valeur de `pollinginterval` est définie sur plus de 3 599 secondes, elle est réinitialisée à la valeur par défaut de 5 secondes. Dans ce cas, les entrées du T-Log sont purgées avant de AWS DMS pouvoir les lire. Pour déterminer quelles versions de SQL Server sont concernées par ce problème connu, consultez [cet article de la base de connaissances Microsoft](https://support.microsoft.com/en-us/topic/kb4459220-fix-incorrect-results-occur-when-you-convert-pollinginterval-parameter-from-seconds-to-hours-in-sys-sp-cdc-scan-in-sql-server-dac8aefe-b60b-7745-f987-582dda2cfa78).

     Si vous utilisez Amazon RDS avec le mode multi-AZ, veillez à configurer également votre instance secondaire de sorte qu’elle ait les bonnes valeurs en cas de basculement.

     ```
     exec rdsadmin..rds_set_configuration 'cdc_capture_pollinginterval' , <5 or preferred value>
     ```

**Pour maintenir la période de rétention lorsqu'une tâche de AWS DMS réplication est arrêtée pendant plus d'une heure**
**Note**  
Les étapes suivantes ne sont pas nécessaires pour une réplication de source RDS pour SQL Server à l'aide de DMS 3.5.3 et versions ultérieures.

1. Arrêtez la tâche qui tronque les journaux de transactions à l’aide de la commande suivante. 

   ```
   exec sp_cdc_stop_job 'capture'
   ```

1. Trouvez votre tâche sur la AWS DMS console et reprenez-la.

1. Choisissez l’onglet **Surveillance**, puis vérifiez la métrique `CDCLatencySource`. 

1. Une fois que la métrique `CDCLatencySource` est égale à 0 (zéro) et ne change plus, redémarrez la tâche qui tronque les journaux de transactions à l’aide de la commande suivante.

   ```
   exec sp_cdc_start_job 'capture'
   ```

N’oubliez pas de démarrer la tâche qui tronque les journaux de transactions SQL Server. Dans le cas contraire, l’espace de stockage sur votre instance SQL Server risque de se remplir.

### Paramètres recommandés lors de l'utilisation de RDS pour SQL Server comme source pour AWS DMS
<a name="CHAP_Source.SQLServer.Configuration.Settings"></a>

#### Pour AWS DMS 3.5.3 et versions ultérieures
<a name="CHAP_Source.SQLServer.Configuration.Settings.353"></a>

**Note**  
La version initiale de la fonctionnalité de sauvegarde des journaux de RDS pour SQL Server est activée par défaut pour les points de terminaison que vous avez créés ou modifiés après la publication de la version 3.5.3 de DMS. Pour utiliser cette fonctionnalité pour les points de terminaison existants, modifiez le point de terminaison sans apporter de modifications.

AWS DMS la version 3.5.3 introduit le support pour la lecture à partir des sauvegardes de journaux. Le DMS s'appuie principalement sur la lecture des journaux de transactions actifs pour répliquer les événements. Si une transaction est sauvegardée avant que DMS ne puisse la lire dans le journal actif, la tâche accède aux sauvegardes RDS à la demande et lit les journaux de sauvegarde suivants jusqu'à ce qu'elle rattrape le journal des transactions actif. Pour garantir que DMS a accès aux sauvegardes des journaux, définissez la période de conservation automatique des sauvegardes RDS sur au moins un jour. Pour plus d'informations sur la définition de la période de conservation automatique des sauvegardes, consultez la section [Période de conservation des sauvegardes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupRetention) dans le *guide de l'utilisateur Amazon RDS*.

Une tâche DMS accédant aux sauvegardes de journaux utilise le stockage sur l'instance RDS. Notez que la tâche accède uniquement aux sauvegardes de journaux nécessaires à la réplication. Amazon RDS supprime ces sauvegardes téléchargées en quelques heures. Cette suppression n'affecte pas les sauvegardes Amazon RDS conservées dans Amazon S3, ni les fonctionnalités d'Amazon RDS. `RESTORE DATABASE` Il est conseillé d'allouer du stockage supplémentaire sur votre source RDS pour SQL Server si vous avez l'intention de répliquer à l'aide de DMS. Une façon d'estimer la quantité de stockage nécessaire consiste à identifier la sauvegarde à partir de laquelle DMS va démarrer ou reprendre la réplication, et à additionner les tailles de fichier de toutes les sauvegardes suivantes à l'aide de la fonction de métadonnées RDS`tlog backup`. Pour plus d'informations sur cette `tlog backup` fonction, consultez la [liste des sauvegardes de journaux de transactions disponibles](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER.SQLServer.AddlFeat.TransactionLogAccess.html#USER.SQLServer.AddlFeat.TransactionLogAccess.Listing) dans le *guide de l'utilisateur Amazon RDS*. 

Vous pouvez également choisir d'activer le dimensionnement automatique du stockage et/ou de déclencher le dimensionnement du stockage en fonction de la CloudWatch `FreeStorageSpace` métrique de votre instance Amazon RDS.

Nous vous recommandons vivement de ne pas démarrer ou reprendre trop loin dans les sauvegardes du journal des transactions, car cela pourrait entraîner un remplissage du stockage sur votre instance SQL Server. Dans ce cas, il est conseillé de démarrer un chargement complet. La réplication à partir de la sauvegarde du journal des transactions est plus lente que la lecture des journaux de transactions actifs. Pour de plus amples informations, veuillez consulter [Traitement de sauvegarde du journal des transactions pour RDS pour SQL Server](CHAP_Troubleshooting_Latency_Source_SQLServer.md#CHAP_Troubleshooting_Latency_Source_SQLServer_backup).

Notez que l'accès aux sauvegardes du journal nécessite des privilèges supplémentaires. Pour plus d'informations, voir les informations détaillées dans [Configurer des autorisations pour une réplication continue à partir d'une base de données SQL Server dans le cloud](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Permissions.Cloud) Assurez-vous d'accorder ces privilèges avant que la tâche ne commence à se répliquer.

#### Pour AWS DMS 3.5.2 et versions antérieures
<a name="CHAP_Source.SQLServer.Configuration.Settings.352"></a>

Lorsque vous utilisez Amazon RDS for SQL Server en tant que source, la tâche de capture MS-CDC repose sur les `maxscans` paramètres et. `maxtrans` Ces paramètres régissent le nombre maximum d'analyses effectuées par la capture MS-CDC dans le journal des transactions et le nombre de transactions traitées pour chaque analyse.

Pour les bases de données où le nombre de transactions est supérieur à `maxtrans*maxscans`, l’augmentation de la valeur `polling_interval` peut entraîner une accumulation d’enregistrements dans le journal des transactions actif. À son tour, cette accumulation peut entraîner une augmentation de la taille du journal des transactions.

Notez que cela AWS DMS ne repose pas sur la tâche de capture MS-CDC. La tâche de capture MS-CDC marque les entrées du journal des transactions comme ayant été traitées. Cela permet à la tâche de sauvegarde du journal des transactions de supprimer les entrées du journal des transactions.

Nous vous recommandons de surveiller la taille du journal des transactions et la réussite des tâches MS-CDC. Si les tâches MS-CDC échouent, le journal des transactions peut augmenter de manière excessive et provoquer des échecs de AWS DMS réplication. Vous pouvez surveiller les erreurs des tâches de capture MS-CDC à l’aide de la vue de gestion dynamique `sys.dm_cdc_errors` de la base de données source. Vous pouvez surveiller la taille du journal des transactions à l’aide de la commande de gestion `DBCC SQLPERF(LOGSPACE)`.

**Pour remédier à l’augmentation du journal des transactions provoquée par MS-CDC**

1. Vérifiez le `Log Space Used %` pour lequel la base de données AWS DMS est en train de se répliquer et vérifiez qu'il augmente continuellement.

   ```
   DBCC SQLPERF(LOGSPACE)
   ```

1. Identifiez ce qui bloque le processus de sauvegarde du journal des transactions.

   ```
   Select log_reuse_wait, log_reuse_wait_desc, name from sys.databases where name = db_name();
   ```

   Si la valeur `log_reuse_wait_desc` est égale à `REPLICATION`, la conservation de la sauvegarde du journal est due à la latence dans MS-CDC.

1. Augmentez le nombre d’événements traités par la tâche de capture en augmentant les valeurs des paramètres `maxtrans` et `maxscans`.

   ```
   EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@maxtrans = 5000, @maxscans = 20 
   exec sp_cdc_stop_job 'capture'
   exec sp_cdc_start_job 'capture'
   ```

Pour résoudre ce problème, définissez les valeurs de `maxscans` et de `maxtrans` manière à ce `maxtrans*maxscans` qu'elles soient égales au nombre moyen d'événements générés pour les tables AWS DMS répliquées à partir de la base de données source chaque jour.

Si vous définissez ces paramètres sur une valeur supérieure à la valeur recommandée, les tâches de capture traitent tous les événements des journaux de transactions. Si vous définissez ces paramètres sur une valeur inférieure à la valeur recommandée, la latence MS-CDC augmente ainsi que la taille de votre journal des transactions.

L’identification des valeurs appropriées pour `maxscans` et `maxtrans` peut s’avérer difficile, car les modifications de la charge de travail produisent un nombre variable d’événements. Dans ce cas, nous vous recommandons de configurer la surveillance sur la latence MS-CDC. Pour plus d’informations, consultez [Monitor the process](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/administer-and-monitor-change-data-capture-sql-server?view=sql-server-ver15#Monitor) dans la documentation de SQL Server. Configurez ensuite `maxtrans` et `maxscans` de manière dynamique en fonction des résultats de la surveillance.

Si la AWS DMS tâche ne parvient pas à trouver les numéros de séquence du journal (LSNs) nécessaires pour reprendre ou poursuivre la tâche, celle-ci peut échouer et nécessiter un rechargement complet.

**Note**  
Lors de l'utilisation AWS DMS pour répliquer des données à partir d'une source RDS pour SQL Server, vous pouvez rencontrer des erreurs lorsque vous tentez de reprendre la réplication après un événement stop-start de l'instance Amazon RDS. Cela est dû au fait que le processus SQL Server Agent redémarre le processus de capture lorsqu’il redémarre après l’événement d’arrêt/démarrage. Cela permet de contourner l’intervalle d’interrogation MS-CDC.  
De ce fait, sur les bases de données dont le volume de transactions est inférieur au traitement de la tâche de capture MS-CDC, les données peuvent être traitées ou marquées comme répliquées et sauvegardées avant de AWS DMS pouvoir reprendre là où elles s'étaient arrêtées, ce qui entraîne l'erreur suivante :  

```
[SOURCE_CAPTURE ]E: Failed to access LSN '0000dbd9:0006f9ad:0003' in the backup log sets since BACKUP/LOG-s are not available. [1020465] (sqlserver_endpoint_capture.c:764)
```
Pour atténuer ce problème, définissez les valeurs `maxtrans` et `maxscans` comme recommandé précédemment.

# Utilisation de la base de données Microsoft Azure SQL comme source pour AWS DMS
<a name="CHAP_Source.AzureSQL"></a>

Avec AWS DMS, vous pouvez utiliser la base de données SQL Microsoft Azure comme source de la même manière que SQL Server. AWS DMS prend en charge, en tant que source, la même liste de versions de base de données prises en charge pour SQL Server exécuté sur site ou sur une instance Amazon EC2. 

Pour de plus amples informations, veuillez consulter [Utilisation d'une base de données Microsoft SQL Server comme source pour AWS DMS](CHAP_Source.SQLServer.md).

**Note**  
AWS DMS ne prend pas en charge les opérations de capture de données modifiées (CDC) avec Azure SQL Database.

# Utilisation de l'instance gérée Microsoft Azure SQL comme source pour AWS DMS
<a name="CHAP_Source.AzureMgd"></a>

Avec AWS DMS, vous pouvez utiliser Microsoft Azure SQL Managed Instance comme source de la même manière que SQL Server. AWS DMS prend en charge, en tant que source, la même liste de versions de base de données prises en charge pour SQL Server exécuté sur site ou sur une instance Amazon EC2. 

Pour de plus amples informations, veuillez consulter [Utilisation d'une base de données Microsoft SQL Server comme source pour AWS DMS](CHAP_Source.SQLServer.md).

# Utilisation du serveur flexible Microsoft Azure Database pour PostgreSQL comme source pour AWS DMS
<a name="CHAP_Source.AzureDBPostgreSQL"></a>

Avec AWS DMS, vous pouvez utiliser le serveur flexible Microsoft Azure Database pour PostgreSQL comme source, de la même manière que PostgreSQL.

Pour plus d'informations sur les versions du serveur flexible Microsoft Azure Database pour PostgreSQL qui sont prises en charge en tant AWS DMS que source, consultez. [Sources pour AWS DMS](CHAP_Introduction.Sources.md)

## Configuration du serveur flexible Microsoft Azure pour PostgreSQL pour la réplication logique et le décodage
<a name="CHAP_Source.AzureDBPostgreSQL.setup"></a>

Vous pouvez utiliser les fonctionnalités de réplication logique et de décodage du serveur flexible Microsoft Azure Database pour PostgreSQL dans le cadre de la migration de base de données.

Pour le décodage logique, DMS utilise le plug-in `test_decoding` ou `pglogical`. Si le plug-in `pglogical` est disponible sur une base de données PostgreSQL source, DMS crée un emplacement de réplication en utilisant `pglogical`, sinon le plug-in `test_decoding` est utilisé. 

Pour configurer votre serveur flexible Microsoft Azure pour PostgreSQL en tant que point de terminaison source pour DMS, effectuez les étapes suivantes : 

1. Ouvrez la page Paramètres du serveur sur le portail.

1. Définissez le paramètre `wal_level` du serveur sur `LOGICAL`.

1. Si vous souhaitez utiliser l’extension `pglogical`, définissez les paramètres `shared_preload_libraries` et `azure.extensions` sur `pglogical`.

1. Définissez le paramètre `max_replication_slots` sur le nombre maximal de tâches DMS que vous envisagez d’exécuter simultanément. Dans Microsoft Azure, la valeur par défaut de ce paramètre est 10. La valeur maximale de ce paramètre dépend de la mémoire disponible de votre instance PostgreSQL, ce qui permet de prévoir entre 2 et 8 emplacements de réplication par Go de mémoire.

1. Définissez le paramètre `max_wal_senders` sur une valeur supérieure à 1. Le paramètre `max_wal_senders`définit le nombre de tâches simultanées qui peuvent s'exécuter. La valeur par défaut est 10.

1. Définissez la valeur du paramètre `max_worker_processes` sur au moins 16. Dans le cas contraire, des erreurs telles que les suivantes peuvent survenir :

   ```
   WARNING: out of background worker slots.
   ```

1. Enregistrez les Modifications. Redémarrez le serveur pour appliquer les modifications.

1. Vérifiez que votre instance PostgreSQL autorise le trafic réseau provenant de votre ressource de connexion.

1. Accordez des autorisations de réplication à un utilisateur existant ou créez un nouvel utilisateur avec des autorisations de réplication à l’aide des commandes suivantes. 
   + Accordez des autorisations de réplication à un utilisateur existant à l’aide de la commande suivante :

     ```
     ALTER USER <existing_user> WITH REPLICATION;
     ```
   + Créez un nouvel utilisateur avec des autorisations de réplication à l’aide de la commande suivante : 

     ```
     CREATE USER aws_dms_user PASSWORD 'aws_dms_user_password';
     GRANT azure_pg_admin to aws_dms_user;
     ALTER ROLE aws_dms_user REPLICATION LOGIN;
     ```

Pour plus d’informations sur la réplication logique avec PostgreSQL, consultez les rubriques suivantes :
+ [Activation de la capture des données de modification (CDC) à l’aide de la réplication logique](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [Utilisation de points de départ CDC natifs pour configurer la charge CDC d’une source PostgreSQL](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ [Réplication logique et décodage logique dans le serveur flexible Azure Database pour PostgreSQL](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-logical) dans la [documentation Azure Database pour PostgreSQL](https://learn.microsoft.com/en-us/azure/postgresql/).

# Utilisation du serveur flexible Microsoft Azure Database pour MySQL comme source pour AWS DMS
<a name="CHAP_Source.AzureDBMySQL"></a>

Avec AWS DMS, vous pouvez utiliser le serveur flexible Microsoft Azure Database pour MySQL comme source, de la même manière que MySQL.

Pour plus d'informations sur les versions du serveur flexible Microsoft Azure Database pour MySQL prises AWS DMS en charge en tant que source, consultez[Sources pour AWS DMS](CHAP_Introduction.Sources.md). 

Pour plus d'informations sur l'utilisation d'une base de données compatible MySQL gérée par le client avec, consultez. AWS DMS[Utilisation d'une base de données compatible MySQL autogérée comme source pour AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged)

## Limitations liées à l'utilisation d'Azure MySQL comme source pour AWS Database Migration Service
<a name="CHAP_Source.AzureDBMySQL.limitations"></a>
+ La valeur par défaut de la variable système de serveur flexible Azure MySQL `sql_generate_invisible_primary_key` est`ON`, et le serveur ajoute automatiquement une clé primaire invisible générée (GIPK) à toute table créée sans clé primaire explicite. AWS DMS ne prend pas en charge la réplication continue pour les tables MySQL avec des contraintes GIPK.

# Utilisation d'OCI MySQL Heatwave comme source pour AWS DMS
<a name="CHAP_Source.heatwave"></a>

Avec AWS DMS, vous pouvez utiliser OCI MySQL Heatwave comme source de la même manière que MySQL. L’utilisation d’OCI MySQL Heatwave en tant que source nécessite quelques modifications de configuration supplémentaires.

Pour plus d'informations sur les versions d'OCI MySQL Heatwave compatibles AWS DMS en tant que source, consultez. [Sources pour AWS DMS](CHAP_Introduction.Sources.md)

## Configuration d’OCI MySQL Heatwave pour la réplication logique
<a name="CHAP_Source.heatwave.setup"></a>

Pour configurer votre instance OCI MySQL Heatwave en tant que point de terminaison source pour DMS, procédez comme suit :

1. Connectez-vous à la console OCI et ouvrez le menu principal des hamburgers (≡) dans le coin supérieur gauche.

1. Choisissez **Bases de données**, **Systèmes de bases de données**.

1. Ouvrez le menu **Configurations**.

1. Choisissez **Créer une configuration**.

1. Entrez un nom de configuration, tel que **dms\$1configuration**.

1. Choisissez la forme de votre instance OCI MySQL Heatwave actuelle. Vous pouvez trouver la forme dans l’onglet de propriétés **Configuration du système de bases de données** de l’instance, dans la section **Configuration du système de base de données : Forme**.

1. Dans la section **Variables d’utilisateur**, choisissez la variable système `binlog_row_value_options`. Sa valeur par défaut est `PARTIAL_JSON`. Effacez la valeur.

1. Choisissez le bouton **Créer**.

1. Ouvrez votre SQLHeatwave instance OCI My, puis cliquez sur le bouton **Modifier**.

1. Dans la section **Configuration**, choisissez le bouton **Modifier la configuration**, puis choisissez la configuration de forme que vous avez créée à l’étape 4.

1. Une fois que les modifications ont pris effet, votre instance est prête pour la réplication logique.

# Utilisation de Google Cloud pour MySQL comme source pour AWS DMS
<a name="CHAP_Source.GC"></a>

Avec AWS DMS, vous pouvez utiliser Google Cloud pour MySQL comme source de la même manière que MySQL. 

Pour plus d'informations sur les versions de GCP MySQL prises AWS DMS en charge en tant que source, consultez[Sources pour AWS DMS](CHAP_Introduction.Sources.md). 

Pour de plus amples informations, veuillez consulter [Utilisation d'une base de données compatible MySQL comme source pour AWS DMS](CHAP_Source.MySQL.md).

**Note**  
Support pour GCP MySQL 8.0 en tant que source est disponible dans la AWS DMS version 3.4.6.  
AWS DMS ne prend pas en charge le mode SSL `verify-full` pour les instances GCP pour MySQL.  
Le paramètre de sécurité GCP MySQL `Allow only SSL connections` n'est pas pris en charge, car il nécessite la vérification des certificats du serveur et du client. AWS DMS prend uniquement en charge la vérification des certificats de serveur.  
AWS DMS prend en charge la valeur par défaut de GCP CloudSQL pour MySQL `CRC32` pour l'indicateur de `binlog_checksum` base de données.

# Utilisation de Google Cloud pour PostgreSQL comme source pour AWS DMS
<a name="CHAP_Source.GCPostgres"></a>

Vous pouvez utiliser Google Cloud pour PostgreSQL comme source de la même manière que les bases de données PostgreSQL autogérées. AWS DMS

Pour plus d'informations sur les versions de GCP PostgreSQL prises en charge en tant AWS DMS que source, consultez. [Sources pour AWS DMS](CHAP_Introduction.Sources.md) 

Pour de plus amples informations, veuillez consulter [Utilisation d'une base de données PostgreSQL comme source AWS DMS](CHAP_Source.PostgreSQL.md).

## Configuration de Google Cloud pour PostgreSQL pour la réplication logique et le décodage
<a name="CHAP_Source.GCPostgres.setup"></a>

Vous pouvez utiliser les fonctionnalités de réplication logique et de décodage dans Google Cloud SQL pour PostgreSQL au cours de la migration de base de données.

Pour le décodage logique, DMS utilise l’un des plug-ins suivants :
+ `test_decoding`
+ `pglogical`

Si le plug-in `pglogical` est disponible sur une base de données PostgreSQL source, DMS crée un emplacement de réplication en utilisant `pglogical`, sinon le plug-in `test_decoding` est utilisé. 

Notez ce qui suit à propos de l'utilisation du décodage logique avec AWS DMS :

1. Avec Google Cloud SQL pour PostgreSQL, activez le décodage logique en attribuant à l’indicateur `cloudsql.logical_decoding` la valeur `on`.

1. Pour activer `pglogical`, attribuez à l’indicateur `cloudsql.enable_pglogical` la valeur `on`, puis redémarrez la base de données.

1. Pour utiliser les fonctionnalités de décodage logique, vous devez créer un utilisateur PostgreSQL avec l’attribut `REPLICATION`. Lorsque vous utilisez l’extension `pglogical`, l’utilisateur doit avoir le rôle `cloudsqlsuperuser`. Pour créer un utilisateur avec le rôle `cloudsqlsuperuser`, procédez comme suit :

   ```
   CREATE USER new_aws_dms_user WITH REPLICATION
   IN ROLE cloudsqlsuperuser LOGIN PASSWORD 'new_aws_dms_user_password';
   ```

   Pour définir cet attribut sur un utilisateur existant, procédez comme suit :

   ```
   ALTER USER existing_user WITH REPLICATION;
   ```

1. Définissez le paramètre `max_replication_slots` sur le nombre maximal de tâches DMS que vous envisagez d’exécuter simultanément. Dans Google Cloud SQL, la valeur par défaut de ce paramètre est 10. La valeur maximale de ce paramètre dépend de la mémoire disponible de votre instance PostgreSQL, ce qui permet de prévoir entre 2 et 8 emplacements de réplication par Go de mémoire.

Pour plus d’informations sur la réplication logique avec PostgreSQL, consultez les rubriques suivantes :
+ [Activation de la capture des données de modification (CDC) à l’aide de la réplication logique](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [Utilisation de points de départ CDC natifs pour configurer la charge CDC d’une source PostgreSQL](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ [Configurer la réplication logique et le décodage](https://cloud.google.com/sql/docs/postgres/replication/configure-logical-replication) dans la [documentation de Cloud SQL pour PostgreSQL](https://cloud.google.com/sql/docs/postgres).

# Utilisation d'une base de données PostgreSQL comme source AWS DMS
<a name="CHAP_Source.PostgreSQL"></a>

Vous pouvez migrer les données d'une ou de plusieurs bases de données PostgreSQL à l'aide de. AWS DMS Avec une base de données PostgreSQL en tant que source, vous pouvez migrer les données vers une autre base de données PostgreSQL ou vers l’une des autres bases de données prises en charge. 

Pour plus d'informations sur les versions de PostgreSQL compatibles en tant AWS DMS que source, consultez. [Sources pour AWS DMS](CHAP_Introduction.Sources.md) 

AWS DMS prend en charge PostgreSQL pour les types de bases de données suivants : 
+ Bases de données sur site
+ Bases de données sur une instance Amazon EC2
+ Bases de données sur une instance de base de données Amazon RDS
+ Bases de données sur une instance de base de données basée sur Amazon Aurora PostgreSQL-Compatible Edition
+ Bases de données sur une instance de base de données basée sur Amazon Aurora PostgreSQL-Compatible Edition sans serveur

**Note**  
DMS prend en charge Amazon Aurora PostgreSQL sans serveur V1 en tant que source pour le chargement complet uniquement. Mais vous pouvez utiliser Amazon Aurora PostgreSQL sans serveur V2 en tant que source pour les tâches Chargement complet, Chargement complet \$1 CDC et CDC uniquement.

Vous pouvez utiliser Secure Socket Layers (SSL) pour chiffrer les connexions entre votre point de terminaison PostgreSQL et l’instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison PostgreSQL, consultez [Utilisation du protocole SSL avec AWS Database Migration Service](CHAP_Security.SSL.md).

Lorsque vous utilisez PostgreSQL en tant que source, la seule exigence de sécurité supplémentaire consiste à ce que le compte d’utilisateur spécifié soit un utilisateur enregistré dans la base de données PostgreSQL.

Pour configurer une base de données PostgreSQL en tant que point de terminaison AWS DMS source, procédez comme suit :
+ Créez un utilisateur PostgreSQL doté des autorisations appropriées pour AWS DMS fournir l'accès à votre base de données source PostgreSQL.
**Note**  
Si la base de données source PostgreSQL est autogérée, consultez [Utilisation de bases de données PostgreSQL autogérées en tant que source dans AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites) pour plus d’informations.
Si la base de données source PostgreSQL est gérée par Amazon RDS, consultez [Utilisation de bases de données PostgreSQL AWS gérées en tant que source DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL) pour plus d’informations.
+ Créez un point de terminaison source PostgreSQL conforme à la configuration de base de données PostgreSQL que vous avez choisie.
+ Créez une tâche ou un ensemble de tâches pour migrer vos tables.

  Pour créer une full-load-only tâche, aucune autre configuration de point de terminaison n'est nécessaire.

  Avant de créer une tâche pour la capture des données de modification (une tâche CDC uniquement ou une tâche de chargement complet \$1 CDC), consultez [Activation du CDC en utilisant une base de données PostgreSQL autogérée comme source AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC) ou [Activation du CDC avec une instance de base de données PostgreSQL AWS gérée avec AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC).

**Topics**
+ [Utilisation de bases de données PostgreSQL autogérées en tant que source dans AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites)
+ [Utilisation de bases de données PostgreSQL AWS gérées en tant que source DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL)
+ [Activation de la capture des données de modification (CDC) à l’aide de la réplication logique](#CHAP_Source.PostgreSQL.Security)
+ [Utilisation de points de départ CDC natifs pour configurer la charge CDC d’une source PostgreSQL](#CHAP_Source.PostgreSQL.v10)
+ [Migration de PostgreSQL vers PostgreSQL à l'aide de AWS DMS](#CHAP_Source.PostgreSQL.Homogeneous)
+ [Migration depuis Babelfish pour Amazon Aurora PostgreSQL à l'aide de AWS DMS](#CHAP_Source.PostgreSQL.Babelfish)
+ [Supprimer AWS DMS des artefacts d'une base de données source PostgreSQL](#CHAP_Source.PostgreSQL.CleanUp)
+ [Paramètres de configuration supplémentaires lors de l’utilisation d’une base de données PostgreSQL en tant que source DMS](#CHAP_Source.PostgreSQL.Advanced)
+ [Lire la réplique en tant que source pour PostgreSQL](#CHAP_Source.PostgreSQL.ReadReplica)
+ [Utilisation du paramètre de point de `MapBooleanAsBoolean` terminaison PostgreSQL](#CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting)
+ [Paramètres du point de terminaison et attributs de connexion supplémentaires (ECAs) lors de l'utilisation de PostgreSQL comme source DMS](#CHAP_Source.PostgreSQL.ConnectionAttrib)
+ [Limitations de l’utilisation d’une base de données PostgreSQL en tant que source DMS](#CHAP_Source.PostgreSQL.Limitations)
+ [Types de données sources pour PostgreSQL](#CHAP_Source-PostgreSQL-DataTypes)

## Utilisation de bases de données PostgreSQL autogérées en tant que source dans AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites"></a>

Avec une base de données PostgreSQL autogérée comme source, vous pouvez migrer les données vers une autre base de données PostgreSQL ou vers l'une des autres bases de données cibles prises en charge par. AWS DMS La base de données source peut être sur une base de données sur site ou un moteur autogéré s’exécutant sur une instance Amazon EC2. Vous pouvez utiliser une instance de base de données pour les tâches de chargement complet et pour les tâches de capture des données de modification (CDC).

### Conditions préalables à l'utilisation d'une base de données PostgreSQL autogérée en tant que source AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites.SelfManaged"></a>

Avant de migrer des données à partir d’une base de données source PostgreSQL autogérée, procédez comme suit : 
+ Assurez-vous d’utiliser une base de données PostgreSQL version 9.4.x ou ultérieure.
+ Pour les tâches de chargement complet \$1 CDC ou les tâches de CDC uniquement, accordez des autorisations de super-utilisateur pour le compte d’utilisateur spécifié pour la base de données source PostgreSQL. Le compte d’utilisateur a besoin d’autorisations de super-utilisateur pour accéder aux fonctions spécifiques à la réplication dans la source. Le compte utilisateur DMS a besoin des autorisations SELECT sur toutes les colonnes pour réussir la migration des tables. En cas d'autorisations manquantes sur les colonnes, DMS crée une table cible à l'aide de mappages de types de données DMS réguliers, ce qui entraîne des différences de métadonnées et des échecs de tâches.
+ Ajoutez l'adresse IP du serveur de AWS DMS réplication au fichier de `pg_hba.conf` configuration et activez la réplication et les connexions par socket. Un exemple suit.

  ```
              # Replication Instance
              host all all 12.3.4.56/00 md5
              # Allow replication connections from localhost, by a user with the
              # replication privilege.
              host replication dms 12.3.4.56/00 md5
  ```

  Le fichier de configuration `pg_hba.conf` de PostgreSQL contrôle l'authentification du client. (HBA signifie authentification basée sur l'hôte.) Le fichier est traditionnellement stocké dans le répertoire de données du cluster de base de données. 
+ Si vous configurez une base de données comme source de réplication logique à l'aide AWS DMS de [Activation du CDC en utilisant une base de données PostgreSQL autogérée comme source AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC)

**Note**  
Certaines AWS DMS transactions restent inactives pendant un certain temps avant que le moteur DMS ne les réutilise. En utilisant le paramètre `idle_in_transaction_session_timeout` dans PostgreSQL versions 9.6 et ultérieures, vous pouvez provoquer l’expiration et l’échec des transactions inactives. Ne mettez pas fin aux transactions inactives lorsque vous utilisez AWS DMS. 

### Activation du CDC en utilisant une base de données PostgreSQL autogérée comme source AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites.CDC"></a>

AWS DMS prend en charge la capture des données de modification (CDC) à l'aide de la réplication logique. Pour activer la réplication logique d’une base de données source PostgreSQL autogérée, définissez les paramètres suivants dans le fichier de configuration `postgresql.conf` :
+ Configurez `wal_level = logical`.
+ Définissez une valeur supérieure à 1 pour `max_replication_slots`.

  Définissez la valeur `max_replication_slots` selon le nombre de tâches que vous souhaitez exécuter. Par exemple, pour exécuter cinq tâches, vous définissez au moins cinq emplacements. Les emplacements s'ouvrent automatiquement dès qu'une tâche commence et restent ouvert même lorsque la tâche n'est plus en cours d'exécution. Assurez-vous de supprimer manuellement les emplacements ouverts. Notez que DMS supprime automatiquement les emplacements de réplication lorsque la tâche est supprimée, si DMS les a créés.
+ Définissez une valeur supérieure à 1 pour `max_wal_senders`.

  Le paramètre `max_wal_senders`définit le nombre de tâches simultanées qui peuvent s'exécuter.
+ Le paramètre `wal_sender_timeout` met fin aux connexions de réplication qui sont inactives plus longtemps que le nombre de millisecondes spécifié. La valeur par défaut pour une base de données PostgreSQL sur site est de 60 000 millisecondes (60 secondes). La définition de la valeur sur 0 (zéro) désactive le mécanisme d’expiration et constitue une valeur valide pour DMS.

  Lorsque vous définissez `wal_sender_timeout` sur une valeur différente de zéro, une tâche DMS avec CDC nécessite au moins 10 000 millisecondes (10 secondes) et échoue si la valeur est inférieure à 10 000. Définissez une valeur inférieure à 5 minutes pour éviter tout retard lors du basculement multi-AZ d’une instance de réplication DMS.

Certains paramètres sont statiques et vous ne pouvez les définir qu’au démarrage du serveur. Toute modification apportée à leurs entrées dans le fichier de configuration (pour une base de données autogérée) ou le groupe de paramètres de base de données (pour une base de données RDS for PostgreSQL) est ignorée jusqu’au redémarrage du serveur. Pour plus d’informations, consultez la [documentation sur PostgreSQL](https://www.postgresql.org/docs/current/intro-whatis.html).

Pour plus d’informations sur l’activation de la CDC, consultez [Activation de la capture des données de modification (CDC) à l’aide de la réplication logique](#CHAP_Source.PostgreSQL.Security).

## Utilisation de bases de données PostgreSQL AWS gérées en tant que source DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL"></a>

Vous pouvez utiliser une instance de base de données PostgreSQL AWS gérée comme source pour. AWS DMS Vous pouvez effectuer à la fois des tâches de chargement complet et des tâches de capture des données de modification (CDC) à l’aide d’une source PostgreSQL gérée par AWS. 

### Conditions préalables à l'utilisation d'une base de AWS données PostgreSQL gérée comme source DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.Prerequisites"></a>

Avant de migrer des données depuis une base de données source AWS PostgreSQL gérée, procédez comme suit :
+ Nous vous recommandons d'utiliser un compte AWS utilisateur avec les autorisations minimales requises pour l'instance de base de données PostgreSQL comme compte utilisateur pour le point de terminaison source PostgreSQL pour. AWS DMS L’utilisation du compte principal n’est pas recommandée. Le compte doit avoir le rôle `rds_superuser` et le rôle `rds_replication`. Le rôle `rds_replication` accorde les autorisations permettant de gérer des emplacements logiques et de diffuser les données à l’aide d’emplacements logiques.

  Assurez-vous de créer plusieurs objets à partir du compte d’utilisateur principal pour le compte que vous utilisez. Pour en savoir plus sur la création de ces objets, consultez [Migration d’une base de données Amazon RDS for PostgreSQL sans utiliser le compte d’utilisateur principal](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser).
+ Si la base de données source se trouve dans un cloud privé virtuel (VPC), choisissez le groupe de sécurité de VPC qui permet d’accéder à l’instance de base de données où réside la base de données. Cette action est nécessaire pour que l’instance de réplication DMS se connecte avec succès à l’instance de base de données source. Lorsque la base de données et l’instance de réplication DMS se trouvent dans le même VPC, ajoutez le groupe de sécurité approprié à ses propres règles entrantes.

**Note**  
Certaines AWS DMS transactions restent inactives pendant un certain temps avant que le moteur DMS ne les réutilise. En utilisant le paramètre `idle_in_transaction_session_timeout` dans PostgreSQL versions 9.6 et ultérieures, vous pouvez provoquer l’expiration et l’échec des transactions inactives. Ne mettez pas fin aux transactions inactives lorsque vous utilisez AWS DMS.

### Activation du CDC avec une instance de base de données PostgreSQL AWS gérée avec AWS DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC"></a>

AWS DMS prend en charge le CDC sur les bases de données PostgreSQL Amazon RDS lorsque l'instance de base de données est configurée pour utiliser la réplication logique. Le tableau suivant récapitule la compatibilité de réplication logique de chaque version de AWS PostgreSQL gérée. 


|  Version PostgreSQL  |  AWS DMS support de chargement complet   |  AWS DMS Soutien du CDC  | 
| --- | --- | --- | 
|  Compatibilité d’Aurora PostgreSQL version 2.1 avec PostgreSQL 10.5 (ou antérieur)  |  Oui  |  Non  | 
|  Compatibilité d’Aurora PostgreSQL version 2.2 avec PostgreSQL 10.6 (ou ultérieur)   |  Oui  |  Oui  | 
|  Compatibilité de RDS for PostgreSQL avec PostgreSQL 10.21 (ou ultérieur)  |  Oui  |  Oui  | 

**Pour activer la réplication logique pour une instance DB RDS PostgreSQL**

1. Utilisez le compte utilisateur AWS principal pour l'instance de base de données PostgreSQL comme compte utilisateur pour le point de terminaison source PostgreSQL. Le compte d'utilisateur principal a les rôles nécessaires qui lui permettent de configurer la capture des données modifiées. 

   Si vous utilisez un compte autre que le compte d’utilisateur principal, assurez-vous de créer plusieurs objets à partir du compte principal pour le compte que vous utilisez. Pour de plus amples informations, veuillez consulter [Migration d’une base de données Amazon RDS for PostgreSQL sans utiliser le compte d’utilisateur principal](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser).

1. Définissez le paramètre `rds.logical_replication` de votre groupe de paramètres DB CLUSTER sur 1. Ce paramètre statique nécessite un redémarrage de l'instance DB pour son application. Pour l'application de ce paramètre, AWS DMS définit les paramètres `wal_level`, `max_wal_senders`, `max_replication_slots` et `max_connections`. Ces modifications de paramètres peuvent augmenter la génération WAL (Write ahead log) ; de sorte qu’il faut uniquement définir `rds.logical_replication` lorsque vous utilisez des emplacements de réplication logique.

1. Le paramètre `wal_sender_timeout` met fin aux connexions de réplication qui sont inactives plus longtemps que le nombre de millisecondes spécifié. La valeur par défaut pour une base de données PostgreSQL AWS gérée est de 30 000 millisecondes (30 secondes). La définition de la valeur sur 0 (zéro) désactive le mécanisme d’expiration et constitue une valeur valide pour DMS.

   Lorsque vous définissez `wal_sender_timeout` sur une valeur différente de zéro, une tâche DMS avec CDC nécessite au moins 10 000 millisecondes (10 secondes) et échoue si la valeur est comprise entre 0 et 10 000. Définissez une valeur inférieure à 5 minutes pour éviter tout retard lors du basculement multi-AZ d’une instance de réplication DMS.

1.  Assurez-vous que la valeur du paramètre `max_worker_processes` dans le groupe de paramètres de votre cluster de bases de données est supérieure ou égale aux valeurs combinées totales de `max_logical_replication_workers`, `autovacuum_max_workers` et `max_parallel_workers`. Un nombre élevé de processus de travail en arrière-plan peut avoir un impact sur les charges de travail d’application sur les instances de petite taille. Vous devez donc surveiller les performances de la base de données si vous définissez `max_worker_processes` sur une valeur supérieure à la valeur par défaut.

1.  Lorsque vous utilisez Aurora PostgreSQL en tant que source avec CDC, définissez sur. `synchronous_commit` `ON`

**Pour utiliser PostgreSQL MultiAZ DB Cluster Read Replica pour CDC (réplication en cours)**

1. Définissez les `sync_replication_slots` paramètres `rds.logical_replication` et de votre groupe de paramètres DB CLUSTER sur 1. Ces paramètres statiques nécessitent un redémarrage de l'instance de base de données pour prendre effet.

1. Exécutez la commande suivante pour créer la `awsdms_ddl_audit` table sur Writer et pour la `objects_schema` remplacer par le nom du schéma à utiliser :

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. Exécutez la commande suivante pour créer la `awsdms_intercept_ddl` fonction et pour la `objects_schema` remplacer par le nom du schéma à utiliser :

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. Exécutez la commande suivante pour créer le déclencheur `awsdms_intercept_ddl` d'événement :

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

   Assurez-vous que tous les utilisateurs et tous les rôles qui accèdent à ces événements disposent des autorisations DDL nécessaires. Par exemple :

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

1. Créez un emplacement de réplication sur Writer :

   ```
   SELECT * FROM pg_create_logical_replication_slot('dms_read_replica_slot', 'test_decoding', false, true);
   ```

1. Assurez-vous que le slot de réplication est disponible sur Reader :

   ```
   select * from pg_catalog.pg_replication_slots where slot_name = 'dms_read_replica_slot';
   
   slot_name            |plugin       |slot_type|datoid|database|temporary|active|active_pid|xmin|catalog_xmin|restart_lsn|confirmed_flush_lsn|wal_status|safe_wal_size|two_phase|inactive_since               |conflicting|invalidation_reason|failover|synced|
   ---------------------+-------------+---------+------+--------+---------+------+----------+----+------------+-----------+-------------------+----------+-------------+---------+-----------------------------+-----------+-------------------+--------+------+
   dms_read_replica_slot|test_decoding|logical  |     5|postgres|false    |false |          |    |3559        |0/180011B8 |0/180011F0         |reserved  |             |true     |2025-02-10 15:45:04.083 +0100|false      |                   |false   |false |
   ```

1. Créez un point de terminaison source DMS pour Read Replica et définissez le nom du slot de réplication logique via l'attribut Extra Connection :

   ```
   slotName=dms_read_replica_slot;
   ```

1. Créez et lancez la tâche CDC/FL\$1CDC.
**Note**  
Pour les migrations CDC/FL\$1CDC, DMS considère l'heure de début de la tâche comme la position de départ du CDC. Tous les anciens LSNs provenant du slot de réplication sont ignorés.

### Migration d’une base de données Amazon RDS for PostgreSQL sans utiliser le compte d’utilisateur principal
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser"></a>

Dans certains cas, vous risquez de ne pas utiliser le compte d’utilisateur principal pour l’instance de base de données Amazon RDS PostgreSQL que vous utilisez en tant que source. Dans ce cas, créez plusieurs objets afin de capturer des événements DDL (data definition language). Vous créez ces objets dans le compte autre que le compte principal, puis vous créez un déclencheur dans le compte utilisateur principal.

**Note**  
Si vous définissez le paramètre de point de terminaison `CaptureDdls` sur `false` sur le point de terminaison source, vous n’avez pas besoin de créer la table et le déclencheur suivants sur la base de données source.

Utilisez la procédure suivante pour créer ces objets.

**Pour créer des objets**

1. Choisissez le schéma où les objets doivent être créés. Le schéma par défaut est `public`. Assurez-vous que le schéma existe et qu'il est accessible par le compte `OtherThanMaster`. 

1. Connectez-vous à l’instance de base de données PostgreSQL en utilisant un compte d’utilisateur autre que le compte principal, à savoir le compte `OtherThanMaster` dans notre cas.

1. Créez la table `awsdms_ddl_audit` en exécutant la commande suivante, en remplaçant `objects_schema` dans le code suivant par le nom du schéma à utiliser.

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. Créez la fonction `awsdms_intercept_ddl` en exécutant la commande suivante, en remplaçant `objects_schema` dans le code suivant par le nom du schéma à utiliser.

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. Déconnectez-vous du compte `OtherThanMaster` et connectez-vous avec un compte auquel le rôle `rds_superuser` a été attribué.

1. Créez le déclencheur d’événements `awsdms_intercept_ddl` en exécutant la commande suivante.

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end 
   EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

1. Assurez-vous que tous les utilisateurs et rôles qui accèdent à ces événements disposent des autorisations DDL nécessaires. Par exemple :

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

Une fois que vous avez terminé la procédure précédente, vous pouvez créer le point de terminaison source AWS DMS à l'aide du compte `OtherThanMaster`.

**Note**  
Ces événements sont déclenchés par les instructions `CREATE TABLE`, `ALTER TABLE` et `DROP TABLE`.

## Activation de la capture des données de modification (CDC) à l’aide de la réplication logique
<a name="CHAP_Source.PostgreSQL.Security"></a>

Vous pouvez utiliser la fonctionnalité de réplication logique native de PostgreSQL pour activer la capture des données de modification (CDC) lors de la migration de base de données pour les sources PostgreSQL. Vous pouvez utiliser cette fonctionnalité avec une instance de base de données PostgreSQL autogérée et avec une instance de base de données SQL Amazon RDS for PostgreSQL. Cette approche réduit les temps d’arrêt et permet de garantir que la base de données cible est synchronisée avec la base de données PostgreSQL source.

AWS DMS prend en charge le CDC pour les tables PostgreSQL avec des clés primaires. Si une table ne possède pas de clé primaire, les journaux d'écriture anticipée (WAL) n'incluent pas d'image antérieure de la ligne de base de données. Dans ce cas, DMS ne peut pas mettre à jour la table. Ici, vous pouvez utiliser des paramètres de configuration supplémentaires et l’identité du réplica de table comme solution de contournement. Toutefois, cette approche peut générer des journaux supplémentaires. Nous vous recommandons d’utiliser l’identité du réplica de table comme solution de contournement uniquement après avoir effectué des tests méticuleux. Pour de plus amples informations, veuillez consulter [Paramètres de configuration supplémentaires lors de l’utilisation d’une base de données PostgreSQL en tant que source DMS](#CHAP_Source.PostgreSQL.Advanced).

**Note**  
REPLICA IDENTITY FULL est compatible avec un plug-in de décodage logique, mais pas avec un plug-in pglogical. Pour plus d’informations, consultez la [documentation de pglogical](https://github.com/2ndQuadrant/pglogical#primary-key-or-replica-identity-required).

Pour le chargement complet et les tâches CDC et CDC uniquement, AWS DMS utilise des emplacements de réplication logiques pour conserver les journaux WAL à des fins de réplication jusqu'à ce qu'ils soient décodés. Au redémarrage (et non à la reprise) pour une tâche de chargement complet \$1 CDC ou une tâche de CDC, l’emplacement de réplication est recréé.

**Note**  
Pour le décodage logique, DMS utilise le plug-in test\$1decoding ou pglogical. Si le plug-in pglogical est disponible sur une base de données PostgreSQL source, DMS crée un emplacement de réplication à l’aide de pglogical. Sinon, un plug-in test\$1decoding est utilisé. Pour plus d’informations sur le plug-in test\$1decoding, consultez la [documentation de PostgreSQL](https://www.postgresql.org/docs/9.4/test-decoding.html).  
Si le paramètre de base de données `max_slot_wal_keep_size` est défini sur une valeur autre que celle par défaut et que le paramètre `restart_lsn` d’un emplacement de réplication dépasse la taille du LSN actuel, la tâche DMS échoue en raison de la suppression des fichiers WAL requis.

### Configuration du plug-in pglogical
<a name="CHAP_Source.PostgreSQL.Security.Pglogical"></a>

Mis en œuvre en tant qu’extension PostgreSQL, le plug-in pglogical est un système et un modèle de réplication logique pour la réplication sélective des données. Le tableau suivant identifie les versions de base de données PostgreSQL source qui prennent en charge le plug-in pglogical.


|  Source PostgreSQL   |  Prend en charge pglogical  | 
| --- | --- | 
|  PostgreSQL 9.4 autogéré ou version ultérieure  |  Oui  | 
|  Amazon RDS PostgreSQL 9.5 ou version antérieure  |  Non  | 
|  Amazon RDS PostgreSQL 9.6 ou version ultérieure  |  Oui  | 
|  Aurora PostgreSQL 1.x jusqu’à 2.5.x  |  Non  | 
|  Aurora PostgreSQL 2.6.x ou version ultérieure  |  Oui  | 
|  Aurora PostgreSQL 3.3.x ou version ultérieure  |  Oui  | 

Avant de configurer pglogical pour l'utiliser avec AWS DMS, activez d'abord la réplication logique pour la capture des données de modification (CDC) sur votre base de données source PostgreSQL. 
+ Pour en savoir plus sur l’activation de la réplication logique pour la CDC sur les bases de données sources PostgreSQL *autogérées*, consultez [Activation du CDC en utilisant une base de données PostgreSQL autogérée comme source AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC).
+ Pour en savoir plus sur l’activation de la réplication logique pour la CDC sur les bases de données sources PostgreSQL *gérées par AWS*, consultez [Activation du CDC avec une instance de base de données PostgreSQL AWS gérée avec AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC).

Une fois la réplication logique activée sur la base de données source PostgreSQL, suivez les étapes ci-dessous pour configurer pglogical en vue de son utilisation avec DMS.

**Pour utiliser le plugin pglogical pour une réplication logique sur une base de données source PostgreSQL avec AWS DMS**

1. Créez une extension pglogical sur la base de données PostgreSQL source :

   1. Définissez le paramètre correct :
      + Pour les bases de données PostgreSQL autogérées, définissez le paramètre de base de données `shared_preload_libraries= 'pglogical'`.
      + Pour les bases de données PostgreSQL sur Amazon RDS et Amazon Aurora PostgreSQL-Compatible Edition, définissez le paramètre `shared_preload_libraries` sur `pglogical` dans le même groupe de paramètres RDS.

   1. Redémarrez la base de données source PostgreSQL.

   1. Sur la base de données PostgreSQL, exécutez la commande `create extension pglogical;`.

1. Exécutez la commande suivante pour vérifier que pglogical a été correctement installé :

   `select * FROM pg_catalog.pg_extension`

Vous pouvez désormais créer une AWS DMS tâche qui capture les données de modification pour le point de terminaison de votre base de données source PostgreSQL.

**Note**  
Si vous n’activez pas pglogical dans la base de données source PostgreSQL, AWS DMS utilise le plug-in `test_decoding` par défaut. Lorsque pglogical est activé pour le décodage logique, AWS DMS utilise pglogical par défaut. Mais vous pouvez définir l’attribut de connexion supplémentaire, `PluginName`, pour utiliser le plug-in `test_decoding` à la place.

## Utilisation de points de départ CDC natifs pour configurer la charge CDC d’une source PostgreSQL
<a name="CHAP_Source.PostgreSQL.v10"></a>

Pour activer les points de départ CDC natifs avec PostgreSQL en tant que source, définissez l’attribut de connexion supplémentaire `slotName` sur le nom d’un emplacement de réplication logique existant lorsque vous créez le point de terminaison. Cet emplacement de réplication logique contient les modifications en cours à partir du moment de la création du point de terminaison, il prend donc en charge la réplication à partir d'un point précédent dans le temps. 

PostgreSQL écrit les modifications de base de données dans des fichiers WAL qui sont uniquement ignorés après qu' AWS DMS a réussi à lire les modifications à partir de l'emplacement de réplication logique. L'utilisation d'emplacements de réplication logique permet de protéger les modifications consignées, pour qu’elles ne soient pas supprimées avant d’être consommées par le moteur de réplication. 

Toutefois, selon le taux de changement et de consommation, les modifications conservées dans un emplacement de réplication logique peuvent entraîner une utilisation élevée du disque. Nous vous recommandons de définir des alarmes d’utilisation de l’espace dans l’instance PostgreSQL source lorsque vous utilisez des emplacements de réplication logique. Pour de plus amples informations sur l'utilisation de l'attribut de connexion supplémentaire `slotName`, veuillez consulter [Paramètres du point de terminaison et attributs de connexion supplémentaires (ECAs) lors de l'utilisation de PostgreSQL comme source DMS](#CHAP_Source.PostgreSQL.ConnectionAttrib).

La procédure suivante décrit cette approche plus en détail.

**Pour utiliser un point de départ CDC natif afin de configurer une charge CDC d'un point de terminaison source PostgreSQL**

1. Identifiez l'emplacement de réplication logique utilisé par une tâche de réplication antérieure (tâche parent) que vous souhaitez utiliser comme point de départ. Interrogez ensuite la `pg_replication_slots` vue sur votre base de données source pour vous assurer que cet emplacement ne possède aucune connexion active. S’il en a, résolvez-les et fermez-les avant de poursuivre.

   Pour les étapes suivantes, il faut supposer que votre emplacement de réplication logique est `abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef`. 

1. Créez un nouveau point de terminaison source qui inclut le paramètre d'attribut de connexion supplémentaire suivant.

   ```
   slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
   ```

1. Créez une nouvelle tâche uniquement CDC à l'aide de la console AWS CLI ou AWS DMS de l'API. Par exemple, à l’aide de l’interface de ligne de commande, vous pouvez exécuter la commande `create-replication-task` suivante. 

   ```
   aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test 
   --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 
   --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 
   --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE 
   --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" 
   --replication-task-settings "file://task-pg.json"
   ```

   Dans la commande précédente, les options suivantes sont définies :
   + L’option `source-endpoint-arn` est définie sur la nouvelle valeur que vous avez créée à l’étape 2.
   + L’option `replication-instance-arn` est définie sur la même valeur que pour la tâche parent à l’étape 1.
   + Les options `table-mappings` et `replication-task-settings` sont définies sur les mêmes valeurs que pour la tâche parent à l’étape 1.
   + L’option `cdc-start-position` est définie sur une valeur de position de départ. Pour trouver cette position de départ, recherchez la vue `pg_replication_slots` de votre base de données source ou affichez les détails de la console pour la tâche parent à l'étape 1. Pour de plus amples informations, veuillez consulter [Définition d'un point de départ natif CDC](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint.Native).

   Pour activer le mode de démarrage CDC personnalisé lors de la création d'une nouvelle tâche uniquement CDC à l'aide de la AWS DMS console, procédez comme suit :
   + Dans la section **Paramètres de tâche**, pour **Mode de départ CDC pour les transactions sources**, choisissez **Activer le mode de départ CDC personnalisé**.
   + Pour **Point de départ CDC personnalisé pour les transactions sources**, choisissez **Spécifier un numéro de séquence de journal**. Spécifiez le numéro SCN ou choisissez **Spécifier un point de contrôle de récupération** et fournissez un point de contrôle de récupération.

   Lorsque cette tâche CDC s'exécute, AWS DMS une erreur est générée si le slot de réplication logique spécifié n'existe pas. Il déclenche également une erreur si la tâche n’est pas créée avec un paramètre valide pour `cdc-start-position`.

Lorsque vous utilisez des points de départ CDC natifs avec le plug-in pglogical et que vous souhaitez utiliser un nouvel emplacement de réplication, effectuez les étapes de configuration suivantes avant de créer une tâche de CDC. 

**Pour utiliser un nouvel emplacement de réplication qui n’a pas été créé précédemment dans le cadre d’une autre tâche DMS**

1. Créez un emplacement de réplication, comme indiqué ci-dessous :

   ```
   SELECT * FROM pg_create_logical_replication_slot('replication_slot_name', 'pglogical');
   ```

1. Une fois que la base de données a créé l’emplacement de réplication, obtenez les valeurs de **restart\$1lsn** et **confirmed\$1flush\$1lsn** pour l’emplacement et notez-les :

   ```
   select * from pg_replication_slots where slot_name like 'replication_slot_name';
   ```

   Notez que la position de départ CDC native d’une tâche de CDC créée après l’emplacement de réplication ne peut pas être antérieure à la valeur de **confirmed\$1flush\$1lsn**.

   Pour en savoir plus sur les valeurs de **restart\$1lsn** et **confirmed\$1flush\$1lsn**, consultez [pg\$1replication\$1slots](https://www.postgresql.org/docs/14/view-pg-replication-slots.html). 

1. Créez un nœud pglogical.

   ```
   SELECT pglogical.create_node(node_name := 'node_name', dsn := 'your_dsn_name');
   ```

1. Créez deux ensembles de réplications à l’aide de la fonction `pglogical.create_replication_set`. Le premier ensemble de réplications assure le suivi des mises à jour et des suppressions des tables dotées de clés primaires. Le deuxième ensemble de réplications assure uniquement le suivi des insertions et porte le même nom que le premier ensemble de réplications, avec le préfixe « i ».

   ```
   SELECT pglogical.create_replication_set('replication_slot_name', false, true, true, false);
   SELECT pglogical.create_replication_set('ireplication_slot_name', true, false, false, true);
   ```

1. Ajoutez une table à l’ensemble de réplications.

   ```
   SELECT pglogical.replication_set_add_table('replication_slot_name', 'schemaname.tablename', true);
   SELECT pglogical.replication_set_add_table('ireplication_slot_name', 'schemaname.tablename', true);
   ```

1. Définissez l’attribut de connexion supplémentaire (ECA) suivant lorsque vous créez le point de terminaison source.

   ```
   PluginName=PGLOGICAL;slotName=slot_name;
   ```

Vous pouvez désormais créer une tâche de CDC uniquement avec un point de départ natif PostgreSQL à l’aide du nouvel emplacement de réplication. Pour plus d’informations sur le plug-in pglogical, consultez la [documentation de pglogical 3.7](https://www.enterprisedb.com/docs/pgd/3.7/pglogical/).

## Migration de PostgreSQL vers PostgreSQL à l'aide de AWS DMS
<a name="CHAP_Source.PostgreSQL.Homogeneous"></a>

Lorsque vous migrez d'un moteur de base de données autre que PostgreSQL vers une base de données PostgreSQL AWS DMS , c'est presque toujours le meilleur outil de migration à utiliser. En revanche, lorsque vous effectuez une migration à partir d’une base de données PostgreSQL vers une base de données PostgreSQL, les outils PostgreSQL peuvent être plus efficaces.

### Utilisation des outils natifs PostgreSQL pour migrer des données
<a name="CHAP_Source.PostgreSQL.Homogeneous.Native"></a>

Nous vous recommandons d’utiliser les outils de migration de base de données PostgreSQL, par exemple `pg_dump`, dans les conditions suivantes : 
+ Vous avez une migration homogène, dans laquelle vous effectuez une migration d'une base de données PostgreSQL source vers une base de données PostgreSQL cible. 
+ Vous migrez une base de données entière.
+ Les outils natifs vous permettent de migrer vos données avec une interruption minimale. 

L’utilitaire pg\$1dump utilise la commande COPY pour créer un schéma et un vidage des données d’une base de données PostgreSQL. Le script de vidage généré par pg\$1dump charge les données dans une base de données portant le même nom et recrée les tables, les index et les clés étrangères. Pour restaurer les données dans une base de données portant un autre nom, utilisez la commande `pg_restore` et le paramètre `-d`.

Si vous migrez des données d’une base de données source PostgreSQL exécutée sur EC2 vers une cible Amazon RDS for PostgreSQL, vous pouvez utiliser le plug-in pglogical.

Pour plus d’informations sur l’importation d’une base de données PostgreSQL dans Amazon RDS for PostgreSQL ou Amazon Aurora PostgreSQL-Compatible Edition, consultez [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html).

### Utilisation de DMS pour migrer des données de PostgreSQL vers PostgreSQL
<a name="CHAP_Source.PostgreSQL.Homogeneous.DMS"></a>

 AWS DMS peut migrer des données, par exemple, d'une base de données PostgreSQL source installée sur site vers une instance Amazon RDS for PostgreSQL ou Aurora PostgreSQL cible. La migration des types de données PostgreSQL principaux ou de base réussit souvent.

**Note**  
Lorsque vous répliquez des tables partitionnées d’une source PostgreSQL vers une cible PostgreSQL, il n’est pas nécessaire de mentionner la table parent dans les critères de sélection de la tâche DMS. En mentionnant la table parent, cela déclenche la duplication des données dans les tables enfants de la cible, ce qui peut entraîner une violation de la PK. En sélectionnant uniquement les tables enfants dans les critères de sélection du mappage de table, la table parent est automatiquement remplie.

Les types de données pris en charge sur la base de données source mais non pris en charge sur la cible risquent de ne pas réussir à migrer. AWS DMS diffuse certains types de données sous forme de chaînes si le type de données est inconnu. La migration de certains types de données, tels que JSON et XML, peut réussir s'il s'agit de fichiers peu volumineux, mais peut échouer s'il s'agit de documents volumineux. 

Lorsque vous effectuez une migration du type de données, prenez en considération ce qui suit :
+ Dans certains cas, le type de données PostgreSQL NUMERIC (p, s) ne spécifie aucune précision ni échelle. Pour DMS versions 3.4.2 et versions antérieures, DMS utilise une précision de 28 et une échelle de 6 par défaut, soit NUMERIC(28,6). Par exemple, la valeur 0,611111104488373 de la source est convertie en 0,611111 sur la cible PostgreSQL.
+ Une table avec un type de données ARRAY doit posséder une clé primaire. Une table dont le type de données ARRAY ne contient pas de clé primaire est suspendue pendant le chargement complet.

Le tableau suivant montre les types de données PostgreSQL source et indique si leur migration peut réussir :


| Type de données | Réussite de la migration | Migre partiellement | ne migre pas | Commentaires | 
| --- | --- | --- | --- | --- | 
| INTEGER | X |  |  |  | 
| SMALLINT | X |  |  |  | 
| BIGINT | X |  |  |  | 
| NUMERIC/DECIMAL(p,s) |  | X |  | Où 0<p<39 et 0<s | 
| NUMERIC/DECIMAL |  | X |  | Où p>38 ou p=s=0 | 
| REAL | X |  |  |  | 
| DOUBLE | X |  |  |  | 
| SMALLSERIAL | X |  |  |  | 
| SERIAL | X |  |  |  | 
| BIGSERIAL | X |  |  |  | 
| MONEY | X |  |  |  | 
| CHAR |  | X |  | Sans précision spécifiée | 
| CHAR(n) | X |  |  |  | 
| VARCHAR |  | X |  | Sans précision spécifiée | 
| VARCHAR(n) | X |  |  |  | 
| TEXT | X |  |  |  | 
| BYTEA | X |  |  |  | 
| TIMESTAMP | X |  |  | Les valeurs infinies positives et négatives sont tronquées à « 9999-12-31 23:59:59 » et « 4713-01-01 00:00:00 BC » respectivement. | 
| TIMESTAMP WITH TIME ZONE |  | X |  |  | 
| DATE | X |  |  |  | 
| TIME | X |  |  |  | 
| TIME WITH TIME ZONE | X |  |  |  | 
| INTERVAL |  | X |  |  | 
| BOOLEAN | X |  |  |  | 
| ENUM |  |  | X |  | 
| CIDR | X |  |  |  | 
| INET |  |  | X |  | 
| MACADDR |  |  | X |  | 
| TSVECTOR |  |  | X |  | 
| TSQUERY |  |  | X |  | 
| xml |  | X |  |  | 
| POINT | X |  |  | Type de données spatiales PostGIS | 
| LINE |  |  | X |  | 
| LSEG |  |  | X |  | 
| BOX |  |  | X |  | 
| PATH |  |  | X |  | 
| POLYGON | X |  |  | Type de données spatiales PostGIS | 
| CIRCLE |  |  | X |  | 
| JSON |  | X |  |  | 
| ARRAY | X |  |  | Nécessite une clé primaire | 
| COMPOSITE |  |  | X |  | 
| RANGE |  |  | X |  | 
| LINESTRING | X |  |  | Type de données spatiales PostGIS | 
| MULTIPOINT | X |  |  | Type de données spatiales PostGIS | 
| MULTILINESTRING | X |  |  | Type de données spatiales PostGIS | 
| MULTIPOLYGON | X |  |  | Type de données spatiales PostGIS | 
| GEOMETRYCOLLECTION | X |  |  | Type de données spatiales PostGIS | 

### Migration de types de données spatiales PostGIS
<a name="CHAP_Source.PostgreSQL.DataTypes.Spatial"></a>

Les *données spatiales* identifient les informations géométriques d'un objet ou d'un emplacement dans l'espace. Les bases de données relationnelles objet PostgreSQL prennent en charge les types de données spatiales PostGIS. 

Avant de migrer des objets de données spatiales PostgreSQL, assurez-vous que le plug-in PostGIS est activé au niveau global. Cela garantit la AWS DMS création des colonnes de données spatiales source exactes pour l'instance de base de données cible PostgreSQL.

Pour les migrations homogènes de PostgreSQL vers PostgreSQL AWS DMS , prend en charge la migration des types et sous-types d'objets de données géométriques et géographiques (coordonnées géodésiques) de PostGIS tels que les suivants :
+  POINT 
+  LINESTRING 
+  POLYGON 
+  MULTIPOINT 
+  MULTILINESTRING 
+  MULTIPOLYGON 
+  GEOMETRYCOLLECTION 

## Migration depuis Babelfish pour Amazon Aurora PostgreSQL à l'aide de AWS DMS
<a name="CHAP_Source.PostgreSQL.Babelfish"></a>

Vous pouvez migrer les tables sources PostgreSQL de Babelfish for Aurora vers tous les points de terminaison cibles pris en charge à l'aide de. AWS DMS

Lorsque vous créez votre point de terminaison AWS DMS source à l'aide de la console DMS, de l'API ou des commandes CLI, vous définissez la source **sur Amazon Aurora PostgreSQL** et le nom de la base de données sur. **babelfish\$1db** Dans la section **Paramètres du point de terminaison**, assurez-vous que le **DatabaseMode**est défini sur **Babelfish** et que le nom de la base de données Babelfish T-SQL source **BabelfishDatabaseName**est défini sur Babelfish. Au lieu d'utiliser le port TCP Babelfish**1433**, utilisez le port TCP Aurora PostgreSQL. **5432**

Vous devez créer vos tables avant de migrer les données afin de vous assurer que DMS utilise les types de données et les métadonnées de table appropriés. Si vous ne créez pas vos tables sur la cible avant d'exécuter la migration, DMS peut créer les tables avec des types de données et des autorisations incorrects.

### Ajout de règles de transformation à votre tâche de migration
<a name="CHAP_Source.PostgreSQL.Babelfish.Transform"></a>

Lorsque vous créez une tâche de migration pour une source Babelfish, vous devez inclure des règles de transformation garantissant que DMS utilise les tables cibles pré-créées.

Si vous avez défini le mode de migration multi-bases de données lorsque vous avez défini votre cluster Babelfish pour PostgreSQL, ajoutez une règle de transformation qui renomme le nom du schéma en schéma T-SQL. Par exemple, si le nom du schéma T-SQL est le même que `dbo` celui de votre schéma Babelfish pour PostgreSQL`mydb_dbo`, renommez le schéma en utilisant une règle de transformation. `dbo` *Pour trouver le nom du schéma PostgreSQL, [consultez l'architecture de Babelfish dans le guide de l'utilisateur](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-architecture.html) Amazon Aurora.* 

Si vous utilisez le mode base de données unique, il n'est pas nécessaire d'utiliser une règle de transformation pour renommer les schémas de base de données. Les noms de schéma PostgreSQL sont mappés aux noms one-to-one de schéma de la base de données T-SQL.

L'exemple de règle de transformation suivant montre comment renommer le nom du schéma de `mydb_dbo` retour en `dbo` :

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

### Limitations liées à l'utilisation d'un point de terminaison source PostgreSQL avec des tables Babelfish
<a name="CHAP_Source.PostgreSQL.Babelfish.Limitations"></a>

Les limitations suivantes s'appliquent lors de l'utilisation d'un point de terminaison source PostgreSQL avec des tables Babelfish :
+ DMS prend uniquement en charge la migration depuis Babelfish version 16.2/15.6 et versions ultérieures, et DMS version 3.5.3 et ultérieure.
+ DMS ne reproduit pas les modifications de définition de table Babelfish sur le point de terminaison cible. Une solution à cette limitation consiste à appliquer d'abord les modifications de définition de table sur la cible, puis à modifier la définition de table sur la source Babelfish.
+ Lorsque vous créez des tables Babelfish avec le type de données BYTEA, DMS les convertit en type de `varbinary(max)` données lors de la migration vers SQL Server en tant que cible.
+ DMS ne prend pas en charge le mode LOB complet pour les types de données binaires. Utilisez plutôt le mode LOB limité pour les types de données binaires.
+ DMS ne prend pas en charge la validation des données pour Babelfish en tant que source.
+ Pour le réglage de la tâche **en mode de préparation de la table cible**, utilisez uniquement les modes **Ne rien faire** ou **Tronquer**. N’utilisez pas le mode **Supprimer les tables sur la cible**. Lorsque vous utilisez **Drop tables on target**, DMS peut créer les tables avec des types de données incorrects.
+ Lorsque vous utilisez la réplication continue (CDC ou Full load et CDC), définissez l'attribut de connexion `PluginName` supplémentaire (ECA) sur`TEST_DECODING`.
+ DMS ne prend pas en charge la réplication (CDC ou Full load et CDC) de tables partitionnées pour Babelfish en tant que source.

## Supprimer AWS DMS des artefacts d'une base de données source PostgreSQL
<a name="CHAP_Source.PostgreSQL.CleanUp"></a>

Pour capturer les événements DDL, AWS DMS crée divers artefacts dans la base de données PostgreSQL lorsqu'une tâche de migration démarre. Lorsque la tâche se termine, vous pouvez supprimer ces objets.

Pour supprimer les artefacts, émettez les instructions suivantes (dans leur ordre d’apparition), où `{AmazonRDSMigration}` est le schéma dans lequel les artefacts ont été créés. Procédez avec prudence lors de la suppression d’un schéma. Ne supprimez jamais un schéma opérationnel, surtout s'il est public.

```
drop event trigger awsdms_intercept_ddl;
```

Le déclencheur d'événements n'appartient pas à un schéma spécifique.

```
drop function {AmazonRDSMigration}.awsdms_intercept_ddl()
drop table {AmazonRDSMigration}.awsdms_ddl_audit
drop schema {AmazonRDSMigration}
```

## Paramètres de configuration supplémentaires lors de l’utilisation d’une base de données PostgreSQL en tant que source DMS
<a name="CHAP_Source.PostgreSQL.Advanced"></a>

Vous pouvez ajouter des paramètres de configuration supplémentaires lors de la migration des données d'une base de données PostgreSQL de deux façons :
+ Vous pouvez ajouter des valeurs à l'attribut de connexion supplémentaire pour capturer les événements DDL et pour spécifier le schéma dans lequel les objets de base de données DDL opérationnelle sont créés. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison et attributs de connexion supplémentaires (ECAs) lors de l'utilisation de PostgreSQL comme source DMS](#CHAP_Source.PostgreSQL.ConnectionAttrib).
+ Vous pouvez remplacer les paramètres de chaîne de connexion. Choisissez cette option pour effectuer l’une des opérations suivantes :
  + Spécifiez les AWS DMS paramètres internes. Ces paramètres étant rarement nécessaires, ils ne sont pas présentés dans l’interface utilisateur.
  + Spécifiez les valeurs pass-through (passthru) pour le client de base de données spécifique. AWS DMS inclut des paramètres intermédiaires dans la chaîne de connexion transmise au client de base de données.
+ En utilisant le paramètre au niveau de la table dans les versions 9.4 et supérieures de `REPLICA IDENTITY` PostgreSQL, vous pouvez contrôler les informations écrites dans write-ahead logs (). WALs Il le fait notamment pour identifier WALs les lignes mises à jour ou supprimées. `REPLICA IDENTITY FULL`enregistre les anciennes valeurs de toutes les colonnes de la ligne. À utiliser `REPLICA IDENTITY FULL` avec précaution pour chaque table, car il n'est peut-être pas nécessaire de `FULL` générer un nombre supplémentaire de WALs ce qui pourrait ne pas être nécessaire. Pour plus d’informations, consultez [ALTER TABLE-REPLICA IDENTITY](https://www.postgresql.org/docs/devel/sql-altertable.html). 

## Lire la réplique en tant que source pour PostgreSQL
<a name="CHAP_Source.PostgreSQL.ReadReplica"></a>

Utilisez les répliques de lecture PostgreSQL comme sources CDC pour réduire la charge de la base de données AWS DMS principale. Cette fonctionnalité est disponible à partir de PostgreSQL 16.x et AWS DMS nécessite la version 3.6.1 ou ultérieure. L'utilisation de répliques de lecture pour le traitement par le CDC réduit l'impact opérationnel sur votre base de données principale.

**Note**  
La version 16.x d'Amazon RDS PostgreSQL comporte des limites en matière de réplication logique en lecture dans les configurations à trois AZ (TAZ). Pour une prise en charge complète de la réplication logique en lecture dans les déploiements TAZ, vous devez utiliser PostgreSQL version 17.x ou ultérieure.

### Conditions préalables
<a name="CHAP_Source.PostgreSQL.ReadReplica.prereq"></a>

Avant d'utiliser une réplique en lecture comme source CDC pour AWS DMS, vous devez activer la réplication logique à la fois sur l'instance de base de données principale et sur sa réplique en lecture afin de créer un décodage logique sur une réplique en lecture. Effectuez les opérations suivantes :
+ Activez la réplication logique à la fois sur votre instance de base de données principale et sur sa réplique en lecture, ainsi que sur tout autre paramètre de base de données requis. Pour plus d'informations, consultez la section [Utilisation de bases de données PostgreSQL AWS gérées en tant que source DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.RDSPostgreSQL).
+ Pour les tâches CDC uniquement, créez un emplacement de réplication sur l'instance principale (du rédacteur). Pour plus d'informations, consultez la section [Utilisation de points de départ CDC natifs pour configurer le chargement CDC d'une source PostgreSQL](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10). Cette action est nécessaire car les répliques en lecture ne prennent pas en charge la création d'un slot de réplication.
+ Pour PostgreSQL version 16, le slot doit être créé manuellement sur le réplica en lecture.
+ Pour les versions 17 et ultérieures de PostgreSQL, le slot de réplication doit être créé sur le serveur principal et il est automatiquement synchronisé avec le réplica en lecture.
+ Lorsque vous utilisez des tâches CDC à chargement complet ou uniquement des tâches CDC, AWS DMS vous pouvez gérer automatiquement les emplacements de réplication logiques sur les instances principales, mais pas sur les répliques en lecture. Pour les répliques de lecture de PostgreSQL version 16, vous devez supprimer et recréer manuellement les emplacements de réplication avant de redémarrer une tâche (et non de la reprendre). Le fait de sauter cette étape peut entraîner l'échec des tâches ou des positions de départ du CDC incorrectes. À partir de la version 17 de PostgreSQL, la synchronisation des emplacements logiques depuis l'instance principale automatise ce processus.

Une fois les conditions requises remplies, vous pouvez configurer votre point de terminaison AWS DMS source avec la réplication de la source `SlotName` de réplication lue dans les paramètres du point de terminaison et configurer votre AWS DMS tâche à l'aide des points de départ CDC natifs. Pour plus d'informations, voir [Paramètres du point de terminaison et attributs de connexion supplémentaires (ECAs) lors de l'utilisation de PostgreSQL comme source DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib) [et Utilisation de points de départ CDC natifs pour configurer le chargement CDC d'une](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10) source PostgreSQL.

## Utilisation du paramètre de point de `MapBooleanAsBoolean` terminaison PostgreSQL
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting"></a>

Vous pouvez utiliser les paramètres de point de terminaison PostgreSQL pour mapper un booléen en tant que booléen de votre source PostgreSQL à une cible Amazon Redshift. Par défaut, un type BOOLEAN est migré au format varchar(5). Vous pouvez indiquer à `MapBooleanAsBoolean` d’autoriser PostgreSQL à migrer le type booléen en tant que booléen, comme illustré dans l’exemple suivant.

```
--postgre-sql-settings '{"MapBooleanAsBoolean": true}'
```

Notez que vous devez définir ce paramètre à la fois sur les points de terminaison sources et cibles pour qu’il prenne effet.

Comme MySQL n'a pas de type BOOLEAN, utilisez une règle de transformation plutôt que ce paramètre lors de la migration de données BOOLEAN vers MySQL.

## Paramètres du point de terminaison et attributs de connexion supplémentaires (ECAs) lors de l'utilisation de PostgreSQL comme source DMS
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib"></a>

Vous pouvez utiliser les paramètres du point de terminaison et les attributs de connexion supplémentaires (ECAs) pour configurer votre base de données source PostgreSQL. Vous spécifiez les paramètres du point de terminaison lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--postgre-sql-settings '{"EndpointSetting": "value", ...}'` JSON.

Le tableau suivant indique les paramètres du point de terminaison ECAs que vous pouvez utiliser avec PostgreSQL en tant que source.

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

## Limitations de l’utilisation d’une base de données PostgreSQL en tant que source DMS
<a name="CHAP_Source.PostgreSQL.Limitations"></a>

Les limites suivantes s'appliquent lorsque vous utilisez PostgreSQL comme source pour AWS DMS :
+ AWS DMS ne fonctionne pas avec Amazon RDS pour PostgreSQL 10.4 ou Amazon Aurora PostgreSQL 10.4 en tant que source ou cible.
+ Une table capturée doit posséder une clé primaire. Si une table ne possède pas de clé primaire, AWS DMS ignore les opérations d'enregistrement DELETE et UPDATE pour cette table. Consultez [Activation de la capture des données de modification (CDC) à l’aide de la réplication logique](#CHAP_Source.PostgreSQL.Security) pour obtenir une solution de contournement. 

  **Remarque :** nous ne recommandons pas de migrer sans Key/Unique index principal, sinon des limitations supplémentaires s'appliquent, telles que la capacité « NON » d'application par lots, la fonctionnalité LOB complète, la validation des données et l'impossibilité de répliquer efficacement vers la cible Redshift.
+ AWS DMS ignore une tentative de mise à jour d'un segment de clé primaire. Dans ces cas, la cible identifie la mise à jour comme une mise à jour n'ayant mis à jour aucune ligne. Toutefois, comme les résultats de la mise à jour d'une clé primaire dans PostgreSQL sont imprévisibles, aucun enregistrement n'est écrit dans la table d'exceptions.
+ AWS DMS ne prend pas en charge l'option d'exécution **Start Process Changes from Timestamp**.
+ AWS DMS ne reproduit pas les modifications résultant d'opérations de partition ou de sous-partition (`ADD`,`DROP`, ou`TRUNCATE`).
+ La réplication de plusieurs tables portant le même nom lorsque chaque nom a une majuscule différente (par exemple, table1 et table1) peut entraîner un comportement imprévisible. TABLE1 En raison de ce problème, AWS DMS ne prend pas en charge ce type de réplication.
+ Dans la plupart des cas, AWS DMS prend en charge le traitement des modifications des instructions DDL CREATE, ALTER et DROP pour les tables. AWS DMS ne prend pas en charge ce traitement des modifications si les tables sont contenues dans un bloc de corps de fonction ou de procédure interne ou dans d'autres constructions imbriquées.

  Par exemple, la modification suivante n’est pas capturée.

  ```
  CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void
  LANGUAGE plpgsql
  AS $$
  BEGIN
  create table attu.distributors1(did serial PRIMARY KEY,name
  varchar(40) NOT NULL);
  END;
  $$;
  ```
+ Actuellement, les types de données `boolean` dans une source PostgreSQL sont migrés vers une cible SQL Server en tant que type de données `bit` avec des valeurs incohérentes. Pour contourner le problème, créez au préalable le tableau avec un type de `VARCHAR(1)` données pour la colonne (ou faites AWS DMS créer le tableau). Ensuite, faites en sorte que le traitement en aval traite un « F » comme Faux et un « T » comme Vrai.
+ AWS DMS ne prend pas en charge le traitement des modifications des opérations TRUNCATE.
+ Le type de données LOB OID n'est pas migré vers la cible.
+ AWS DMS prend en charge le type de données PostGIS uniquement pour les migrations homogènes.
+ Si votre source est une base de données PostgreSQL sur site ou sur une instance Amazon EC2, assurez-vous que le plug-in de sortie test\$1decoding est installé sur le point de terminaison source. Vous trouverez ce plug-in dans le package contrib PostgreSQL. Pour plus d'informations sur le plug-in test\$1decoding, consultez la [documentation PostgreSQL](https://www.postgresql.org/docs/10/static/test-decoding.html).
+ AWS DMS ne prend pas en charge le traitement des modifications pour définir ou annuler les valeurs par défaut des colonnes (en utilisant la clause ALTER COLUMN SET DEFAULT sur les instructions ALTER TABLE).
+ AWS DMS ne prend pas en charge le traitement des modifications pour définir la nullité des colonnes (en utilisant la clause ALTER COLUMN [SET\$1DROP] NOT NULL sur les instructions ALTER TABLE).
+ Lorsque la réplication logique est activée, le nombre maximal de modifications conservées en mémoire par transaction est de 4 Mo. Ensuite, les modifications sont déversées sur le disque. En conséquence, `ReplicationSlotDiskUsage` augmente et `restart_lsn` n’avance pas tant que la transaction n’est pas terminée ou arrêtée et que la restauration n’est pas terminée. Comme il s’agit d’une transaction longue, sa restauration peut prendre beaucoup de temps. Évitez donc les transactions de longue durée ou les nombreuses sous-transactions lorsque la réplication logique est activée. Divisez plutôt la transaction en plusieurs transactions plus petites. 

  Sur les versions 13 et ultérieures d'Aurora PostgreSQL, vous pouvez régler le paramètre pour contrôler `logical_decoding_work_mem` le moment où des déversements de DMS modifient les données sur le disque. Pour de plus amples informations, veuillez consulter [Déversez des fichiers dans Aurora PostgreSQL](CHAP_Troubleshooting_Latency_Source_PostgreSQL.md#CHAP_Troubleshooting_Latency_Source_PostgreSQL_Spill).
+ Une table avec un type de données ARRAY doit posséder une clé primaire. Une table dont le type de données ARRAY ne contient pas de clé primaire est suspendue pendant le chargement complet.
+ AWS DMS ne prend pas en charge la migration des métadonnées des tables liées au partitionnement des tables ou à l'héritage des [tables.](https://www.postgresql.org/docs/15/ddl-inherit.html) Lorsque AWS DMS vous rencontrez une table partitionnée ou une table utilisant l'héritage, le comportement suivant est observé :
  + AWS DMS identifie et signale les tables parent et enfant impliquées dans le partitionnement ou l'héritage dans la base de données source.
  + **Création de table sur la cible** : dans la base de données cible, AWS DMS crée la table en tant que table standard (non partitionnée, non héritée), en préservant la structure et les propriétés des tables sélectionnées, mais pas la logique de partitionnement ou d'héritage.
  + **Différenciation des enregistrements dans les tables héritées** : pour les tables utilisant l'héritage, AWS DMS ne distingue pas les enregistrements appartenant aux tables enfants lors du remplissage de la table parent. Par conséquent, il n'utilise pas de requêtes SQL avec une syntaxe telle que :`SELECT * FROM ONLY parent_table_name`.
+ Afin de répliquer les tables partitionnés d’une source PostgreSQL vers une cible PostgreSQL, commencez par créer manuellement les tables parent et enfant sur la cible. Définissez ensuite une tâche distincte pour effectuer la réplication sur ces tables. Dans ce cas, définissez la configuration de la tâche sur **Tronquer avant le chargement**.
+ Le type de données PostgreSQL `NUMERIC` n'est pas fixe. Lors du transfert de données de type `NUMERIC` sans précision ni échelle, DMS utilise `NUMERIC(28,6)` (une précision de 28 et une échelle de 6) par défaut. Par exemple, la valeur 0,611111104488373 de la source est convertie en 0,611111 sur la cible PostgreSQL.
+ AWS DMS prend en charge Aurora PostgreSQL Serverless V1 en tant que source pour les tâches à chargement complet uniquement. AWS DMS prend en charge Aurora PostgreSQL Serverless V2 en tant que source pour les tâches à chargement complet, à chargement complet, CDC et CDC uniquement.
+ AWS DMS ne prend pas en charge la réplication d'une table avec un index unique créé à l'aide d'une fonction de coalesce.
+ Si la définition de la clé primaire sur la source et la cible ne correspond pas, les résultats de la réplication peuvent être imprévisibles.
+ Lorsque vous utilisez la fonctionnalité de chargement parallèle, la segmentation de table en fonction des partitions ou des sous-partitions n’est pas prise en charge. Pour plus d’informations sur le chargement parallèle, consultez [Utilisation du chargement parallèle pour certaines tables, vues et collections](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.ParallelLoad). 
+ AWS DMS ne prend pas en charge les contraintes différées.
+ AWS DMS la version 3.4.7 prend en charge PostgreSQL 14.x en tant que source avec les limitations suivantes :
  + AWS DMS ne prend pas en charge le traitement des modifications lors de validations en deux phases.
  + AWS DMS ne prend pas en charge la réplication logique pour diffuser de longues transactions en cours.
+ AWS DMS ne prend pas en charge le proxy CDC pour Amazon RDS pour PostgreSQL en tant que source.
+ Lorsque vous utilisez des [filtres de source](CHAP_Tasks.CustomizingTasks.Filters.md) qui ne contiennent pas de colonne de clé primaire, les opérations `DELETE` ne sont pas capturées.
+ Si la base de données source est également la cible d’un autre système de réplication tiers, les modifications DDL risquent de ne pas être migrées pendant la CDC. En effet, cette situation peut empêcher le déclencheur d’événement `awsdms_intercept_ddl` de s’activer. Pour contourner ce problème, modifiez ce déclencheur dans la base de données source comme suit :

  ```
  alter event trigger awsdms_intercept_ddl enable always;
  ```
+ AWS DMS ne prend pas en charge la réplication des modifications apportées aux définitions de clés primaires dans la base de données source. Si la structure de la clé primaire est modifiée au cours d'une tâche de réplication active, les modifications ultérieures apportées aux tables concernées ne sont pas répliquées sur la cible.
+ Dans le cadre d'une réplication DDL dans le cadre d'un script, le nombre total maximum de commandes DDL par script est de 8192 et le nombre total maximum de lignes par script est de 8192 lignes.
+ AWS DMS ne prend pas en charge les vues matérialisées.
+ Pour le chargement complet et les tâches CDC utilisant une réplique en lecture comme source, il est AWS DMS impossible de créer des emplacements de réplication sur les répliques en lecture.

## Types de données sources pour PostgreSQL
<a name="CHAP_Source-PostgreSQL-DataTypes"></a>

Le tableau suivant indique les types de données sources PostgreSQL pris en charge lors de l' AWS DMS utilisation et le mappage AWS DMS par défaut vers les types de données.

Pour en savoir plus sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section concernant le point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Types de données PostgreSQL  |  Types de données DMS  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  NUMERIC (p,s)  |  Si la précision se situe entre 0 et 38, utilisez NUMERIC. Si la précision est 39 ou supérieure, utilisez STRING.  | 
|  DECIMAL(P,S)  |  Si la précision se situe entre 0 et 38, utilisez NUMERIC. Si la précision est 39 ou supérieure, utilisez STRING.  | 
|  REAL  |  REAL4  | 
|  DOUBLE  |  REAL8  | 
|  SMALLSERIAL  |  INT2  | 
|  SERIAL  |  INT4  | 
|  BIGSERIAL  |  INT8  | 
|  MONEY  |  NUMERIC(38,4) Le type de données MONEY est mappé sur FLOAT dans SQL Server.  | 
|  CHAR  |  WSTRING (1)  | 
|  CHAR(N)  |  WSTRING (n)  | 
|  VARCHAR(N)  |  WSTRING (n)  | 
|  TEXT  |  NCLOB  | 
|  CITEXT  |  NCLOB  | 
|  BYTEA  |  BLOB  | 
|  TIMESTAMP  |  DATETIME  | 
|  TIMESTAMP WITH TIME ZONE  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIME WITH TIME ZONE  |  TIME  | 
|  INTERVAL  |  STRING (128) : 1 YEAR, 2 MONTHS, 3 DAYS, 4 HOURS, 5 MINUTES, 6 SECONDS  | 
|  BOOLEAN  |  CHAR (5) Vrai ou faux ?  | 
|  ENUM  |  STRING (64)  | 
|  CIDR  |  STRING (50)  | 
|  INET  |  STRING (50)  | 
|  MACADDR  |  STRING (18)  | 
|  BIT (n)  |  STRING (n)  | 
|  BIT VARYING (n)  |  STRING (n)  | 
|  UUID  |  CHAÎNE  | 
|  TSVECTOR  |  CLOB  | 
|  TSQUERY  |  CLOB  | 
|  xml  |  CLOB  | 
|  POINT  |  STRING (255) "(x,y)"  | 
|  LINE  |  STRING (255) "(x,y,z)"  | 
|  LSEG  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  BOX  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  PATH  |  CLOB "((x1,y1),(xn,yn))"  | 
|  POLYGON  |  CLOB "((x1,y1),(xn,yn))"  | 
|  CIRCLE  |  STRING (255) "(x,y),r"  | 
|  JSON  |  NCLOB  | 
|  JSONB  |  NCLOB  | 
|  ARRAY  |  NCLOB  | 
|  COMPOSITE  |  NCLOB  | 
|  HSTORE  |  NCLOB  | 
|  INT4GAMME  |  STRING (255)  | 
|  INT8GAMME  |  STRING (255)  | 
|  NUMRANGE  |  STRING (255)  | 
|  STRRANGE  |  STRING (255)  | 

### Utilisation des types de données source LOB pour PostgreSQL
<a name="CHAP_Source-PostgreSQL-DataTypes-LOBs"></a>

Les tailles de colonne PostgreSQL affectent la conversion des types de données LOB PostgreSQL en types de données AWS DMS . Pour utiliser cela, procédez comme suit pour les types de données AWS DMS  :
+ BLOB : définissez **Limiter la taille LOB à** sur la valeur **Taille LOB maximale (Ko)** lors de la création de la tâche.
+ CLOB — La réplication traite chaque caractère comme un UTF8 caractère. Par conséquent, recherchez la longueur de la chaîne de caractères la plus longue dans la colonne, à savoir `max_num_chars_text` dans cet exemple. Utilisez cette longueur pour spécifier la valeur de **Limiter la taille LOB à**. Si les données comprennent des caractères à 4 octets, multipliez par 2 pour spécifier la valeur, en octets, de **Limit LOB size to (Limiter la taille LOB à)** Dans ce cas, la valeur de **Limit LOB size to (Limiter la taille LOB à)** est égale à `max_num_chars_text` multiplié par 2.
+ NCLOB : la réplication gère chaque caractère en tant que caractère à deux octets. Par conséquent, recherchez la longueur de la chaîne de caractères la plus longue dans la colonne (`max_num_chars_text`) et multipliez-la par 2. Faites-le pour spécifier la valeur de **Limiter la taille LOB à**. Dans ce cas, la valeur de **Limit LOB size to (Limiter la taille LOB à)** est égale à `max_num_chars_text` multiplié par 2. Si les données comprennent des caractères à 4 octets, multipliez encore par 2. Dans ce cas, la valeur de **Limit LOB size to (Limiter la taille LOB à)** est égale à `max_num_chars_text` multiplié par 4.

# Utilisation d'une base de données compatible MySQL comme source pour AWS DMS
<a name="CHAP_Source.MySQL"></a>

Vous pouvez migrer des données depuis n'importe quelle base de données compatible MySQL (MySQL, MariaDB ou Amazon Aurora MySQL) à l'aide du Database Migration Service. AWS 

Pour plus d'informations sur les versions de MySQL AWS DMS prises en charge en tant que source, consultez[Sources pour AWS DMS](CHAP_Introduction.Sources.md). 

Vous pouvez utiliser SSL pour chiffrer les connexions entre votre point de terminaison compatible MySQL et l'instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison compatible MySQL, consultez [Utilisation du protocole SSL avec AWS Database Migration Service](CHAP_Security.SSL.md).

Dans les sections suivantes, le terme « autogéré » s’applique à toute base de données installée sur site ou sur Amazon EC2. Le terme « géré par AWS » s’applique à toute base de données sur Amazon RDS, Amazon Aurora ou Amazon S3.

Pour plus de détails sur l'utilisation de bases de données compatibles avec MySQL AWS DMS, consultez les sections suivantes.

**Topics**
+ [Migration de MySQL vers MySQL en utilisant AWS DMS](#CHAP_Source.MySQL.Homogeneous)
+ [Utiliser n'importe quelle base de données compatible avec MySQL comme source pour AWS DMS](#CHAP_Source.MySQL.Prerequisites)
+ [Utilisation d'une base de données compatible MySQL autogérée comme source pour AWS DMS](#CHAP_Source.MySQL.CustomerManaged)
+ [Utilisation d'une base AWS de données compatible avec MySQL gérée comme source pour AWS DMS](#CHAP_Source.MySQL.AmazonManaged)
+ [Limitations relatives à l'utilisation d'une base de données MySQL comme source pour AWS DMS](#CHAP_Source.MySQL.Limitations)
+ [Prise en charge des transactions XA](#CHAP_Source.MySQL.XA)
+ [Paramètres du point de terminaison lors de l'utilisation de MySQL comme source pour AWS DMS](#CHAP_Source.MySQL.ConnectionAttrib)
+ [Types de données sources pour MySQL](#CHAP_Source.MySQL.DataTypes)

**Note**  
Lors de la configuration des règles de mappage AWS Database Migration Service (AWS DMS), il est important d'éviter d'utiliser des caractères génériques (%) pour les noms de base de données ou de schéma. Au lieu de cela, vous devez spécifier explicitement uniquement les bases de données créées par l'utilisateur qui doivent être migrées. L'utilisation d'un caractère générique inclut toutes les bases de données dans le processus de migration, y compris les bases de données système qui ne sont pas requises sur l'instance cible. Étant donné que l'utilisateur principal MySQL Amazon RDS ne dispose pas des autorisations nécessaires pour importer des données dans les bases de données du système cible, la tentative de migration de ces bases de données système échoue.

## Migration de MySQL vers MySQL en utilisant AWS DMS
<a name="CHAP_Source.MySQL.Homogeneous"></a>

Pour une migration hétérogène, lorsque vous migrez d'un moteur de base de données autre que MySQL vers une base de données MySQL, AWS DMS c'est presque toujours le meilleur outil de migration à utiliser. Mais pour une migration homogène, lorsque vous migrez d’une base de données MySQL vers une base de données MySQL, nous vous recommandons d’utiliser un projet de migrations de données homogènes. Les migrations de données homogènes utilisent des outils de base de données natifs pour fournir des performances et une précision de migration de données améliorées par rapport à AWS DMS.

## Utiliser n'importe quelle base de données compatible avec MySQL comme source pour AWS DMS
<a name="CHAP_Source.MySQL.Prerequisites"></a>

Avant de commencer à utiliser une base de données MySQL en tant que source pour AWS DMS, assurez-vous que vous remplissez les conditions préalables suivantes. Ces prérequis s'appliquent aux sources autogérées ou AWS gérées.

Vous devez disposer d'un compte AWS DMS doté du rôle d'administrateur de réplication. Ce rôle nécessite les privilèges suivants :
+ **REPLICATION CLIENT** : ce privilège est obligatoire pour les tâches de CDC uniquement. En d'autres termes, full-load-only les tâches ne nécessitent pas ce privilège. 
**Note**  
Pour la version 10.5.2\$1 de MariaDB, vous pouvez utiliser BINLOG MONITOR, qui remplace REPLICATION CLIENT.
+ **REPLICATION SLAVE** : ce privilège est obligatoire pour les tâches de CDC uniquement. En d'autres termes, full-load-only les tâches ne nécessitent pas ce privilège.
+ **SUPER** : ce privilège est nécessaire uniquement dans les versions de MySQL antérieures à 5.6.6.

L' AWS DMS utilisateur doit également disposer des privilèges SELECT pour les tables sources destinées à la réplication.

Accordez les privilèges suivants si vous utilisez des évaluations de prémigration spécifiques à MySQL :

```
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
grant select on performance_schema.replication_connection_status to <dms_user>;  #Required for primary instance validation - MySQL version 5.7 and higher only
```

Si vous utilisez une source RDS et que vous prévoyez d'exécuter des évaluations de prémigration spécifiques à MySQL, ajoutez l'autorisation suivante :

```
grant select on mysql.rds_configuration to <dms_user>;  #Required for binary log retention check
```

Si le paramètre `BatchEnable` est défini`true`, il est nécessaire d'accorder :

```
grant create temporary tables on `<schema>`.* to <dms_user>;
```

## Utilisation d'une base de données compatible MySQL autogérée comme source pour AWS DMS
<a name="CHAP_Source.MySQL.CustomerManaged"></a>

Vous pouvez utiliser les bases de données compatibles MySQL autogérées suivantes comme sources pour 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

Pour utiliser la CDC, assurez-vous d’activer la journalisation binaire. Pour activer la journalisation binaire, les paramètres suivants doivent être configurés dans le fichier `my.ini` (Windows) ou `my.cnf` (UNIX) de MySQL.


| Paramètre | Value | 
| --- | --- | 
| `server_id` | Définissez ce paramètre à une valeur 1 ou supérieure. | 
| `log-bin` | Définissez le chemin d'accès au fichier journal binaire, par exemple `log-bin=E:\MySql_Logs\BinLog`. N'ajoutez pas d'extension de fichier. | 
| `binlog_format` | Définissez ce paramètre à `ROW`. Nous recommandons d’utiliser ce paramètre lors de la réplication car, dans certains cas, lorsque `binlog_format` est défini sur `STATEMENT`, cela peut entraîner des incohérences lors de la réplication des données sur la cible. Le moteur de base de données écrit également des données incohérentes similaires sur la cible lorsque `binlog_format` est défini sur `MIXED`, car le moteur de base de données bascule automatiquement vers la journalisation basée sur `STATEMENT`, ce qui peut entraîner l’écriture de données incohérentes dans la base de données cible. | 
| `expire_logs_days` | Définissez ce paramètre à une valeur 1 ou supérieure. Pour éviter l'utilisation excessive d'espace disque, nous recommandons de ne pas utiliser la valeur par défaut de 0. | 
| `binlog_checksum` | Définissez ce paramètre sur `NONE` pour la version 3.4.7 ou antérieure de DMS. | 
| `binlog_row_image` | Définissez ce paramètre à `FULL`. | 
| `log_slave_updates` | Définissez ce paramètre sur `TRUE` si vous utilisez un réplica en lecture MySQL ou MariaDB comme source. | 

Si vous utilisez une réplique en lecture MySQL ou MariaDB comme source pour une tâche de migration DMS en **utilisant le mode Migrer les données existantes et répliquer les modifications en cours**, il existe un risque de perte de données. DMS n'écrit pas de transaction pendant le chargement complet ou pendant le CDC dans les conditions suivantes :
+ La transaction avait été validée sur l'instance principale avant le début de la tâche DMS.
+ La transaction n'a été validée dans la réplique qu'après le démarrage de la tâche DMS, en raison du décalage entre l'instance principale et la réplique.

Plus le délai entre l'instance principale et la réplique est long, plus le risque de perte de données est élevé.

Si votre source utilise le moteur de base de données NDB (en cluster), les paramètres suivants doivent être configurés pour permettre la capture des données modifiées sur les tables qui utilisent ce moteur de stockage. Ajoutez ces modifications dans le fichier `my.ini` (Windows) ou `my.cnf` (UNIX) de MySQL.


| Paramètre | Value | 
| --- | --- | 
| `ndb_log_bin` | Définissez ce paramètre à `ON`. Cette valeur garantit que les modifications dans les tables en cluster sont journalisées dans le journal binaire. | 
| `ndb_log_update_as_write` | Définissez ce paramètre à `OFF`. Cette valeur empêche d'écrire des instructions UPDATE en tant qu'instructions INSERT dans le journal binaire. | 
| `ndb_log_updated_only` | Définissez ce paramètre à `OFF`. Cette valeur permet de s'assurer que le journal binaire contient l'ensemble de la ligne, pas seulement les colonnes modifiées. | 

## Utilisation d'une base AWS de données compatible avec MySQL gérée comme source pour AWS DMS
<a name="CHAP_Source.MySQL.AmazonManaged"></a>

Vous pouvez utiliser les bases de données compatibles avec MySQL AWS gérées suivantes comme sources pour : AWS DMS
+ MySQL Community Edition
+ MariaDB Community Edition
+ Amazon Aurora MySQL-Compatible Edition

Lorsque vous utilisez une base de données compatible avec MySQL AWS gérée comme source pour AWS DMS, assurez-vous de remplir les conditions préalables suivantes pour le CDC :
+ Pour activer les journaux binaires pour RDS for MySQL et pour RDS for MariaDB, activez les sauvegardes automatiques au niveau de l’instance. Pour activer les journaux binaires pour un cluster Aurora MySQL, modifiez la variable `binlog_format` dans le groupe de paramètres.

  Pour plus d’informations sur la configuration des sauvegardes automatiques, consultez [Utilisation des sauvegardes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) dans le *Guide de l’utilisateur Amazon RDS*.

  Pour plus d’informations sur la configuration de la journalisation binaire pour une base de données Amazon RDS for MySQL, consultez [Configuration de la journalisation binaire MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) dans le *Guide de l’utilisateur Amazon RDS*. 

  Pour plus d’informations sur la configuration de la journalisation binaire pour un cluster Aurora MySQL, consultez [Comment puis-je activer la journalisation binaire pour mon cluster Amazon Aurora MySQL ?](https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/) 
+ Si vous envisagez d’utiliser la CDC, activez la journalisation binaire. Pour plus d’informations sur la configuration de la journalisation binaire pour une base de données Amazon RDS for MySQL, consultez [Configuration de la journalisation binaire MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) dans le *Guide de l’utilisateur Amazon RDS*.
+ Assurez-vous que les journaux binaires sont disponibles pour AWS DMS. Étant donné que les bases de données compatibles avec MySQL AWS gérées purgent les journaux binaires dès que possible, vous devez augmenter la durée pendant laquelle les journaux restent disponibles. Par exemple, pour accroître la rétention des journaux à 24 heures, exécutez la commande suivante. 

  ```
   call mysql.rds_set_configuration('binlog retention hours', 24);
  ```
+ Définissez le paramètre `binlog_format` sur `"ROW"`.
**Note**  
Sur MySQL ou MariaDB, `binlog_format` est un paramètre dynamique. Vous n’avez donc pas besoin de redémarrer pour que la nouvelle valeur prenne effet. Toutefois, la nouvelle valeur ne s’appliquera qu’aux nouvelles sessions. Si vous redéfinissez `binlog_format` sur `ROW` à des fins de réplication, la base de données peut toujours créer des journaux binaires ultérieurs en utilisant le format `MIXED`, si ces sessions ont débuté avant que vous n’ayez modifié la valeur. Cela peut AWS DMS empêcher de capturer correctement toutes les modifications apportées à la base de données source. Lorsque vous modifiez le paramètre `binlog_format` sur une base de données MariaDB ou MySQL, veillez à redémarrer la base de données pour fermer toutes les sessions existantes, ou à redémarrer toute application effectuant des opérations DML (Data Manipulation Language). Le fait de forcer votre base de données à redémarrer toutes les sessions après avoir modifié le `binlog_format` paramètre pour `ROW` garantir que votre base de données écrit toutes les modifications ultérieures de la base de données source dans le bon format, afin de AWS DMS pouvoir correctement capturer ces modifications.
+ Définissez le paramètre `binlog_row_image` sur `"Full"`. 
+ Définissez le `binlog_checksum` paramètre sur `"NONE"` pour la version 3.4.7 ou antérieure de DMS. Pour plus d’informations sur la définition des paramètres dans Amazon RDS MySQL, consultez [Utilisation des sauvegardes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) dans le *Guide de l’utilisateur Amazon RDS*.
+ Si vous utilisez un réplica en lecture Amazon RDS MySQL ou Amazon RDS MariaDB en tant que source, activez les sauvegardes sur le réplica en lecture et assurez-vous de définir le paramètre `log_slave_updates` sur `TRUE`.

## Limitations relatives à l'utilisation d'une base de données MySQL comme source pour AWS DMS
<a name="CHAP_Source.MySQL.Limitations"></a>

Lorsque vous utilisez une base de données MySQL comme source, tenez compte des éléments suivants :
+  La capture des données de modification (CDC) n’est pas prise en charge pour Amazon RDS MySQL 5.5 ou antérieur. Pour Amazon RDS MySQL, vous devez utiliser la version 5.6, 5.7 ou 8.0 pour activer la CDC. La CDC est prise en charge pour les sources MySQL 5.5 autogérées. 
+ Pour la CDC, `CREATE TABLE`, `ADD COLUMN`, `DROP COLUMN`, la modification du type de données de colonne et `renaming a column` sont pris en charge. Toutefois, `DROP TABLE`, `RENAME TABLE` et les mises à jour apportées à d’autres attributs, tels que la valeur par défaut de la colonne, la possibilité de valeur NULL de la colonne, le jeu de caractères, etc., ne sont pas pris en charge.
+  Pour les tables partitionnées sur la source, lorsque vous définissez le **mode de préparation des tables cibles** sur **Supprimer les tables sur la cible**, vous AWS DMS créez une table simple sans aucune partition sur la cible MySQL. Pour migrer des tables partitionnées vers une table partitionnée sur la cible, créez à l’avance les tables partitionnées sur la base de données MySQL cible.
+  L'utilisation d'une `ALTER TABLE table_name ADD COLUMN column_name` instruction pour ajouter des colonnes au début (FIRST) ou au milieu d'un tableau (AFTER) n'est pas prise en charge pour les cibles relationnelles. Les colonnes sont toujours ajoutées à la fin de la table. Lorsque la cible est Amazon S3 ou Amazon Kinesis Data Streams, l'ajout de colonnes à l'aide de FIRST ou AFTER est pris en charge.
+ La capture des données modifiées (CDC) n'est pas prise en charge quand un nom de table contient des caractères minuscules et majuscules, et le moteur source est hébergé sur un système d'exploitation avec des noms de fichier sensibles à la casse. Un exemple est Microsoft Windows ou OS X utilisant HFS\$1.
+ Vous pouvez utiliser Aurora MySQL Compatible Edition Serverless v1 pour le chargement complet, mais vous ne pouvez pas l'utiliser pour CDC. En effet, vous ne pouvez pas activer les prérequis pour MySQL. Pour plus d’informations , consultez [Groupes de paramètres et Aurora sans serveur v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.parameter-groups). 

  Aurora MySQL Compatible Edition Serverless v2 prend en charge le CDC.
+  L'attribut AUTO\$1INCREMENT sur une colonne n'est pas migré vers une colonne de base de données cible.
+  La capture des modifications n'est pas prise en charge lorsque les journaux binaires ne sont pas stockés sur un stockage en bloc standard. Par exemple, le CDC ne fonctionne pas lorsque les journaux binaires sont stockés sur Amazon S3.
+  AWS DMS crée des tables cibles avec le moteur de stockage InnoDB par défaut. Si vous avez besoin d'utiliser un moteur de stockage autre qu'InnoDB, vous devez créer manuellement la table et y migrer les données à l'aide du [mode « Ne rien faire »](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html).
+ Vous ne pouvez pas utiliser les répliques Aurora MySQL comme source, AWS DMS sauf si le mode de tâche de migration de votre DMS est **Migrer les données existantes**, chargement complet uniquement.
+  Si la source compatible avec MySQL est arrêtée pendant le chargement complet, la AWS DMS tâche ne s'arrête pas avec une erreur. La tâche se termine avec succès, mais la cible peut ne pas être synchronisée avec la source. Si cela se produit, redémarrez la tâche ou rechargez les tables affectées.
+  Les index créés sur une partie d'une valeur de colonne ne sont pas migrés. Par exemple, l'index CREATE INDEX first\$1ten\$1chars ON customer (name(10)) n'est pas créé sur la cible.
+ Dans certains cas, la tâche est configurée pour ne pas être répliquée LOBs (la valeur SupportLobs « » est fausse dans les paramètres de la tâche ou l'**option Ne pas inclure les colonnes LOB** est sélectionnée dans la console des tâches). Dans ces cas, AWS DMS ne migre aucune colonne MEDIUMBLOB, LONGBLOB, MEDIUMTEXT et LONGTEXT vers la cible.

  Les colonnes BLOB, TINYBLOB, TEXT et TINYTEXT ne sont pas affectées et sont migrées vers la cible.
+ Les tables de données temporelles ou les tables gérées par version du système ne sont pas prises en charge dans les bases de données sources et cibles MariaDB.
+ En cas de migration entre deux clusters Amazon RDS Aurora MySQL, le point de terminaison source RDS Aurora MySQL doit être read/write une instance et non une instance de réplique. 
+ AWS DMS ne prend actuellement pas en charge la migration des vues pour MariaDB.
+ AWS DMS ne prend pas en charge les modifications DDL pour les tables partitionnées pour MySQL. Pour ignorer la suspension de table en cas de modification de DDL de partition pendant la CDC, définissez `skipTableSuspensionForPartitionDdl` sur `true`.
+ AWS DMS prend uniquement en charge les transactions XA dans les versions 3.5.0 et supérieures. Les versions précédentes ne prennent pas en charge les transactions XA. AWS DMS ne prend pas en charge les transactions XA dans MariaDB version 10.6 ou supérieure. Pour plus d'informations, voir ci-dessous. [Prise en charge des transactions XA](#CHAP_Source.MySQL.XA)
+ AWS DMS ne sont pas utilisés GTIDs pour la réplication, même si les données source en contiennent. 
+ AWS DMS ne prend pas en charge le journal binaire amélioré Aurora MySQL.
+ AWS DMS ne prend pas en charge la compression des transactions du journal binaire.
+ AWS DMS ne propage pas les événements ON DELETE CASCADE et ON UPDATE CASCADE pour les bases de données MySQL utilisant le moteur de stockage InnoDB. Pour ces événements, MySQL ne génère pas d’événements binlog pour refléter les opérations en cascade sur les tables enfants. Par conséquent, AWS DMS impossible de répliquer les modifications correspondantes dans les tables enfants. Pour de plus amples informations, veuillez consulter [Non-migration des index, des clés étrangères ou des mises à jour ou suppressions en cascade](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.FKsAndIndexes).
+ AWS DMS ne capture pas les modifications apportées aux colonnes calculées (`VIRTUAL`et`GENERATED ALWAYS`). Pour contourner cette limitation, procédez comme suit :
  + Pré-créez la table cible dans la base de données cible et créez la tâche AWS DMS avec le paramètre de tâche de chargement complet `DO_NOTHING` ou `TRUNCATE_BEFORE_LOAD`.
  + Ajoutez une règle de transformation pour retirer la colonne calculée de la portée de tâche. Pour en savoir plus sur les règles de transformation, consultez [Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).
+ En raison des limites internes de MySQL, la taille du traitement BINLOGs ne AWS DMS peut pas dépasser 4 Go. BINLOGs une taille supérieure à 4 Go peut entraîner l'échec des tâches DMS ou d'autres comportements imprévisibles. Vous devez réduire la taille des transactions pour éviter des transactions BINLOGs supérieures à 4 Go.
+ AWS DMS ne prend pas en charge les backticks (```) ou les guillemets simples (`'`) dans les noms de schéma, de table et de colonne.
+ AWS DMS ne migre pas les données des colonnes invisibles de votre base de données source. Pour inclure ces colonnes dans le périmètre de votre migration, utilisez l'instruction ALTER TABLE pour les rendre visibles.

## Prise en charge des transactions XA
<a name="CHAP_Source.MySQL.XA"></a>

Une transaction Extended Architecture (XA) est une transaction qui peut être utilisée pour regrouper une série d’opérations provenant de plusieurs ressources transactionnelles en une seule transaction globale fiable. Une transaction XA utilise un protocole de validation en deux phases. En général, la capture des modifications avec des transactions XA ouvertes peut entraîner une perte de données. Si votre base de données n'utilise pas de transactions XA, vous pouvez ignorer cette autorisation et la configuration `IgnoreOpenXaTransactionsCheck` en utilisant la valeur par défaut. `TRUE` Pour commencer la réplication à partir d’une source qui contient des transactions XA, procédez comme suit :
+ Assurez-vous que l'utilisateur du AWS DMS terminal dispose des autorisations suivantes :

  ```
  grant XA_RECOVER_ADMIN on *.* to 'userName'@'%';
  ```
+ Définissez le paramètre de point de terminaison `IgnoreOpenXaTransactionsCheck` sur `false`.

**Note**  
AWS DMS ne prend pas en charge les transactions XA sur MariaDB Source DB version 10.6 ou supérieure.

## Paramètres du point de terminaison lors de l'utilisation de MySQL comme source pour AWS DMS
<a name="CHAP_Source.MySQL.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données source MySQL comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--my-sql-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec MySQL en tant que source sont indiqués dans le tableau suivant.

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

## Types de données sources pour MySQL
<a name="CHAP_Source.MySQL.DataTypes"></a>

Le tableau suivant indique les types de données source de base de données MySQL pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour en savoir plus sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section concernant le point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Types de données MySQL  |  AWS DMS types de données  | 
| --- | --- | 
|  INT  |  INT4  | 
|  BIGINT  |  INT8  | 
|  MEDIUMINT  |  INT4  | 
|  TINYINT  |  INT1  | 
|  SMALLINT  |  INT2  | 
|  UNSIGNED TINYINT  |  UINT1  | 
|  UNSIGNED SMALLINT  |  UINT2  | 
|  UNSIGNED MEDIUMINT  |  UINT4  | 
|  UNSIGNED INT  |  UINT4  | 
|  UNSIGNED BIGINT  |  UINT8  | 
|  DECIMAL(10)  |  NUMERIC (10,0)  | 
|  BINAIRE  |  BYTES(1)  | 
|  BIT  |  BOOLEAN  | 
|  BIT(64)  |  BYTES(8)  | 
|  BLOB  |  BYTES(65535)  | 
|  LONGBLOB  |  BLOB  | 
|  MEDIUMBLOB  |  BLOB  | 
|  TINYBLOB  |  BYTES(255)  | 
|  DATE  |  DATE  | 
|  DATETIME  |  DATETIME DATETIME sans valeur entre parenthèses est répliqué sans millisecondes. DATETIME avec une valeur entre parenthèses comprise entre 1 et 5 (par exemple, `DATETIME(5)`) est répliqué en millisecondes. Lors de la réplication d’une colonne DATETIME, l’heure reste la même sur la cible. Elle n’est pas convertie au format UTC.  | 
|  TIME  |  CHAÎNE  | 
|  TIMESTAMP  |  DATETIME Lors de la réplication d’une colonne TIMESTAMP, l’heure est convertie au format UTC sur la cible.  | 
|  YEAR  |  INT2  | 
|  DOUBLE  |  REAL8  | 
|  FLOAT  |  REAL(DOUBLE) Si les valeurs FLOAT ne sont pas comprises dans la plage suivante, utilisez une transformation pour mapper FLOAT à STRING. Pour plus d'informations sur les transformations, consultez [Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md). La plage de valeurs FLOAT prise en charge est -1.79E\$1308 à -2.23E-308, 0 et 2.23E-308 à 1.79E\$1308  | 
|  VARCHAR (45)  |  WSTRING (45)  | 
|  VARCHAR (2000)  |  WSTRING (2000)  | 
|  VARCHAR (4000)  |  WSTRING (4000)  | 
|  VARBINARY (4000)  |  BYTES (4000)  | 
|  VARBINARY (2000)  |  BYTES (2000)  | 
|  CHAR  |  WSTRING  | 
|  TEXT  |  WSTRING  | 
|  LONGTEXT  |  NCLOB  | 
|  MEDIUMTEXT  |  NCLOB  | 
|  TINYTEXT  |  WSTRING(255)  | 
|  GEOMETRY  |  BLOB  | 
|  POINT  |  BLOB  | 
|  LINESTRING  |  BLOB  | 
|  POLYGON  |  BLOB  | 
|  MULTIPOINT  |  BLOB  | 
|  MULTILINESTRING  |  BLOB  | 
|  MULTIPOLYGON  |  BLOB  | 
|  GEOMETRYCOLLECTION  |  BLOB  | 
|  ENUM  |  CHAÎNE () *length* *length*Voici la longueur de la plus longue valeur de l'ENUM.  | 
|  SET  |  CHAÎNE () *length* *length*Voici la longueur totale de toutes les valeurs du SET, y compris les virgules.  | 
|  JSON  |  CLOB  | 

**Note**  
Dans certains cas, vous pouvez spécifier les types de données DATETIME et TIMESTAMP avec une valeur « zéro » (c’est-à-dire 0000-00-00). Dans ce cas, assurez-vous que la base de données cible de la tâche de réplication prend en charge les valeurs « zéro » pour les types de données DATETIME et TIMESTAMP. Dans le cas contraire, ces valeurs sont enregistrées en tant que valeurs NULL dans la cible.

# Utilisation d'une base de données SAP ASE comme source pour AWS DMS
<a name="CHAP_Source.SAP"></a>

Vous pouvez migrer des données depuis une base de données SAP Adaptive Server Enterprise (ASE), anciennement connue sous le nom de Sybase, à l'aide de. AWS DMS Avec une base de données SAP ASE comme source, vous pouvez migrer des données vers n'importe quelle autre base de données AWS DMS cible prise en charge. 

Pour plus d'informations sur les versions de SAP ASE prises AWS DMS en charge en tant que source, consultez[Sources pour AWS DMS](CHAP_Introduction.Sources.md).

Pour plus de détails sur l'utilisation des bases de données SAP ASE AWS DMS, consultez les sections suivantes.

**Topics**
+ [Conditions préalables à l'utilisation d'une base de données SAP ASE comme source pour AWS DMS](#CHAP_Source.SAP.Prerequisites)
+ [Limitations liées à l'utilisation de SAP ASE comme source pour AWS DMS](#CHAP_Source.SAP.Limitations)
+ [Autorisations requises pour utiliser SAP ASE comme source pour AWS DMS](#CHAP_Source.SAP.Security)
+ [Suppression du point de troncature](#CHAP_Source.SAP.Truncation)
+ [Paramètres du point de terminaison lors de l'utilisation de SAP ASE comme source pour AWS DMS](#CHAP_Source.SAP.ConnectionAttrib)
+ [Types de données sources pour SAP ASE](#CHAP_Source.SAP.DataTypes)

## Conditions préalables à l'utilisation d'une base de données SAP ASE comme source pour AWS DMS
<a name="CHAP_Source.SAP.Prerequisites"></a>

Pour qu'une base de données SAP ASE serve de source AWS DMS, procédez comme suit :
+ Activez la réplication SAP ASE pour les tables en utilisant la commande `sp_setreptable`. Pour plus d’informations, consultez les [Sybase Infocenter Archive]( http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc32410_1501/html/refman/X37830.htm). 
+ Désactivez `RepAgent` sur la base de données SAP ASE. Pour plus d'informations, voir [Arrêter et désactiver le RepAgent thread dans la base de données principale](http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc20096_1260/html/mra126ag/mra126ag65.htm). 
+ Pour effectuer une réplication vers SAP ASE version 15.7 sur une instance Windows EC2 configurée pour les caractères non latins (chinois, par exemple), installez SAP ASE 15.7 SP121 sur l'ordinateur cible.

**Note**  
Pour la réplication continue de la capture des données de modification (CDC), DMS exécute `dbcc logtransfer` et `dbcc log` pour lire les données du journal des transactions.

## Limitations liées à l'utilisation de SAP ASE comme source pour AWS DMS
<a name="CHAP_Source.SAP.Limitations"></a>

Les limites suivantes s'appliquent lors de l'utilisation d'une base de données SAP ASE comme source pour AWS DMS :
+ Vous ne pouvez exécuter qu'une seule AWS DMS tâche avec réplication continue ou CDC pour chaque base de données SAP ASE. Vous pouvez exécuter plusieurs full-load-only tâches en parallèle.
+ Vous ne pouvez pas renommer une table. Par exemple, la commande suivante échoue.

  ```
  sp_rename 'Sales.SalesRegion', 'SalesReg;
  ```
+ Vous ne pouvez pas renommer une colonne. Par exemple, la commande suivante échoue.

  ```
  sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';
  ```
+ Les valeurs zéro situées à la fin des chaînes de type de données binaires sont tronqués lors de la réplication vers la base de données cible. Par exemple, `0x0000000000000000000000000100000100000000` dans la table source devient `0x00000000000000000000000001000001` dans la table cible.
+ Si la base de données par défaut est définie pour ne pas autoriser les valeurs NULL, AWS DMS crée la table cible avec des colonnes qui n'autorisent pas les valeurs NULL. Par conséquent, si un chargement complet ou une tâche de réplication CDC contient des valeurs vides, AWS DMS une erreur est générée. Vous pouvez éviter ces erreurs en autorisant les valeurs NULL dans la base de données source à l'aide des commandes suivantes.

  ```
  sp_dboption database_name, 'allow nulls by default', 'true'
  go
  use database_name
  CHECKPOINT
  go
  ```
+ La commande d'index `reorg rebuild` n'est pas prise en charge.
+ AWS DMS ne prend pas en charge les clusters ou n'utilise pas MSA (Multi-Site Availability) /Warm Standby comme source.
+ Lorsque l’expression d’en-tête de transformation `AR_H_TIMESTAMP` est utilisée dans les règles de mappage, les millisecondes ne sont pas capturées pour une colonne ajoutée.
+ L’exécution d’opérations de fusion pendant la CDC entraîne une erreur irrécupérable. Pour rétablir la synchronisation de la cible, effectuez un chargement complet.
+ Les événements déclencheurs de restauration ne sont pas pris en charge pour les tables qui utilisent un schéma de verrouillage des lignes de données.
+ AWS DMS Impossible de reprendre une tâche de réplication après avoir supprimé une table comprise dans le périmètre de la tâche depuis une base de données SAP source. Si la tâche de réplication DMS a été arrêtée et a effectué une opération DML (INSERT, UPDATE, DELETE) suivie de la suppression de la table, vous devez redémarrer la tâche de réplication.

## Autorisations requises pour utiliser SAP ASE comme source pour AWS DMS
<a name="CHAP_Source.SAP.Security"></a>

Pour utiliser une base de données SAP ASE comme source dans une AWS DMS tâche, vous devez accorder des autorisations. Accordez au compte utilisateur spécifié dans les définitions AWS DMS de base de données les autorisations suivantes dans la base de données SAP ASE : 
+ sa\$1role
+ replication\$1role
+ sybase\$1ts\$1role
+ Par défaut, lorsque vous devez être autorisé à exécuter la procédure `sp_setreptable` stockée, l'option AWS DMS de réplication SAP ASE est activée. Si vous souhaitez exécuter `sp_setreptable` sur une table directement depuis le point de terminaison de la base de données et non par AWS DMS lui-même, vous pouvez utiliser l'attribut de connexion `enableReplication` supplémentaire. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation de SAP ASE comme source pour AWS DMS](#CHAP_Source.SAP.ConnectionAttrib).

## Suppression du point de troncature
<a name="CHAP_Source.SAP.Truncation"></a>

Lorsqu'une tâche démarre, AWS DMS crée une `$replication_truncation_point` entrée dans la vue `syslogshold` système, indiquant qu'un processus de réplication est en cours. Pendant AWS DMS son fonctionnement, il avance le point de troncature de réplication à intervalles réguliers, en fonction de la quantité de données déjà copiées sur la cible.

Une fois l'`$replication_truncation_point`entrée établie, maintenez la AWS DMS tâche en cours d'exécution pour éviter que le journal de base de données ne devienne trop volumineux. Si vous souhaitez arrêter définitivement la AWS DMS tâche, supprimez le point de troncature de réplication en exécutant la commande suivante :

```
dbcc settrunc('ltm','ignore')
```

Une fois le point de troncature supprimé, vous ne pouvez pas reprendre la AWS DMS tâche. Le journal continue d'être tronqué automatiquement aux points de contrôle (si la troncature est configurée).

## Paramètres du point de terminaison lors de l'utilisation de SAP ASE comme source pour AWS DMS
<a name="CHAP_Source.SAP.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données source SAP ASE comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--sybase-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec SAP ASE en tant que source sont indiqués dans le tableau suivant.

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

## Types de données sources pour SAP ASE
<a name="CHAP_Source.SAP.DataTypes"></a>

Pour obtenir la liste des types de données source SAP ASE pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données, consultez le tableau suivant. AWS DMS ne prend pas en charge les tables sources SAP ASE avec des colonnes de type de données UDT (UDT) défini par l'utilisateur. Les colonnes répliquées avec ce type de données sont créées en tant que NULL. 

Pour plus d'informations sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section [Cibles pour la migration des données](CHAP_Target.md) relative à votre point de terminaison cible.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Type de données SAP ASE  |  AWS DMS types de données  | 
| --- | --- | 
| BIGINT | INT8 | 
| UNSIGNED BIGINT | UINT8 | 
| INT | INT4 | 
| UNSIGNED INT | UINT4 | 
| SMALLINT | INT2 | 
| UNSIGNED SMALLINT | UINT2 | 
| TINYINT | UINT1 | 
| DECIMAL | NUMERIC | 
| NUMERIC | NUMERIC | 
| FLOAT | REAL8 | 
| DOUBLE | REAL8 | 
| REAL | REAL4 | 
| MONEY | NUMERIC | 
| SMALLMONEY | NUMERIC | 
| DATETIME | DATETIME | 
| BIGDATETIME | DATETIME(6) | 
| SMALLDATETIME | DATETIME | 
| DATE | DATE | 
| TIME | TIME | 
| BIGTIME | TIME | 
| CHAR | CHAÎNE | 
| UNICHAR | WSTRING | 
| NCHAR | WSTRING | 
| VARCHAR | CHAÎNE | 
| UNIVARCHAR | WSTRING | 
| NVARCHAR | WSTRING | 
| BINAIRE | BYTES | 
| VARBINARY | BYTES | 
| BIT | BOOLEAN | 
| TEXT | CLOB | 
| UNITEXT | NCLOB | 
| IMAGE | BLOB | 

# Utilisation de MongoDB comme source pour AWS DMS
<a name="CHAP_Source.MongoDB"></a>

 Pour plus d'informations sur les versions de MongoDB prises AWS DMS en charge en tant que source, consultez. [Sources pour AWS DMS](CHAP_Introduction.Sources.md) 

Notez les éléments suivants concernant la prise en charge des versions de MongoDB :
+ Les versions AWS DMS 3.4.5 et ultérieures prennent en charge les versions 4.2 et 4.4 de MongoDB. 
+ Les versions AWS DMS 3.4.5 et ultérieures ainsi que les versions de MongoDB 4.2 et ultérieures prennent en charge les transactions distribuées. Pour plus d’informations sur les transactions distribuées MongoDB, consultez [Transactions](https://docs.mongodb.com/manual/core/transactions/) dans la [documentation de MongoDB](https://www.mongodb.com/docs/).
+ Les versions AWS DMS 3.5.0 et ultérieures ne prennent pas en charge les versions de MongoDB antérieures à 3.6.
+ Les versions AWS DMS 3.5.1 et ultérieures prennent en charge la version 5.0 de MongoDB.
+ Les versions AWS DMS 3.5.2 et ultérieures prennent en charge la version 6.0 de MongoDB.
+ Les versions AWS DMS 3.5.4 et ultérieures prennent en charge les versions 7.0 et 8.0 de MongoDB.



Si vous n'êtes pas encore familiarisé avec MongoDB, soyez conscient des concepts importants suivants relatifs aux bases de données MongoDB : 
+ Un enregistrement dans MongoDB est un *document*, c'est-à-dire une structure de données composée de paires champ-valeur. La valeur d'un champ peut contenir d'autres documents, tableaux et tableaux de documents. Un document correspond à peu près à une ligne dans une table de base de données relationnelle.
+ Une *collection* dans MongoDB est un groupe de documents et équivaut à peu près à une table de base de données relationnelle.
+ Une *base de données* dans MongoDB est un ensemble de collections et équivaut à peu près à un schéma dans une base de données relationnelle.
+ Au niveau interne, un document MongoDB est stocké sous forme de fichier JSON binaire (BSON) dans un format compressé qui contient un type pour chaque champ du document. Chaque document présente un ID unique.

AWS DMS prend en charge deux modes de migration lors de l'utilisation de MongoDB comme source, *en mode Document ou en mode* *Table*. Vous spécifiez le mode de migration à utiliser lorsque vous créez le point de terminaison MongoDB ou en définissant le paramètre **Mode métadonnées** à partir de la console AWS DMS . Vous pouvez éventuellement créer une deuxième colonne nommée `_id` qui fait office de clé primaire en cochant la case **\$1id en tant que colonne séparée** dans le panneau de configuration du point de terminaison. 

Le mode de migration que vous choisissez affecte le format résultant des données cibles, comme indiqué ci-après. 

**Mode document**  
En mode document, le document MongoDB est migré tel quel, ce qui signifie que ses données sont regroupées en une seule colonne nommée `_doc` dans une table cible. Le mode document est défini par défaut lorsque MongoDB est utilisé comme point de terminaison source.  
Prenons l'exemple des documents suivants dans une collection MongoDB appelée myCollection.  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
Une fois les données migrées vers une table de base de données relationnelle à l'aide du mode document, les données sont structurées comme suit. Les champs de données du document MongoDB sont regroupés dans la colonne ` _doc`.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.MongoDB.html)
Vous pouvez éventuellement définir l'attribut de connexion supplémentaire `extractDocID` sur *true* pour créer une seconde colonne nommée `"_id"`, qui servira de clé primaire. Pour pouvoir utiliser CDC, définissez ce paramètre sur *true*.  
Lorsque vous utilisez CDC avec des sources qui produisent des [transactions multidocuments](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), le `ExtractDocId` paramètre **doit être** défini sur *true*. Si ce paramètre n'est pas activé, la AWS DMS tâche échouera lorsqu'elle rencontrera une transaction comportant plusieurs documents.  
En mode document, AWS DMS gère la création et le changement de nom des collections comme suit :  
+ Si vous ajoutez une nouvelle collection à la base de données source, AWS DMS créez une nouvelle table cible pour la collection et répliquez tous les documents. 
+ Si vous renommez une collection existante dans la base de données source, AWS DMS ne renomme pas la table cible. 
Si le point de terminaison cible est Amazon DocumentDB, exécutez la migration en **mode document**.

**Mode table**  
En mode table, AWS DMS transforme chaque champ de premier niveau d'un document MongoDB en colonne dans la table cible. Si un champ est imbriqué, AWS DMS ajuste les valeurs imbriquées dans une seule colonne. AWS DMS ajoute ensuite un champ clé et des types de données au jeu de colonnes de la table cible.   
Pour chaque document MongoDB, AWS DMS ajoute chaque clé et chaque type au jeu de colonnes de la table cible. Par exemple, le mode table permet de AWS DMS migrer l'exemple précédent vers le tableau suivant.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.MongoDB.html)
Les valeurs imbriquées sont mises à plat dans une colonne contenant des noms de clé séparés par un point. La colonne est nommée en utilisant la forme concaténée des noms de champs mis à plat, séparés par des points. Par exemple, AWS DMS migre un document JSON contenant un champ de valeurs imbriquées, par exemple `{"a" : {"b" : {"c": 1}}}` dans une colonne nommée `a.b.c.`  
Pour créer les colonnes cibles, AWS DMS scanne un nombre spécifié de documents MongoDB et crée un ensemble de tous les champs et de leurs types. AWS DMS utilise ensuite cet ensemble pour créer les colonnes de la table cible. Si vous créez ou modifiez votre point de terminaison source MongoDB à l'aide de la console , vous pouvez spécifier le nombre de documents à analyser. La valeur par défaut est de 1000 documents. Si vous utilisez le AWS CLI, vous pouvez utiliser l'attribut de connexion supplémentaire`docsToInvestigate`.  
En mode tableau, AWS DMS gère les documents et les collections comme suit :  
+ Lorsque vous ajoutez un document à une collection existante, le document est répliqué. Si certains champs ne figurent pas dans la cible, ils ne sont pas répliqués.
+ Lorsque vous mettez à jour un document, celui-ci est répliqué. Si certains champs ne figurent pas dans la cible, ils ne sont pas répliqués.
+ La suppression d'un document est pleinement prise en charge.
+ L'ajout d'une nouvelle collection n'entraîne pas la création d'une nouvelle table dans la cible lorsque cela est effectué durant une tâche CDC.
+ Dans la phase Change Data Capture (CDC), AWS DMS il n'est pas possible de renommer une collection.

**Topics**
+ [Autorisations nécessaires lors de l'utilisation de MongoDB comme source pour AWS DMS](#CHAP_Source.MongoDB.PrerequisitesCDC)
+ [Configuration d’un ensemble de réplicas MongoDB pour la CDC](#CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet)
+ [Exigences de sécurité lors de l'utilisation de MongoDB comme source pour AWS DMS](#CHAP_Source.MongoDB.Security)
+ [Segmentation des collections MongoDB et migration en parallèle](#CHAP_Source.MongoDB.ParallelLoad)
+ [Migration de plusieurs bases de données lors de l'utilisation de MongoDB comme source pour AWS DMS](#CHAP_Source.MongoDB.Multidatabase)
+ [Limitations liées à l'utilisation de MongoDB comme source pour AWS DMS](#CHAP_Source.MongoDB.Limitations)
+ [Paramètres de configuration du point de terminaison lors de l'utilisation de MongoDB comme source pour AWS DMS](#CHAP_Source.MongoDB.Configuration)
+ [Types de données sources pour MongoDB](#CHAP_Source.MongoDB.DataTypes)

## Autorisations nécessaires lors de l'utilisation de MongoDB comme source pour AWS DMS
<a name="CHAP_Source.MongoDB.PrerequisitesCDC"></a>

Pour une AWS DMS migration avec une source MongoDB, vous pouvez créer soit un compte utilisateur avec des privilèges root, soit un utilisateur autorisé uniquement sur la base de données à migrer. 

Le code suivant permet de créer un utilisateur qui sera le compte racine.

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
)
```

Pour une source MongoDB 3.x, le code suivant permet de créer un utilisateur avec des autorisations minimales sur la base de données à migrer.

```
use database_to_migrate
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "read", db: "local" }, "read"] 
})
```

Pour une source MongoDB 4.x, le code suivant permet de créer un utilisateur avec des privilèges minimum.

```
{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }
```

Par exemple, créez le rôle suivant dans la base de données « admin ».

```
use admin
db.createRole(
{
role: "changestreamrole",
privileges: [
{ resource: { db: "", collection: "" }, actions: [ "find","changeStream" ] }
],
roles: []
}
)
```

Une fois le rôle créé, créez un utilisateur dans la base de données à migrer.

```
 use test
> db.createUser( 
{ 
user: "dms-user12345",
pwd: "password",
roles: [ { role: "changestreamrole", db: "admin" }, "read"] 
})
```

## Configuration d’un ensemble de réplicas MongoDB pour la CDC
<a name="CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet"></a>

Pour utiliser la réplication continue ou le CDC avec MongoDB, AWS DMS il faut accéder au journal des opérations MongoDB (oplog). Pour créer le journal oplog, vous devez déployer un ensemble de réplicas, s'il n'en existe pas encore. Pour obtenir plus d'informations, consultez [ la documentation MongoDB](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/).

Vous pouvez utiliser la capture des données modifiées (CDC) avec le nœud principal ou secondaire d'un ensemble de réplicas MongoDB comme point de terminaison source.

**Pour convertir une instance autonome en un ensemble de réplicas**

1. Utilisation d'une ligne de commande, se connecter à `mongo`.

   ```
   mongo localhost
   ```

1. Arrêtez le service `mongod`.

   ```
   service mongod stop
   ```

1. Redémarrez `mongod` à l'aide de la commande suivante :

   ```
   mongod --replSet "rs0" --auth -port port_number
   ```

1. Testez la connexion à l'ensemble de réplicas à l'aide des commandes suivantes :

   ```
   mongo -u root -p password --host rs0/localhost:port_number 
     --authenticationDatabase "admin"
   ```

Si vous prévoyez d'effectuer une migration en mode document, sélectionnez l'option `_id as a separate column` lors de la création du point de terminaison MongoDB. La sélection de cette option permet de créer une seconde colonne nommée `_id`, qui agit en tant que clé primaire. Cette deuxième colonne est requise AWS DMS pour prendre en charge les opérations du langage de manipulation de données (DML).

**Note**  
AWS DMS utilise le journal des opérations (oplog) pour enregistrer les modifications au cours de la réplication en cours. Si MongoDB vide les enregistrements du journal avant de les AWS DMS lire, vos tâches échouent. Nous vous recommandons de dimensionner le journal des opérations pour conserver les modifications pendant au moins 24 heures. 

## Exigences de sécurité lors de l'utilisation de MongoDB comme source pour AWS DMS
<a name="CHAP_Source.MongoDB.Security"></a>

AWS DMS prend en charge deux méthodes d'authentification pour MongoDB. Les deux méthodes d'authentification sont utilisées pour chiffrer le mot de passe. Elles sont donc utilisées uniquement lorsque le paramètre `authType` est défini sur *PASSWORD*.

Les méthodes d'authentification MongoDB sont les suivantes :
+ **MONGODB-CR** : pour la rétrocompatibilité
+ **SCRAM-SHA-1** : méthode par défaut lors de l’utilisation de MongoDB version 3.x et 4.0

Si aucune méthode d'authentification n'est spécifiée, AWS DMS utilise la méthode par défaut pour la version de la source MongoDB.

## Segmentation des collections MongoDB et migration en parallèle
<a name="CHAP_Source.MongoDB.ParallelLoad"></a>

Pour améliorer les performances d’une tâche de migration, les points de terminaison source MongoDB prennent en charge deux options de chargement complet en parallèle dans le mappage de table. 

En d’autres termes, vous pouvez migrer une collection en parallèle en utilisant la segmentation automatique ou la segmentation par plage avec le mappage de table pour un chargement complet en parallèle dans les paramètres JSON. Avec l'autosegmentation, vous pouvez spécifier les critères AWS DMS pour segmenter automatiquement votre source pour la migration dans chaque thread. Avec la segmentation par plage, vous pouvez déterminer AWS DMS la plage spécifique de chaque segment pour que le DMS migre dans chaque thread. Pour plus d’informations sur ces paramètres, consultez [Règles des paramètres de table et de collection et opérations](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

### Migration d’une base de données MongoDB en parallèle à l’aide de plages de segmentation automatique
<a name="CHAP_Source.MongoDB.ParallelLoad.AutoPartitioned"></a>

Vous pouvez migrer vos documents en parallèle en spécifiant les critères permettant à AWS DMS de partitionner (segmenter) automatiquement vos données pour chaque thread. Vous spécifiez notamment le nombre de documents à migrer par thread. À l'aide de cette approche, AWS DMS tente d'optimiser les limites des segments pour des performances maximales par thread.

Vous pouvez spécifier les critères de segmentation à l’aide des options table-settings suivantes dans table-mapping.


|  Option table-settings  |  Description  | 
| --- | --- | 
|  `"type"`  |  (Obligatoire) Définie sur `"partitions-auto"` pour MongoDB en tant que source.  | 
|  `"number-of-partitions"`  |  (Facultatif) Nombre total de partitions (segments) utilisées pour la migration. La valeur par défaut est 16.  | 
|  `"collection-count-from-metadata"`  |  (Facultatif) Si cette option est définie sur `true`, AWS DMS utilise une estimation du nombre de collections pour déterminer le nombre de partitions. Si cette option est définie sur`false`, AWS DMS utilise le nombre réel de collectes. La valeur par défaut est `true`.  | 
|  `"max-records-skip-per-page"`  |  (Facultatif) Le nombre d'enregistrements à ignorer simultanément lors de la détermination des limites de chaque partition. AWS DMS utilise une approche de saut paginé pour déterminer la limite minimale d'une partition. La valeur par défaut est 10 000.  La définition d’une valeur relativement élevée peut entraîner des délais d’expiration du curseur et des échecs de tâche. La définition d’une valeur relativement faible entraîne un plus grand nombre d’opérations par page et ralentit le chargement complet.   | 
|  `"batch-size"`  |  (Facultatif) Limite le nombre de documents renvoyés dans un lot. Chaque lot nécessite un aller retour jusqu’au serveur. Si la taille du lot est égale à zéro (0), le curseur utilise la taille de lot maximale définie par le serveur. La valeur par défaut est 0.  | 

L’exemple suivant illustre un mappage de table pour la segmentation automatique.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

La segmentation automatique présente les limitations suivantes. Pour chaque segment, la migration extrait séparément le nombre de collections et la valeur minimale de `_id` pour la collection. Elle ignore ensuite un certain nombre d’enregistrements par page pour calculer la limite minimale pour ce segment. 

Par conséquent, assurez-vous que la valeur minimale de `_id` reste constante pour chaque collection, jusqu’à ce que toutes les limites de segment de la collection soient calculées. Si vous modifiez la valeur minimale de `_id` d’une collection lors du calcul de ses limites de segment, cela peut entraîner une perte de données ou des erreurs de lignes en double.

### Migration d’une base de données MongoDB en parallèle à l’aide de la segmentation par plage
<a name="CHAP_Source.MongoDB.ParallelLoad.Ranges"></a>

Vous pouvez migrer vos documents en parallèle en spécifiant les plages pour chaque segment d’un thread. En utilisant cette approche, vous indiquez AWS DMS aux documents spécifiques à migrer dans chaque fil de discussion en fonction de votre choix de plages de documents par fil.

L’image suivante illustre une collection MongoDB composée de sept éléments, qui utilise `_id` comme clé primaire.

![\[Collection MongoDB composée de sept éléments.\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-docdb-collection.png)


Pour diviser la collection en trois segments spécifiques afin de AWS DMS migrer en parallèle, vous pouvez ajouter des règles de mappage de tables à votre tâche de migration. Cette approche est illustrée dans l’exemple de code JSON suivant.

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

Cette définition de mappage de table divise la collection source en trois segments et la migre en parallèle. Les limites de segmentation sont les suivantes.

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id > "5f805c97873173399a278d79" and num > 2 and _id  less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 (3 records)
Data with _id > "5f805cc5873173399a278d7c" and num > 5 (2 records)
```

Une fois la tâche de migration terminée, vous pouvez vérifier dans les journaux de tâches que les tables sont chargées en parallèle, comme indiqué dans l’exemple suivant. Vous pouvez également vérifier la clause `find` de MongoDB utilisée pour décharger chaque segment de la table source.

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

Actuellement, AWS DMS prend en charge les types de données MongoDB suivants en tant que colonne clé de segment :
+ Double
+ String
+ ObjectId
+ Entier 32 bits
+ Entier 64 bits

## Migration de plusieurs bases de données lors de l'utilisation de MongoDB comme source pour AWS DMS
<a name="CHAP_Source.MongoDB.Multidatabase"></a>

AWS DMS les versions 3.4.5 et supérieures prennent en charge la migration de plusieurs bases de données en une seule tâche pour toutes les versions de MongoDB prises en charge. Si vous souhaitez migrer plusieurs bases de données, procédez comme suit :

1. Lorsque vous créez le point de terminaison source MongoDB, procédez de l’une des manières suivantes :
   + Sur la page **Créer un point de terminaison** de la console DMS, assurez-vous que le **Nom de base de données** est vide sous **Configuration du point de terminaison**.
   + À l'aide de la AWS CLI `CreateEndpoint` commande, attribuez une valeur de chaîne vide au `DatabaseName` paramètre dans`MongoDBSettings`.

1. Pour chaque base de données que vous souhaitez migrer à partir d’une source MongoDB, spécifiez le nom de la base de données sous forme de nom de schéma dans le mappage de table de la tâche. Pour ce faire, utilisez la saisie guidée dans la console ou effectuez votre saisie directement dans le code JSON. Pour plus d’informations sur la saisie guidée, consultez [Spécification des règles de sélection de table et de transformation à partir de la console](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md). Pour plus d’informations sur le code JSON, consultez [Règles et actions de sélection](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md).

Vous pouvez par exemple spécifier le code JSON suivant pour migrer trois bases de données MongoDB.

**Example Migrer toutes les tables dans un schéma**  
Le code JSON suivant permet de migrer toutes les tables à partir des bases de données `Customers`, `Orders` et `Suppliers` du point de terminaison source vers votre point de terminaison cible.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "3",
            "rule-name": "3",
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

## Limitations liées à l'utilisation de MongoDB comme source pour AWS DMS
<a name="CHAP_Source.MongoDB.Limitations"></a>

Les limites suivantes s'appliquent à l'utilisation de MongoDB comme source pour : AWS DMS
+ En mode table, les documents d’une collection doivent être cohérents dans le type de données qu’ils utilisent pour la valeur du même champ. Par exemple, si un document d’une collection inclut `'{ a:{ b:value ... }'`, tous les documents de la collection qui font référence à `value` dans le champ `a.b` doivent utiliser le même type de données pour `value`, quel que soit l’endroit où il apparaît dans la collection.
+ Lorsque l'option `_id` est définie comme une colonne distincte, la chaîne d'ID ne peut pas contenir plus de 200 caractères.
+ Les clés de type de tableau et d'ID d'objet sont converties en colonnes dotées des préfixes `array` et `oid` en mode table.

  En interne, ces colonnes sont référencées avec les noms préfixés. Si vous utilisez des règles de transformation AWS DMS qui font référence à ces colonnes, assurez-vous de spécifier la colonne préfixée. Par exemple, vous spécifiez `${oid__id}` et pas `${_id}`, ou `${array__addresses}` et pas `${_addresses}`. 
+  Les noms de collection et les noms de clé ne peuvent pas contenir le symbole du dollar (\$1). 
+ AWS DMS ne prend pas en charge les collections contenant le même champ avec des majuscules et minuscules (majuscules, minuscules) en mode table avec une cible RDBMS. Par exemple, AWS DMS il n'est pas possible d'avoir deux collections nommées `Field1` et`field1`. 
+ Le mode table et le mode document présentent les limitations décrites précédemment.
+ La migration en parallèle à l’aide de la segmentation automatique présente les limitations décrites ci-dessus.
+ Les filtres de source ne sont pas pris en charge pour MongoDB.
+ AWS DMS ne prend pas en charge les documents dont le niveau d'imbrication est supérieur à 97.
+ AWS DMS nécessite des données source codées en UTF-8 lors de la migration vers des cibles autres que DocumentDB. Pour les sources contenant des caractères non UTF-8, convertissez-les en UTF-8 avant la migration ou migrez-les plutôt vers Amazon DocumentDB.
+ AWS DMS ne prend pas en charge les fonctionnalités suivantes de MongoDB version 5.0 :
  + Repartitionnement en direct
  + Chiffrement au niveau des champs côté client (CSFLE)
  + Migration de collections de séries temporelles
**Note**  
Une collection de séries temporelles migrée pendant la phase de chargement complet sera convertie en collection normale dans Amazon DocumentDB, car DocumentDB ne prend pas en charge les collections de séries temporelles.

## Paramètres de configuration du point de terminaison lors de l'utilisation de MongoDB comme source pour AWS DMS
<a name="CHAP_Source.MongoDB.Configuration"></a>

Lorsque vous configurez votre point de terminaison source MongoDB, vous pouvez spécifier plusieurs paramètres de configuration de point de terminaison à l'aide de la AWS DMS console. 

Le tableau suivant décrit les paramètres de configuration disponibles lors de l'utilisation des bases de données MongoDB comme source AWS DMS . 


| Paramètre (attribut) | Valeurs valides | Valeur par défaut et description | 
| --- | --- | --- | 
|  **Mode d’authentification**  |  `"none"` `"password"`  |  La valeur `"password"` invite à entrer un nom d’utilisateur et un mot de passe. Lorsque `"none"` est spécifié, les paramètres de nom d’utilisateur et de mot de passe ne sont pas utilisés.  | 
|  **Source d’authentification**  |  Un nom de base de données MongoDB valide.  |  Nom de la base de données MongoDB que vous souhaitez utiliser pour valider vos informations d’identification pour l’authentification. La valeur par défaut est `"admin"`.   | 
|  **Mécanisme d’authentification**  |  `"default"` `"mongodb_cr"` `"scram_sha_1"`  |  Mécanisme d’authentification. La valeur ` "default"` est `"scram_sha_1"`. Ce paramètre n'est pas utilisé lorsque la valeur `authType` est définie sur `"no"`.  | 
|  **Mode métadonnées**  |  Document et table  |  Choisit le mode document ou le mode table.   | 
|  **Nombre de documents à numériser** (`docsToInvestigate`)  |  Un nombre entier positif supérieur à `0`.  |  Utilisez cette option en mode table uniquement pour définir la définition de table cible.  | 
|  **\$1id en tant que colonne séparée**  |  Case cochée  |  Case à cocher facultative qui permet de créer une seconde colonne nommée `_id` qui sert de clé primaire.  | 
|   `ExtractDocID`   |  `true` `false`  |  `false` : utilisez cet attribut lorsque `NestingLevel` est défini sur `"none"`.  Lorsque vous utilisez CDC avec des sources qui produisent des [transactions multidocuments](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), le `ExtractDocId` paramètre **doit être** défini sur. `true` Si ce paramètre n'est pas activé, la AWS DMS tâche échouera lorsqu'elle rencontrera une transaction comportant plusieurs documents.  | 
|  `socketTimeoutMS`  |  Nombre entier supérieur ou égal à 0. Attribut de connexion supplémentaire (ECA) uniquement.  |  Ce paramètre est exprimé en millisecondes et configure le délai de connexion pour les clients MongoDB. Si la valeur est inférieure ou égale à zéro, la valeur par défaut du client MongoDB est utilisée.  | 
|   `UseUpdateLookUp`   |  `true` `false`  |  Lorsque c'est vrai, lors des événements de mise à jour du CDC, AWS DMS copie l'intégralité du document mis à jour vers la cible. Lorsqu'il est défini sur false, AWS DMS utilise la commande de mise à jour MongoDB pour mettre à jour uniquement les champs modifiés dans le document sur la cible.  | 
|   `ReplicateShardCollections`   |  `true` `false`  |  Lorsque c'est vrai, AWS DMS réplique les données vers des collections de partitions. AWS DMS utilise ce paramètre uniquement si le point de terminaison cible est un cluster Elastic DocumentDB. Lorsque ce paramètre est défini sur true, notez les éléments suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.MongoDB.html)  | 
|  `useTransactionVerification`  |  `true` `false`  |  Lorsque`false`, désactive la vérification entre le flux de modifications et les journaux.   Vous pouvez rater des opérations en cas de divergence entre les flux de modifications et les entrées du journal journal, car le comportement par défaut du DMS consiste à échouer la tâche dans de tels scénarios. Valeur par défaut : `true`.   | 
|  `useOplog`  |  `true` `false`  |  Quand`true`, permet à la tâche DMS de lire directement depuis « oplog » plutôt que d'utiliser le flux de modifications. Valeur par défaut : `false`.  | 

Si vous choisissez **Document** comme **Mode métadonnées**, différentes options sont disponibles. 

Si le point de terminaison cible est DocumentDB, assurez-vous d’exécuter la migration en **Mode document**. Modifiez également le point de terminaison source et sélectionnez l’option **\$1id en tant que colonne séparée**. Il s’agit d’un prérequis obligatoire si votre charge de travail MongoDB source implique des transactions.

## Types de données sources pour MongoDB
<a name="CHAP_Source.MongoDB.DataTypes"></a>

La migration de données qui utilise MongoDB comme source prend en AWS DMS charge la plupart des types de données MongoDB. Dans le tableau suivant, vous trouverez les types de données source MongoDB pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données. Pour de plus amples informations sur les types de données MongoDB, veuillez consulter [Types BSON](https://docs.mongodb.com/manual/reference/bson-types) dans la documentation MongoDB.

Pour obtenir des informations sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section relative au point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Types de données MongoDB  |  AWS DMS types de données  | 
| --- | --- | 
| Booléen | Booléen | 
| Binaire | BLOB | 
| Date | Date | 
| Horodatage | Date | 
| Int | INT4 | 
| Long | INT8 | 
| Double | REAL8 | 
| Chaîne (UTF-8) | CLOB | 
| Tableau | CLOB | 
| OID | String | 
| REGEX | CLOB | 
| CODE | CLOB | 

# Utilisation d'Amazon DocumentDB (compatible avec MongoDB) comme source pour AWS DMS
<a name="CHAP_Source.DocumentDB"></a>

Pour en savoir plus sur les versions d’Amazon DocumentDB (compatible avec MongoDB) prises en charge par AWS DMS en tant que source, consultez [Sources pour AWS DMS](CHAP_Introduction.Sources.md).

 En utilisant Amazon DocumentDB en tant que source, vous pouvez migrer des données d’un cluster Amazon DocumentDB vers un autre cluster Amazon DocumentDB. Vous pouvez également migrer les données d'un cluster Amazon DocumentDB vers l'un des autres points de terminaison cibles pris en charge par. AWS DMS

Si vous utilisez Amazon DocumentDB pour la première fois, prenez connaissance des concepts importants suivants relatifs aux bases de données Amazon DocumentDB :
+ Un enregistrement dans Amazon DocumentDB est un *document*, une structure de données composée de paires champ-valeur. La valeur d'un champ peut contenir d'autres documents, tableaux et tableaux de documents. Un document correspond à peu près à une ligne dans une table de base de données relationnelle.
+ Une *collection* dans Amazon DocumentDB est un groupe de documents et équivaut à peu près à une table de base de données relationnelle.
+ Une *base de données* dans Amazon DocumentDB est un ensemble de collections et équivaut à peu près à un schéma dans une base de données relationnelle.

AWS DMS prend en charge deux modes de migration lors de l'utilisation d'Amazon DocumentDB comme source, le mode document et le mode table. Vous spécifiez le mode de migration lorsque vous créez le point de terminaison source Amazon DocumentDB dans la AWS DMS console, à l'aide de l'option **Mode métadonnées** ou de l'attribut de connexion supplémentaire. `nestingLevel` Vous trouverez ci-dessous une explication sur la manière dont le choix du mode de migration affecte le format des données cibles.

**Mode document**  
En *mode document*, le document JSON est migré tel quel. Cela signifie que les données du document sont regroupées dans l’un des deux éléments suivants. Lorsque vous utilisez une base de données relationnelle en tant que cible, les données correspondent à une colonne unique nommée `_doc` dans une table cible. Lorsque vous utilisez une base de données non relationnelle en tant que cible, les données correspondent à un document JSON unique. Le mode document est le mode par défaut. Nous recommandons de l’utiliser lors de la migration vers une cible Amazon DocumentDB.  
Prenons l’exemple des documents suivants dans une collection Amazon DocumentDB appelée `myCollection`.  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
Une fois les données migrées vers une table de base de données relationnelle à l'aide du mode document, les données sont structurées comme suit. Les champs de données du document sont regroupés dans la colonne ` _doc`.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.DocumentDB.html)
Vous pouvez éventuellement définir l’attribut de connexion supplémentaire `extractDocID` sur `true` pour créer une seconde colonne nommée `"_id"`, qui servira de clé primaire. Si vous souhaitez utiliser la capture des données de modification (CDC), définissez ce paramètre sur `true`, sauf lorsque vous utilisez Amazon DocumentDB en tant que cible.  
Lorsque vous utilisez CDC avec des sources qui produisent des [transactions multidocuments](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), le `ExtractDocId` paramètre **doit être** défini sur. `true` Si ce paramètre n'est pas activé, la AWS DMS tâche échouera lorsqu'elle rencontrera une transaction comportant plusieurs documents.  
Si vous ajoutez une nouvelle collection à la base de données source, AWS DMS créez une nouvelle table cible pour la collection et répliquez tous les documents. 

**Mode table**  
En *mode table*,AWS DMS transforme chaque champ de niveau supérieur d’un document Amazon DocumentDB en colonne dans la table cible. Si un champ est imbriqué, AWS DMS ajuste les valeurs imbriquées dans une seule colonne. AWS DMS ajoute ensuite un champ clé et des types de données au jeu de colonnes de la table cible.   
Pour chaque document Amazon DocumentDB, AWS DMS ajoute chaque clé et chaque type au jeu de colonnes de la table cible. Par exemple, le mode table permet de AWS DMS migrer l'exemple précédent vers le tableau suivant.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.DocumentDB.html)
Les valeurs imbriquées sont mises à plat dans une colonne contenant des noms de clé séparés par un point. La colonne est nommée en utilisant la forme concaténée des noms de champs mis à plat, séparés par des points. Par exemple, AWS DMS migre un document JSON contenant un champ de valeurs imbriquées, par exemple `{"a" : {"b" : {"c": 1}}}` dans une colonne nommée `a.b.c.`  
Pour créer les colonnes cibles, AWS DMS scanne un certain nombre de documents Amazon DocumentDB et crée un ensemble de tous les champs et de leurs types. AWS DMS utilise ensuite cet ensemble pour créer les colonnes de la table cible. Si vous créez ou modifiez le point de terminaison source Amazon DocumentDB à l’aide de la console, vous pouvez spécifier le nombre de documents à analyser. La valeur par défaut est de 1 000 documents. Si vous utilisez le AWS CLI, vous pouvez utiliser l'attribut de connexion supplémentaire`docsToInvestigate`.  
En mode tableau, AWS DMS gère les documents et les collections comme suit :  
+ Lorsque vous ajoutez un document à une collection existante, le document est répliqué. Si certains champs ne figurent pas dans la cible, ils ne sont pas répliqués.
+ Lorsque vous mettez à jour un document, celui-ci est répliqué. Si certains champs ne figurent pas dans la cible, ils ne sont pas répliqués.
+ La suppression d'un document est pleinement prise en charge.
+ L'ajout d'une nouvelle collection n'entraîne pas la création d'une nouvelle table dans la cible lorsque cela est effectué durant une tâche CDC.
+ Dans la phase Change Data Capture (CDC), AWS DMS il n'est pas possible de renommer une collection.

**Topics**
+ [Définition des autorisations pour utiliser Amazon DocumentDB en tant que source](#CHAP_Source.DocumentDB.Permissions)
+ [Configuration de CDC pour un cluster Amazon DocumentDB](#CHAP_Source.DocumentDB.ConfigureCDC)
+ [Connexion à Amazon DocumentDB à l’aide du protocole TLS](#CHAP_Source.DocumentDB.TLS)
+ [Création d’un point de terminaison source Amazon DocumentDB](#CHAP_Source.DocumentDB.ConfigureEndpoint)
+ [Segmentation des collections Amazon DocumentDB et migration en parallèle](#CHAP_Source.DocumentDB.ParallelLoad)
+ [Migration de plusieurs bases de données lors de l'utilisation d'Amazon DocumentDB comme source pour AWS DMS](#CHAP_Source.DocumentDB.Multidatabase)
+ [Limitations liées à l'utilisation d'Amazon DocumentDB comme source pour AWS DMS](#CHAP_Source.DocumentDB.Limitations)
+ [Utilisation des paramètres de point de terminaison avec Amazon DocumentDB en tant que source](#CHAP_Source.DocumentDB.ECAs)
+ [Types de données sources pour Amazon DocumentDB](#CHAP_Source.DocumentDB.DataTypes)

## Définition des autorisations pour utiliser Amazon DocumentDB en tant que source
<a name="CHAP_Source.DocumentDB.Permissions"></a>

Lorsque vous utilisez la source Amazon DocumentDB pour une AWS DMS migration, vous pouvez créer un compte utilisateur avec des privilèges root. Vous pouvez également créer un utilisateur doté d’autorisations uniquement pour la base de données à migrer. 

Le code suivant permet de créer un utilisateur en tant que compte racine.

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  })
```

Pour Amazon DocumentDB 3.6, le code suivant permet de créer un utilisateur doté de privilèges minimum sur la base de données à migrer.

```
use db_name
db.createUser( 
    {
        user: "dms-user",
        pwd: "password",
        roles: [{ role: "read", db: "db_name" }]
    }
)
```

Pour Amazon DocumentDB 4.0 et versions ultérieures, AWS DMS utilise un flux de modifications à l'échelle du déploiement. Ici, le code suivant permet de créer un utilisateur doté de privilèges minimum.

```
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "readAnyDatabase", db: "admin" }] 
})
```

## Configuration de CDC pour un cluster Amazon DocumentDB
<a name="CHAP_Source.DocumentDB.ConfigureCDC"></a>

Pour utiliser la réplication continue ou le CDC avec Amazon DocumentDB, AWS DMS il faut accéder aux flux de modifications du cluster Amazon DocumentDB. Pour obtenir une description de la séquence chronologique des événements de mise à jour dans les collections et les bases de données de votre cluster, consultez [Utilisation des flux de modifications](https://docs.aws.amazon.com/documentdb/latest/developerguide/change_streams.html) dans le *Guide du développeur Amazon DocumentDB*. 

Authentifiez-vous auprès de votre cluster Amazon DocumentDB à l’aide du shell MongoDB. Ensuite, exécutez la commande suivante pour activer les flux de modifications.

```
db.adminCommand({modifyChangeStreams: 1,
    database: "DB_NAME",
    collection: "", 
    enable: true});
```

Cette approche active le flux de modifications pour toutes les collections de la base de données. Une fois les flux de modifications activés, vous pouvez créer une tâche de migration qui migre les données existantes tout en répliquant les modifications en cours. AWS DMS continue de capturer et d'appliquer les modifications même après le chargement des données en masse. Les bases de données sources et cibles sont finalement synchronisées, ce qui réduit au maximum le temps d’indisponibilité d’une migration.

**Note**  
AWS DMS utilise le journal des opérations (oplog) pour enregistrer les modifications au cours de la réplication en cours. Si Amazon DocumentDB efface les enregistrements du journal avant de les AWS DMS lire, vos tâches échoueront. Nous vous recommandons de dimensionner le journal des opérations pour conserver les modifications pendant au moins 24 heures.

## Connexion à Amazon DocumentDB à l’aide du protocole TLS
<a name="CHAP_Source.DocumentDB.TLS"></a>

Par défaut, un cluster Amazon DocumentDB récemment créé n’accepte que les connexions sécurisées qui utilisent le protocole TLS (Transport Layer Security). Lorsque le protocole TLS est activé, chaque connexion à Amazon DocumentDB nécessite une clé publique.

Vous pouvez récupérer la clé publique d'Amazon DocumentDB en téléchargeant le fichier `rds-combined-ca-bundle.pem` depuis un AWS compartiment Amazon S3 hébergé. Pour plus d’informations sur le téléchargement de ce fichier, consultez [Chiffrement des connexions à l’aide de TLS](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) dans le *Guide du développeur Amazon DocumentDB*. 

Après avoir téléchargé le `rds-combined-ca-bundle.pem` fichier, vous pouvez importer la clé publique qu'il contient AWS DMS. Les étapes suivantes expliquent comment procéder.

**Pour importer votre clé publique à l'aide de la AWS DMS console**

1. Connectez-vous au AWS Management Console et choisissez AWS DMS.

1. Dans le volet de navigation, choisissez **Certificates**.

1. Sélectionnez **Importer un certificat**. La page **Importer un nouveau certificat de CA** s’affiche.

1. Dans la section **Configuration de certificat**, effectuez l’une des opérations suivantes :
   + Pour **Identifiant de certificat**, entrez un nom unique pour le certificat, par exemple `docdb-cert`.
   + Choisissez **Choisir un fichier**, accédez à l’emplacement où vous avez enregistré le fichier `rds-combined-ca-bundle.pem`, puis sélectionnez-le.

1. Choisissez **Ajouter un certificat CA**.

L'exemple AWS CLI suivant utilise la AWS DMS `import-certificate` commande pour importer le `rds-combined-ca-bundle.pem` fichier de clé publique.

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

## Création d’un point de terminaison source Amazon DocumentDB
<a name="CHAP_Source.DocumentDB.ConfigureEndpoint"></a>

Vous pouvez créer un point de terminaison source Amazon DocumentDB à l’aide de la console ou d’ AWS CLI. Procédez comme suit avec la console.

**Pour configurer un point de terminaison source Amazon DocumentDB à l'aide de la console AWS DMS**

1. Connectez-vous au AWS Management Console et choisissez AWS DMS.

1. Choisissez **Points de terminaison** dans le volet de navigation, puis **Créer un point de terminaison**.

1. Pour **Identifiant de point de terminaison**, indiquez un nom qui vous permet de l’identifier facilement, tel que `docdb-source`.

1. Pour **Moteur source**, choisissez **Amazon DocumentDB (compatible avec MongoDB)**.

1. Pour **Nom du serveur**, entrez le nom du serveur sur lequel réside le point de terminaison de la base de données Amazon DocumentDB. Par exemple, vous pouvez entrer le nom DNS public de votre instance Amazon EC2, tel que `democluster.cluster-cjf6q8nxfefi.us-east-2.docdb.amazonaws.com`.

1. Pour **Port**, entrez 27017.

1. Pour **SSL mode (Mode SSL)**, choisissez **verify-full**. Si vous avez désactivé SSL sur votre cluster Amazon DocumentDB, vous pouvez ignorer cette étape.

1. Pour **Certificat CA**, choisissez le certificat Amazon DocumentDB, `rds-combined-ca-bundle.pem`. Pour obtenir des instructions sur l’ajout de ce certificat, consultez [Connexion à Amazon DocumentDB à l’aide du protocole TLS](#CHAP_Source.DocumentDB.TLS).

1. Pour **Nom de base de données**, entrez le nom de la base de données à migrer.

Procédez comme suit avec l’interface de ligne de commande.

**Pour configurer un point de terminaison source Amazon DocumentDB à l'aide du AWS CLI**
+ Exécutez la AWS DMS `create-endpoint` commande suivante pour configurer un point de terminaison source Amazon DocumentDB, en remplaçant les espaces réservés par vos propres valeurs.

  ```
  aws dms create-endpoint \
             --endpoint-identifier a_memorable_name \
             --endpoint-type source \
             --engine-name docdb \
             --username value \
             --password value \
             --server-name servername_where_database_endpoint_resides \
             --port 27017 \
             --database-name name_of_endpoint_database
  ```

## Segmentation des collections Amazon DocumentDB et migration en parallèle
<a name="CHAP_Source.DocumentDB.ParallelLoad"></a>

Pour améliorer les performances d’une tâche de migration, les points de terminaison sources Amazon DocumentDB prennent en charge deux options de la fonctionnalité de chargement complet en parallèle dans le mappage de table. En d’autres termes, vous pouvez migrer une collection en parallèle en utilisant les options de segmentation automatique ou de segmentation par plage du mappage de table pour un chargement complet en parallèle dans les paramètres JSON. Les options de segmentation automatique vous permettent de spécifier les critères pour AWS DMS segmenter automatiquement votre source pour la migration dans chaque thread. Les options de segmentation de plage vous permettent de définir AWS DMS la plage spécifique de chaque segment pour que DMS migre dans chaque thread. Pour plus d’informations sur ces paramètres, consultez [Règles des paramètres de table et de collection et opérations](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

### Migration d’une base de données Amazon DocumentDB en parallèle à l’aide de plages de segmentation automatique
<a name="CHAP_Source.DocumentDB.ParallelLoad.AutoPartitioned"></a>

Vous pouvez migrer vos documents en parallèle en spécifiant les critères AWS DMS pour partitionner (segmenter) automatiquement vos données pour chaque thread, notamment le nombre de documents à migrer par thread. En utilisant cette approche, AWS DMS tente d’optimiser les limites de segment pour augmenter les performances par thread.

Vous pouvez spécifier les critères de segmentation à l’aide des options table-settings suivantes dans table-mapping :


|  Option table-settings  |  Description  | 
| --- | --- | 
|  `"type"`  |  (Obligatoire) Définissez cette option sur `"partitions-auto"` pour Amazon DocumentDB en tant que source.  | 
|  `"number-of-partitions"`  |  (Facultatif) Nombre total de partitions (segments) utilisées pour la migration. La valeur par défaut est 16.  | 
|  `"collection-count-from-metadata"`  |  (Facultatif) Si ce paramètre est défini sur`true`, AWS DMS utilise une estimation du nombre de collectes pour déterminer le nombre de partitions. S'il est défini sur`false`, AWS DMS utilise le nombre réel de collectes. La valeur par défaut est `true`.  | 
|  `"max-records-skip-per-page"`  |  (Facultatif) Le nombre d'enregistrements à ignorer simultanément lors de la détermination des limites de chaque partition. AWS DMS utilise une approche de saut paginé pour déterminer la limite minimale d'une partition. La valeur par défaut est 10 000. La définition d’une valeur relativement élevée peut entraîner des délais d’expiration du curseur et des échecs de tâche. La définition d’une valeur relativement faible entraîne un plus grand nombre d’opérations par page et ralentit le chargement complet.   | 
|  `"batch-size"`  |  (Facultatif) Limite le nombre de documents renvoyés dans un lot. Chaque lot nécessite un aller retour jusqu’au serveur. Si la taille du lot est égale à zéro (0), le curseur utilise la taille de lot maximale définie par le serveur. La valeur par défaut est 0.  | 

L’exemple suivant illustre un mappage de table pour la segmentation automatique.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

La segmentation automatique présente les limitations suivantes. Pour chaque segment, la migration extrait séparément le nombre de collections et la valeur minimale de `_id` pour la collection. Elle ignore ensuite un certain nombre d’enregistrements par page pour calculer la limite minimale pour ce segment. Par conséquent, assurez-vous que la valeur minimale de `_id` reste constante pour chaque collection, jusqu’à ce que toutes les limites de segment de la collection soient calculées. Si vous modifiez la valeur minimale de `_id` d’une collection lors du calcul de ses limites de segment, cela peut entraîner une perte de données ou des erreurs de lignes en double.

### Migration d’une base de données Amazon DocumentDB en parallèle à l’aide de plages de segments spécifiques
<a name="CHAP_Source.DocumentDB.ParallelLoad.Ranges"></a>

L’exemple suivant illustre une collection Amazon DocumentDB composée de sept éléments, qui utilise `_id` comme clé primaire.

![\[Collection Amazon DocumentDB composée de sept éléments.\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-docdb-collection.png)


Pour diviser la collection en trois segments et la migrer en parallèle, vous pouvez ajouter des règles de mappage de table à votre tâche de migration, comme indiqué dans l’exemple JSON suivant.

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

Cette définition de mappage de table divise la collection source en trois segments et la migre en parallèle. Les limites de segmentation sont les suivantes.

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 and not in (_id less-than-or-equal-to  "5f805c97873173399a278d79" and num less-than-or-equal-to 2) (3 records)
Data not in (_id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5) (2 records)
```

Une fois la tâche de migration terminée, vous pouvez vérifier dans les journaux de tâches que les tables sont chargées en parallèle, comme indiqué dans l’exemple suivant. Vous pouvez également vérifier la clause `find` d’Amazon DocumentDB utilisée pour décharger chaque segment de la table source.

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

Actuellement, AWS DMS prend en charge les types de données Amazon DocumentDB suivants sous forme de colonne clé de segment :
+ Double
+ String
+ ObjectId
+ Entier 32 bits
+ Entier 64 bits

## Migration de plusieurs bases de données lors de l'utilisation d'Amazon DocumentDB comme source pour AWS DMS
<a name="CHAP_Source.DocumentDB.Multidatabase"></a>

AWS DMS les versions 3.4.5 et supérieures prennent en charge la migration de plusieurs bases de données en une seule tâche uniquement pour les versions 4.0 et supérieures d'Amazon DocumentDB. Si vous souhaitez migrer plusieurs bases de données, procédez comme suit :

1. Lorsque vous créez le point de terminaison source Amazon DocumentDB :
   + Dans le formulaire AWS DMS, AWS Management Console laissez le **nom de la base de données** vide sous **Configuration du point de terminaison** sur la page **Créer un point de terminaison**.
   + Dans le AWS Command Line Interface (AWS CLI), attribuez une valeur de chaîne vide au **DatabaseName**paramètre dans **Document DBSettings** que vous spécifiez pour l'**CreateEndpoint**action.

1. Pour chaque base de données que vous souhaitez migrer à partir de ce point de terminaison source Amazon DocumentDB, attribuez à chaque base de données le nom d’un schéma dans table-mapping pour la tâche en utilisant la saisie guidée dans la console ou directement dans le code JSON. Pour plus d’informations sur la saisie guidée, consultez la description dans [Spécification des règles de sélection de table et de transformation à partir de la console](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md). Pour plus d’informations sur le code JSON, consultez [Règles et actions de sélection](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md).

Vous pouvez par exemple spécifier le code JSON suivant pour migrer trois bases de données Amazon DocumentDB.

**Example Migrer toutes les tables dans un schéma**  
Le code JSON suivant permet de migrer toutes les tables à partir des bases de données `Customers`, `Orders` et `Suppliers` du point de terminaison source vers votre point de terminaison cible.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include"
        }
    ]
}
```

## Limitations liées à l'utilisation d'Amazon DocumentDB comme source pour AWS DMS
<a name="CHAP_Source.DocumentDB.Limitations"></a>

Les limites suivantes s'appliquent à l'utilisation d'Amazon DocumentDB comme source pour : AWS DMS
+ Lorsque l'option `_id` est définie comme une colonne distincte, la chaîne d'ID ne peut pas contenir plus de 200 caractères.
+ Les clés de type de tableau et d'ID d'objet sont converties en colonnes dotées des préfixes `array` et `oid` en mode table.

  En interne, ces colonnes sont référencées avec les noms préfixés. Si vous utilisez des règles de transformation AWS DMS qui font référence à ces colonnes, assurez-vous de spécifier la colonne préfixée. Par exemple, spécifiez `${oid__id}` et pas `${_id}`, ou `${array__addresses}` et pas `${_addresses}`. 
+  Les noms de collection et les noms de clé ne peuvent pas contenir le symbole du dollar (\$1). 
+ Le mode table et le mode document ont les limitations décrites précédemment.
+ La migration en parallèle à l’aide de la segmentation automatique présente les limitations décrites ci-dessus.
+ Une source Amazon DocumentDB (compatible avec MongoDB) ne prend pas en charge l’utilisation d’un horodatage spécifique comme position de départ pour la capture des données de modification (CDC). Une tâche de réplication continue commence à capturer les modifications quel que soit l’horodatage.
+ AWS DMS ne prend pas en charge les documents dont le niveau d'imbrication est supérieur à 97 pour les AWS DMS versions inférieures à 3.5.2.
+ Les filtres de source ne sont pas pris en charge pour DocumentDB.
+ AWS DMS ne prend pas en charge la réplication CDC (capture des données de modification) pour DocumentDB en tant que source en mode cluster élastique.

## Utilisation des paramètres de point de terminaison avec Amazon DocumentDB en tant que source
<a name="CHAP_Source.DocumentDB.ECAs"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données source Amazon DocumentDB comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--doc-db-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Amazon DocumentDB en tant que source sont indiqués dans le tableau suivant.


| Nom d’attribut | Valeurs valides | Valeur par défaut et description | 
| --- | --- | --- | 
|   `NestingLevel`   |  `"none"` `"one"`  |  `"none"` : spécifiez `"none"` pour utiliser le mode document. Spécifiez `"one"` pour activer le mode table.  | 
|   `ExtractDocID`   |  `true` `false`  |  `false` : utilisez cet attribut lorsque `NestingLevel` est défini sur `"none"`.  Lorsque vous utilisez CDC avec des sources qui produisent des [transactions multidocuments](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), le `ExtractDocId` paramètre **doit être** défini sur. `true` Si ce paramètre n'est pas activé, la AWS DMS tâche échouera lorsqu'elle rencontrera une transaction comportant plusieurs documents.  | 
|   `DocsToInvestigate`   |  Un nombre entier positif supérieur à `0`.  |  `1000` : utilisez cet attribut lorsque `NestingLevel` est défini sur `"one"`.   | 
|   `ReplicateShardCollections `   |  `true` `false`  |  Lorsque c'est vrai, AWS DMS réplique les données vers des collections de partitions. AWS DMS utilise ce paramètre uniquement si le point de terminaison cible est un cluster Elastic DocumentDB. Lorsque ce paramètre est défini sur true, notez les éléments suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.DocumentDB.html)  | 

## Types de données sources pour Amazon DocumentDB
<a name="CHAP_Source.DocumentDB.DataTypes"></a>

Le tableau suivant répertorie présente les types de données sources Amazon DocumentDB pris en charge lors de l’utilisation de AWS DMS. Vous trouverez également le mappage par défaut à partir AWS DMS des types de données dans ce tableau. Pour plus d’informations sur les types de données, consultez [BSON types](https://docs.mongodb.com/manual/reference/bson-types) dans la documentation de MongoDB.

Pour obtenir des informations sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section relative au point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Types de données Amazon DocumentDB  |  AWS DMS types de données  | 
| --- | --- | 
| Booléen | Booléen | 
| Binaire | BLOB | 
| Date | Date | 
| Horodatage | Date | 
| Int | INT4 | 
| Long | INT8 | 
| Double | REAL8 | 
| Chaîne (UTF-8) | CLOB | 
| Tableau | CLOB | 
| OID | String | 

# Utilisation d'Amazon S3 comme source pour AWS DMS
<a name="CHAP_Source.S3"></a>

Vous pouvez migrer des données depuis un compartiment Amazon S3 à l'aide de AWS DMS. Pour ce faire, fournissez un accès à un compartiment Amazon S3 contenant un ou plusieurs fichiers de données. Dans ce compartiment S3, incluez un fichier JSON qui décrit la mise en correspondance entre les données et les tables de base de données de ces données dans ces fichiers.

Les fichiers de données source doivent être présents dans le compartiment Amazon S3 avant que le chargement complet ne démarre. Vous spécifiez le nom de compartiment à l'aide du paramètre `bucketName`. 

Les fichiers de données sources peuvent être dans les formats suivants :
+ Valeur séparée par des virgules (.csv)
+ Parquet (version DMS 3.5.3 et versions ultérieures). Pour plus d'informations sur l'utilisation de fichiers au format Parquet, consultez. [Utilisation de fichiers au format Parquet dans Amazon S3 comme source pour AWS DMS](#CHAP_Source.S3.Parquet)

Pour les fichiers de données source au format de valeurs séparées par des virgules (.csv), nommez-les selon la convention de dénomination suivante. Dans cette convention, *`schemaName`* est le schéma source et *`tableName`* est le nom d'une table dans ce schéma.

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

 Par exemple, supposons que vos fichiers de données se trouvent dans `amzn-s3-demo-bucket` au chemin Amazon S3 suivant.

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

Au moment du chargement, AWS DMS suppose que le nom du schéma source est `hr` et que le nom de la table source est`employee`.

En plus de `bucketName` (ce qui est obligatoire), vous pouvez éventuellement fournir un `bucketFolder` paramètre pour spécifier où AWS DMS rechercher les fichiers de données dans le compartiment Amazon S3. En reprenant l'exemple précédent, si vous définissez `bucketFolder` sur`sourcedata`, AWS DMS lit les fichiers de données dans le chemin suivant.

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

Vous pouvez spécifier le délimiteur de colonne, le délimiteur de ligne, l'indicateur de valeur null et d'autres paramètres à l'aide d'attributs de connexion supplémentaires. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.Configuring).

Vous pouvez spécifier le propriétaire du compartiment et empêcher toute tricherie en utilisant le paramètre de point de terminaison Amazon S3 `ExpectedBucketOwner`, comme indiqué ci-dessous. Ensuite, lorsque vous soumettez une demande pour tester une connexion ou effectuer une migration, S3 compare l’ID de compte du propriétaire du compartiment au paramètre spécifié.

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

**Topics**
+ [Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.ExternalTableDef)
+ [Utilisation du CDC avec Amazon S3 comme source pour AWS DMS](#CHAP_Source.S3.CDC)
+ [Conditions préalables à l'utilisation d'Amazon S3 comme source pour AWS DMS](#CHAP_Source.S3.Prerequisites)
+ [Limitations liées à l'utilisation d'Amazon S3 comme source pour AWS DMS](#CHAP_Source.S3.Limitations)
+ [Paramètres du point de terminaison pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.Configuring)
+ [Types de données source pour Amazon S3](#CHAP_Source.S3.DataTypes)
+ [Utilisation de fichiers au format Parquet dans Amazon S3 comme source pour AWS DMS](#CHAP_Source.S3.Parquet)

## Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS
<a name="CHAP_Source.S3.ExternalTableDef"></a>

En plus des fichiers de données, vous devez fournir une définition de table externe. Une *définition de table externe* est un document JSON qui décrit comment AWS DMS interpréter les données d'Amazon S3. La taille maximale de ce document est de 2 Mo. Si vous créez un point de terminaison source à l'aide AWS DMS de la console de gestion, vous pouvez saisir le code JSON directement dans le champ de mappage des tables. Si vous utilisez le AWS Command Line Interface (AWS CLI) ou l' AWS DMS API pour effectuer des migrations, vous pouvez créer un fichier JSON pour spécifier la définition de la table externe.

Supposons que vous disposez d'un fichier de données qui inclut les éléments suivants.

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

Voici un exemple de définition de table externe pour ces données.

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

Les éléments figurant dans ce document JSON sont les suivants :

`TableCount` : nombre de tables source. Cet exemple comporte une seule table.

`Tables` : tableau comprenant un mappage JSON par table source. Cet exemple comporte une seule carte. Chaque carte comprend les éléments suivants :
+ `TableName` : nom de la table source.
+ `TablePath` : chemin dans votre compartiment Amazon S3 où AWS DMS peut trouver le fichier de chargement complet des données. Si une valeur `bucketFolder` est spécifiée, elle est ajoutée en préfixe au chemin.
+ `TableOwner` : nom du schéma pour cette table.
+ `TableColumns` : tableau d’un ou plusieurs mappages, chacun décrivant une colonne de la table source :
  + `ColumnName` : nom d’une colonne de la table source.
  + `ColumnType` : type de données de la colonne. Pour connaître les types de données valides, consultez [Types de données source pour Amazon S3](#CHAP_Source.S3.DataTypes).
  + `ColumnLength` : nombre d’octets dans cette colonne. La longueur de colonne maximale est limitée à 2147483647 octets (2 047 MegaBytes) car une source S3 ne supporte pas le mode FULL LOB. `ColumnLength`est valide pour les types de données suivants :
    + BYTE
    + CHAÎNE
  + `ColumnNullable` : valeur booléenne égale à `true` si cette colonne peut contenir des valeurs NULL (par défaut, `false`).
  + `ColumnIsPk` : valeur booléenne égale à `true` si cette colonne fait partie de la clé primaire (par défaut, `false`).
  + `ColumnDateFormat` : format de date d’entrée pour une colonne de types DATE, TIME et DATETIME ; utilisé pour analyser une chaîne de données dans un objet de date. Les valeurs possibles incluent :

    ```
    - YYYY-MM-dd HH:mm:ss
    - YYYY-MM-dd HH:mm:ss.F
    - YYYY/MM/dd HH:mm:ss
    - YYYY/MM/dd HH:mm:ss.F
    - MM/dd/YYYY HH:mm:ss
    - MM/dd/YYYY HH:mm:ss.F
    - YYYYMMdd HH:mm:ss
    - YYYYMMdd HH:mm:ss.F
    ```
+ `TableColumnsTotal` : nombre total de colonnes. Ce nombre doit correspondre au nombre d'éléments dans le tableau `TableColumns`.

Si vous ne spécifiez pas le contraire, AWS DMS supposez que `ColumnLength` c'est zéro.

**Note**  
Dans les versions prises en charge de AWS DMS, les données source S3 peuvent également contenir une colonne d'opération facultative comme première colonne avant la valeur de la `TableName` colonne. Cette colonne d'opération identifie l'opération (`INSERT`) utilisée pour migrer les données vers un point de terminaison cible S3 lors d'un chargement complet.   
Si elle est présente, la valeur de cette colonne est le caractère initial du mot-clé de l'opération `INSERT` (`I`). Si cette valeur est spécifiée, cette colonne indique généralement que la source S3 a été créée par DMS en tant que cible S3 au cours d'une migration précédente.   
Dans les versions de DMS antérieures à 3.4.2, cette colonne n’était pas présente dans les données source S3 créées à partir d’un chargement complet DMS précédent. L'ajout de cette colonne aux données cible S3 permet au format de toutes les lignes écrites dans la cible S3 d'être cohérent si celles-ci sont écrites lors d'un chargement complet ou d'un chargement CDC. Pour plus d'informations sur les options pour le formatage des données S3 cible, consultez [Indication des opérations de base de données source dans des données S3 migrées](CHAP_Target.S3.md#CHAP_Target.S3.Configuring.InsertOps).

Pour une colonne de type NUMERIC, spécifiez la précision et l'échelle. La *précision* est le nombre total de chiffres dans un nombre et l'*échelle* est le nombre de chiffres à droite de la virgule. Vous utilisez les éléments `ColumnPrecision` et `ColumnScale` pour cela, comme indiqué ci-après.

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

Pour une colonne de type DATETIME dont les données contiennent des fractions de seconde, spécifiez l’échelle. L’*échelle* est le nombre de chiffres pour les fractions de seconde. Elle est comprise entre 0 et 9. Vous utilisez l’élément `ColumnScale` pour cela, comme indiqué ci-après.

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

Si vous ne spécifiez pas le contraire, AWS DMS suppose qu'`ColumnScale`il est égal à zéro et tronque les fractions de secondes.

## Utilisation du CDC avec Amazon S3 comme source pour AWS DMS
<a name="CHAP_Source.S3.CDC"></a>

Après avoir AWS DMS effectué un chargement complet des données, il peut éventuellement répliquer les modifications de données sur le point de terminaison cible. Pour ce faire, vous chargez les fichiers de capture des données de modification (fichiers CDC) dans votre compartiment Amazon S3. AWS DMS lit ces fichiers CDC lorsque vous les téléchargez, puis applique les modifications au point de terminaison cible. 

Les fichiers CDC sont nommés comme suit :

```
CDC00001.csv
CDC00002.csv
CDC00003.csv
...
```

**Note**  
Pour répliquer des fichiers CDC dans le dossier des données de modification, chargez-les dans un ordre lexical (séquentiel). Par exemple, chargez le fichier CDC00002 .csv avant le fichier CDC00003 .csv. Sinon, le CDC00002 fichier .csv est ignoré et n'est pas répliqué si vous le chargez après le fichier .csv. CDC00003 Mais le fichier CDC00004 .csv se réplique correctement s'il est chargé après CDC00003 le fichier .csv.

Pour indiquer où se AWS DMS trouvent les fichiers, spécifiez le `cdcPath` paramètre. Pour continuer avec l'exemple précédent, si vous définissez `cdcPath` sur `changedata`, AWS DMS lit les fichiers CDC correspondant au chemin suivant.

```
s3://amzn-s3-demo-bucket/changedata
```

Si vous définissez `cdcPath` sur `changedata` et `bucketFolder` sur `myFolder`, AWS DMS lit les fichiers CDC au chemin suivant.

```
s3://amzn-s3-demo-bucket/myFolder/changedata
```

Les enregistrements figurant dans un fichier CDC sont formatés comme suit :
+ Opération : opération de modification à effectuer : `INSERT` ou `I`, `UPDATE` ou `U`, `DELETE` ou `D`. Ces mot-clé et ces valeurs de caractères ne sont pas sensibles à la casse.
**Note**  
Dans AWS DMS les versions prises en charge, AWS DMS vous pouvez identifier l'opération à effectuer pour chaque enregistrement de chargement de deux manières. AWS DMS peut le faire à partir de la valeur du mot clé de l'enregistrement (par exemple,`INSERT`) ou à partir du caractère initial du mot clé (par exemple,`I`). Dans les versions précédentes, l'opération de chargement était AWS DMS reconnue uniquement à partir de la valeur complète du mot clé.   
Dans les versions précédentes de AWS DMS, la valeur complète du mot clé était écrite pour enregistrer les données du CDC. De plus, les versions précédentes écrivaient la valeur d’opération sur toute cible S3 à l’aide du mot-clé initial uniquement.   
La reconnaissance des deux formats AWS DMS permet de gérer l'opération quelle que soit la manière dont la colonne d'opération est écrite pour créer les données source S3. Cette approche prend en charge l'utilisation de données cible S3 comme source pour une migration ultérieure. Avec cette approche, vous n'avez pas besoin de modifier le format de la valeur initiale d'un mot-clé qui apparaît dans la colonne d'opération de la source S3 ultérieure.
+ Nom de la table : nom de la table source.
+ Nom du schéma : nom du schéma source.
+ Données : une ou plusieurs colonnes qui représentent les données à modifier.

Voici un exemple de fichier CDC pour une table nommée `employee`.

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

## Conditions préalables à l'utilisation d'Amazon S3 comme source pour AWS DMS
<a name="CHAP_Source.S3.Prerequisites"></a>

Pour utiliser Amazon S3 comme source pour AWS DMS, votre compartiment S3 source doit se trouver dans la même AWS région que l'instance de réplication DMS qui migre vos données. De plus, le compte AWS que vous utilisez pour la migration doit avoir un accès en lecture au compartiment source. Pour les AWS DMS versions 3.4.7 et supérieures, DMS doit accéder au compartiment source via un point de terminaison VPC ou une route publique. Pour plus d'informations sur les points de terminaison VPC, consultez. [Configuration des points de terminaison VPC pour AWS DMS](CHAP_VPC_Endpoints.md)

Le rôle Gestion des identités et des accès AWS (IAM) attribué au compte utilisateur utilisé pour créer la tâche de migration doit disposer de l'ensemble d'autorisations suivant.

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

****  

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

------

Le rôle Gestion des identités et des accès AWS (IAM) attribué au compte utilisateur utilisé pour créer la tâche de migration doit disposer de l'ensemble d'autorisations suivant si le versionnement est activé sur le compartiment Amazon S3.

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

****  

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

------

## Limitations liées à l'utilisation d'Amazon S3 comme source pour AWS DMS
<a name="CHAP_Source.S3.Limitations"></a>

Les limitations suivantes s’appliquent lorsque vous utilisez Amazon S3 en tant que source :
+ N’activez pas la gestion des versions pour S3. Si vous avez besoin de la gestion des versions S3, utilisez des politiques de cycle de vie pour supprimer les anciennes versions de manière active. Dans le cas contraire, la connexion de test du point de terminaison risque d’échouer en raison du délai d’attente d’appel `list-object` S3. Pour créer une politique de cycle de vie pour un compartiment S3, consultez [Gestion du cycle de vie de votre stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Pour supprimer une version d’un objet S3, consultez [Suppression des versions d’objet d’un compartiment activé pour la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ Un compartiment S3 compatible VPC (VPC de passerelle) est pris en charge dans les versions 3.4.7 et ultérieures.
+ MySQL convertit le `time` type de données en. `string` Pour voir les valeurs `time` des types de données dans MySQL, définissez la colonne de la table cible comme `string` suit et définissez le paramètre du **mode de préparation de la table cible** de la tâche sur **Truncate**.
+ AWS DMS utilise le type de `BYTE` données en interne pour les données à la fois dans les types de `BYTES` données `BYTE` et de données.
+ Les points de terminaison source S3 ne prennent pas en charge la fonctionnalité de rechargement des tables DMS.
+ AWS DMS ne prend pas en charge le mode LOB complet avec Amazon S3 en tant que source.

Les limites suivantes s'appliquent lors de l'utilisation de fichiers au format Parquet dans Amazon S3 en tant que source :
+ Les dates sont incluses `MMYYYYDD` ou ne `DDMMYYYY` sont pas prises en charge pour la fonctionnalité de partitionnement de dates de S3 Parquet Source.

## Paramètres du point de terminaison pour Amazon S3 en tant que source pour AWS DMS
<a name="CHAP_Source.S3.Configuring"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données source Amazon S3 comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--s3-settings '{"EndpointSetting": "value", ...}'` JSON.

**Note**  
AWS DMS utilise par défaut une connexion sécurisée au point de terminaison Amazon S3 sans qu'il soit nécessaire de spécifier le mode ou le certificat SSL.

Les paramètres de point de terminaison que vous pouvez utiliser avec Amazon S3 en tant que source sont indiqués dans le tableau suivant.


| **Option** | **Description** | 
| --- | --- | 
| BucketFolder |  (Facultatif) Un nom de dossier dans le compartiment S3. Si cet attribut est spécifié, les fichiers de données source et les fichiers CDC sont lus à partir du chemin `s3://amzn-s3-demo-bucket/bucketFolder/schemaName/tableName/` et `s3://amzn-s3-demo-bucket/bucketFolder/`, respectivement. Si cet attribut n'est pas spécifié, le chemin utilisé est `schemaName/tableName/`.  `'{"BucketFolder": "sourceData"}'`  | 
| BucketName |  Le nom du compartiment S3. `'{"BucketName": "amzn-s3-demo-bucket"}'`  | 
| CdcPath | Emplacement des fichiers CDC. Cet attribut est requis si une tâche capture les données modifiées ; dans le cas contraire, il est facultatif. S'il CdcPath est présent, AWS DMS lit les fichiers CDC à partir de ce chemin et réplique les modifications de données sur le point de terminaison cible. Pour de plus amples informations, veuillez consulter [Utilisation du CDC avec Amazon S3 comme source pour AWS DMS](#CHAP_Source.S3.CDC). `'{"CdcPath": "changeData"}'`  | 
| CsvDelimiter |  Le délimiteur utilisé pour séparer les colonnes des fichiers sources. La valeur par défaut est une virgule. Un exemple suit. `'{"CsvDelimiter": ","}'`  | 
| CsvNullValue |  Chaîne définie par l'utilisateur qui est AWS DMS considérée comme nulle lors de la lecture depuis la source. La valeur par défaut est une chaîne vide. Si vous ne définissez pas ce paramètre, AWS DMS traite une chaîne vide comme une valeur nulle. Si vous définissez ce paramètre sur une chaîne telle que « \$1 N », AWS DMS traitez cette chaîne comme une valeur nulle et traitez les chaînes vides comme une valeur de chaîne vide.  | 
| CsvRowDelimiter |  Le délimiteur utilisé pour séparer les lignes des fichiers sources. La valeur par défaut est un caractère de saut de ligne (`\n`). `'{"CsvRowDelimiter": "\n"}'`  | 
| DataFormat |  Définissez cette valeur sur `Parquet` pour lire les données au format Parquet. `'{"DataFormat": "Parquet"}'`  | 
| IgnoreHeaderRows |  Lorsque cette valeur est définie sur 1, AWS DMS ignore le premier en-tête de ligne d'un fichier .csv. La valeur 1 active la fonctionnalité, la valeur 0 désactive la fonctionnalité. La valeur par défaut est 0. `'{"IgnoreHeaderRows": 1}'`  | 
| Rfc4180 |  Lorsque cette valeur est définie sur `true` ou `y`, chaque guillemet double de tête doit être suivi d’un guillemet double de fin. Ce format est conforme à RFC 4180. Lorsque ce paramètre est défini sur `false` ou `n`, les chaînes littérales sont copiées vers la cible en l'état. Dans ce cas, un délimiteur de colonne ou de ligne indique la fin du champ. Par conséquent, vous ne pouvez pas utiliser un délimiteur dans le cadre de la chaîne, car il indique une fin de la valeur. La valeur par défaut est `true`. Valeurs valides : `true`, `false`, `y`, `n` `'{"Rfc4180": false}'`  | 

## Types de données source pour Amazon S3
<a name="CHAP_Source.S3.DataTypes"></a>

Migration de données utilisant Amazon S3 comme source pour les AWS DMS besoins de mappage des données d'Amazon S3 vers AWS DMS des types de données. Pour de plus amples informations, veuillez consulter [Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.ExternalTableDef).

Pour en savoir plus sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section concernant le point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).

Les types de AWS DMS données suivants sont utilisés avec Amazon S3 comme source :
+ BYTE : requiert `ColumnLength`. Pour de plus amples informations, veuillez consulter [Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ DATE
+ TIME
+ DATETIME : pour plus d’informations et pour obtenir un exemple, consultez l’exemple de type DATETIME dans [Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ INT1
+ INT2
+ INT4
+ INT8
+ NUMÉRIQUE — Nécessite `ColumnPrecision` et. `ColumnScale` AWS DMS prend en charge les valeurs maximales suivantes :
  + **ColumnPrecision: 38**
  + **ColumnScale: 31**

  Pour plus d’informations et pour obtenir un exemple, consultez l’exemple de type NUMERIC dans [Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ REAL4
+ REAL8
+ STRING : requiert `ColumnLength`. Pour de plus amples informations, veuillez consulter [Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ UINT1
+ UINT2
+ UINT4
+ UINT8
+ BLOB
+ CLOB
+ BOOLEAN

## Utilisation de fichiers au format Parquet dans Amazon S3 comme source pour AWS DMS
<a name="CHAP_Source.S3.Parquet"></a>

Dans les AWS DMS versions 3.5.3 et ultérieures, vous pouvez utiliser des fichiers au format Parquet dans un compartiment S3 comme source pour la réplication à chargement complet ou la réplication CDC. 

DMS prend uniquement en charge les fichiers au format Parquet en tant que source que DMS génère en migrant des données vers un point de terminaison cible S3. Les noms de fichiers doivent être au format pris en charge, sinon DMS ne les inclura pas dans la migration.

Pour les fichiers de données source au format Parquet, ils doivent se trouver dans le dossier et dans la convention de dénomination suivants.

```
schema/table1/LOAD00001.parquet
schema/table2/LOAD00002.parquet
schema/table2/LOAD00003.parquet
```

Pour les fichiers de données source pour les données CDC au format Parquet, nommez-les et stockez-les en utilisant le dossier et la convention de dénomination suivants.

```
schema/table/20230405-094615814.parquet
schema/table/20230405-094615853.parquet
schema/table/20230405-094615922.parquet
```

Pour accéder aux fichiers au format Parquet, définissez les paramètres de point de terminaison suivants :
+ Définissez `DataFormat` sur `Parquet`. 
+ Ne définissez pas le `cdcPath` réglage. Assurez-vous de créer vos fichiers au format Parquet dans les dossiers de schéma ou de table spécifiés. 

*Pour plus d'informations sur les paramètres des points de terminaison S3, consultez [S3Settings](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html) dans la référence de l'AWS Database Migration Service API.*

### Types de données pris en charge pour les fichiers au format Parquet
<a name="CHAP_Source.S3.Parquet.Datatypes"></a>

AWS DMS prend en charge les types de données source et cible suivants lors de la migration de données à partir de fichiers au format Parquet. Assurez-vous que votre table cible comporte des colonnes contenant les types de données appropriés avant de procéder à la migration.


| Type de données source | Types de données cibles | 
| --- | --- | 
| BYTE | 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 | UINT | 
| WSTRING | STRING | 
| BLOB | BINARY | 
| NCLOB | STRING | 
| CLOB | STRING | 
| BOOLEAN | BOOL | 

# Utilisation d'IBM Db2 pour Linux, Unix, Windows et de la base de données Amazon RDS (Db2 LUW) comme source pour AWS DMS
<a name="CHAP_Source.DB2"></a>

Vous pouvez migrer les données d'une base de données IBM Db2 pour Linux, Unix, Windows et Amazon RDS (Db2 LUW) vers n'importe quelle base de données cible prise en charge à l'aide de (). AWS Database Migration Service AWS DMS

Pour plus d'informations sur les versions de Db2 sous Linux, Unix, Windows et RDS qui sont prises AWS DMS en charge en tant que source, consultez. [Sources pour AWS DMS](CHAP_Introduction.Sources.md) 

Vous pouvez utiliser le protocole SSL pour chiffrer les connexions entre votre point de terminaison Db2 LUW et l'instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison Db2 LUW, consultez [Utilisation du protocole SSL avec AWS Database Migration Service](CHAP_Security.SSL.md).

Lorsqu'elle AWS DMS lit des données depuis une base de données source IBM Db2, elle utilise le niveau d'isolation par défaut CURSOR STABILITY (CS) pour Db2 version 9.7 et versions ultérieures. Pour plus d'informations, consultez la [documentation IBM Db2 pour Linux, UNIX et Windows](https://www.ibm.com/docs/en/db2/12.1.0).

## Conditions préalables à l'utilisation de DB2 LUW comme source pour AWS DMS
<a name="CHAP_Source.DB2.Prerequisites"></a>

Les conditions préalables suivantes sont requises pour que vous puissiez utiliser une base de données Db2 LUW comme source.

Pour activer la réplication continue, également appelée capture de données modifiées (CDC), effectuez les opérations suivantes :
+ Définissez la base de données pour qu'elle soit récupérable, ce qui AWS DMS nécessite de capturer les modifications. Une base de données est récupérable si l’un ou les deux paramètres de configuration de base de données `LOGARCHMETH1` ou `LOGARCHMETH2` sont définis sur `ON`.

  Si votre base de données est récupérable, vous AWS DMS pouvez accéder au Db2 `ARCHIVE LOG` si nécessaire.
+ Assurez-vous que les journaux de DB2 transactions sont disponibles, avec une période de conservation suffisante pour être traités par AWS DMS. 
+ DB2 requiert `SYSADM` ou `DBADM` autorise l'extraction des enregistrements du journal des transactions. Accordez les autorisations suivantes au compte utilisateur :
  + `SYSADM` ou `DBADM`
  + `DATAACCESS`
**Note**  
Pour les tâches à chargement complet uniquement, le compte d’utilisateur DMS doit disposer de l’autorisation DATAACCESS.
+ Lorsque vous utilisez IBM DB2 for LUW version 9.7 comme source, définissez l'attribut de connexion supplémentaire (ECA) `CurrentLsn` comme suit :

  `CurrentLsn=LSN`, où `LSN` spécifie un numéro de séquence de journal (LSN) à partir duquel vous souhaitez démarrer la réplication. Ou `CurrentLsn=scan`.
+ Lorsque vous utilisez Amazon RDS pour DB2 LUW comme source, assurez-vous que les journaux d'archivage sont disponibles pour. AWS DMSÉtant donné que les bases de données DB2 AWS gérées purgent les journaux d'archives dès que possible, vous devez augmenter la durée pendant laquelle les journaux restent disponibles. Par exemple, pour augmenter la durée de conservation des journaux à 24 heures, exécutez la commande suivante :

  ```
  db2 "call rdsadmin.set_archive_log_retention( ?, 'TESTDB', '24')"
  ```

  Pour plus d'informations sur les procédures Amazon RDS pour DB2 LUW, consultez la [référence des procédures stockées Amazon RDS pour DB2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-stored-procedures.html) dans le guide de l'utilisateur d'*Amazon Relational Database Service*.
+ Accordez les privilèges suivants si vous utilisez DB2 des évaluations de prémigration spécifiques :

  ```
  GRANT CONNECT ON DATABASE TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBM.SYSDUMMY1 TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.ENV_INST_INFO TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.DBCFG TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.SCHEMATA TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.COLUMNS TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.TABLES TO USER <DMS_USER>;
  GRANT EXECUTE ON FUNCTION SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID TO <DMS_USER>;
  GRANT EXECUTE ON PACKAGE NULLID.SYSSH200 TO USER <DMS_USER>;
  ```

## Limitations liées à l'utilisation de DB2 LUW comme source pour AWS DMS
<a name="CHAP_Source.DB2.Limitations"></a>

AWS DMS ne prend pas en charge les bases de données en cluster. Toutefois, vous pouvez définir une base de données Db2 LUW distincte pour chacun des points de terminaison d'un cluster. Par exemple, vous pouvez créer une tâche de migration à chargement complet avec l’un des nœuds du cluster, puis créer des tâches distinctes à partir de chaque nœud.

AWS DMS ne prend pas en charge le type de `BOOLEAN` données de votre base de données source DB2 LUW.

Les limitations suivantes s'appliquent lorsque vous utilisez la réplication continue (CDC) :
+ Lorsqu'une table comportant plusieurs partitions est tronquée, le nombre d'événements DDL affichés dans la AWS DMS console est égal au nombre de partitions. En effet, Db2 LUW enregistre une DDL distincte pour chaque partition.
+ Les actions de DDL suivantes ne sont pas prises en charge sur les tables partitionnées :
  + ALTER TABLE ADD PARTITION
  + ALTER TABLE DETACH PARTITION
  + ALTER TABLE ATTACH PARTITION
+ AWS DMS ne prend pas en charge une migration de réplication continue à partir d'une instance de secours HADR ( DB2High Availability Disaster Recovery). L’instance de secours n’est pas accessible.
+ Le type de données DECFLOAT n'est pas pris en charge. Par conséquent, les modifications apportées aux colonnes DECFLOAT sont ignorées lors de la réplication continue.
+ L'instruction RENAME COLUMN n'est pas prise en charge.
+ Lorsque vous effectuez des mises à jour de tables de clustering multidimensionnel (MDC), chaque mise à jour est affichée dans la AWS DMS console sous la forme INSERT \$1 DELETE.
+ Lorsque le paramètre de tâche **Inclure les colonnes LOB dans la réplication** n'est pas activé, toute table comportant des colonnes LOB est suspendue pendant la réplication continue.
+ Pour les versions 10.5 et supérieures de DB2 LUW, les colonnes de chaîne de longueur variable contenant des données stockées sont ignorées. out-of-row Cette limitation s’applique uniquement aux tables créées avec une taille de ligne étendue pour les colonnes dont les types de données sont VARCHAR et VARGRAPHIC. Pour contourner cette limitation, déplacez la table vers un espace de table dont la taille de page est supérieure. Pour plus d'informations, voir [Que puis-je faire si je souhaite modifier le format de page des DB2 espaces disque logiques]( https://www.ibm.com/support/pages/what-can-i-do-if-i-want-change-pagesize-db2-tablespaces ) ?
+ Pour une réplication continue, DMS ne prend pas en charge la migration des données chargées au niveau de la page par l'utilitaire DB2 LOAD. Utilisez plutôt l’utilitaire IMPORT qui utilise des insertions SQL. Pour plus d’informations, consultez les [différences entre les utilitaires d’importation et de chargement]( https://www.ibm.com/docs/en/db2/11.1?topic=utilities-differences-between-import-load-utility). 
+ Pendant l'exécution d'une tâche de réplication, DMS capture CREATE TABLE DDLs uniquement si les tables ont été créées avec l'attribut DATA CAPTURE CHANGE.
+ DMS présente les limites suivantes lors de l'utilisation de la fonctionnalité de partition de base de données (DPF) DB2 :
  + DMS ne peut pas coordonner les transactions entre les nœuds DB2 dans un environnement DPF. Cela est dû à des contraintes au sein de l'interface API IBM DB2 READLOG. Dans le format DPF, les transactions peuvent s'étendre sur plusieurs nœuds DB2, en fonction de la manière dont les données sont DB2 partitionnées. Par conséquent, votre solution DMS doit capturer les transactions de chaque nœud DB2 indépendamment.
  + DMS peut capturer les transactions locales à partir de chaque nœud Db2 du cluster DPF en le configurant `1` sur plusieurs points de `connectNode` terminaison sources DMS. Cette configuration correspond aux numéros de nœuds logiques définis dans le fichier de configuration DB2 du serveur`db2nodes.cfg`.
  + Les transactions locales sur des nœuds Db2 individuels peuvent faire partie d'une transaction globale plus importante. DMS applique chaque transaction locale indépendamment sur la cible, sans coordination avec les transactions sur les autres nœuds Db2. Ce traitement indépendant peut entraîner des complications, notamment lorsque des lignes sont déplacées entre des partitions.
  + Lorsque DMS se réplique à partir de plusieurs nœuds Db2, il n'y a aucune garantie quant à l'ordre correct des opérations sur la cible, car le DMS applique les opérations indépendamment pour chaque nœud Db2. Vous devez vous assurer que la capture des transactions locales indépendamment de chaque nœud DB2 fonctionne pour votre cas d'utilisation spécifique.
  + Lors de la migration depuis un environnement DPF, nous vous recommandons d'exécuter d'abord une tâche de chargement complet sans événements mis en cache, puis d'exécuter des tâches uniquement en mode CDC. Nous recommandons d'exécuter une tâche par nœud DB2, en commençant par l'horodatage de début du chargement complet ou le LRI (identifiant d'enregistrement du journal) que vous avez défini à l'aide de l'attribut de connexion `StartFromContext` endpoint extra. Pour plus d'informations sur la détermination du point de départ de la réplication, consultez [la section Recherche de la valeur LSN ou LRI pour le démarrage de la réplication](https://www.ibm.com/support/pages/db2-finding-lsn-or-lri-value-replication-start) dans la documentation *IBM Support*. 
+ Pour la réplication continue (CDC), si vous prévoyez de démarrer la réplication à partir d'un horodatage spécifique, vous devez définir l'attribut de connexion `StartFromContext` supplémentaire sur l'horodatage requis.
+ À l'heure actuelle, DMS ne prend pas en charge la fonctionnalité Db2 PureScale, une extension de DB2 LUW que vous pouvez utiliser pour dimensionner votre solution de base de données.
+ L'option `DATA CAPTURE CHANGES` table est une condition préalable essentielle aux processus de réplication des DB2 données. Le fait de ne pas activer cette option lors de la création de tables peut entraîner des données manquantes, en particulier pour les tâches de réplication CDC (Change Data Capture) uniquement initiées depuis un point de départ antérieur. AWS DMS activera cet attribut par défaut lors du redémarrage d'une tâche CDC ou FULL\$1CDC. Cependant, les modifications apportées à la base de données source avant le redémarrage de la tâche risquent de ne pas être prises en compte.

  ```
  ALTER TABLE TABLE_SCHEMA.TABLE_NAME DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
  ```

## Paramètres du point de terminaison lors de l'utilisation de DB2 LUW comme source pour AWS DMS
<a name="CHAP_Source.DB2.ConnectionSettings"></a>

Vous pouvez spécifier les paramètres lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console, ou à l'aide de la `create-endpoint` commande [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html)figurant dans le

`--ibm-db2-settings '{"EndpointSetting1": "value1","EndpointSetting2": "value2"}'`

Syntaxe JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Db2 LUW en tant que source sont indiqués dans le tableau suivant.


| Nom du paramètre | Description | 
| --- | --- | 
|  `CurrentLsn`  |  Pour une réplication en continu (CDC), utilisez `CurrentLsn` pour spécifier un numéro de séquence de journal où vous voulez que la réplication démarre.   | 
|  `MaxKBytesPerRead`  |  Nombre maximal d'octets par lecture, sous forme d'une valeur NUMÉRIQUE (NUMBER). La valeur par défaut est de 64 Ko.  | 
|  `SetDataCaptureChanges`  |  Active la réplication en continu (CDC) en tant que valeur BOOLÉENNE. Par défaut, la valeur est true.  | 

## Attributs de connexion supplémentaires (ECAs) lors de l'utilisation de DB2 LUW comme source pour AWS DMS
<a name="CHAP_Source.DB2.ConnectionAttrib"></a>

Vous pouvez spécifier les attributs de connexion supplémentaires (ECAs) lorsque vous créez le point de terminaison source à l'aide de la AWS DMS console, ou à l'aide de la `create-endpoint` commande [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html)figurant dans le

`--extra-connection-attributes 'ECAname1=value1;ECAname2=value2;'`

Le tableau suivant indique ECAs ce que vous pouvez utiliser avec DB2 LUW comme source.


| Nom d'attribut | Description | 
| --- | --- | 
|  `ConnectionTimeout`  |  Utilisez cet ECA pour définir le délai de connexion du point de terminaison pour le point de terminaison DB2 LUW, en secondes. La valeur par défaut est de 10 secondes. Exemple : `ConnectionTimeout=30;`  | 
|  `executeTimeout`  |  Attribut de connexion supplémentaire qui définit le délai d'expiration de l'instruction (requête) pour le point de terminaison DB2 LUW, en secondes. La valeur par défaut est de 60 secondes. Exemple : `executeTimeout=120;`  | 
|  `StartFromContext`  |  Pour une réplication continue (CDC), utilisez `StartFromContext` pour spécifier la limite inférieure d’un journal à partir de laquelle démarrer la réplication. `StartFromContext` accepte différentes formes de valeurs. Les valeurs valides sont les suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Source.DB2.html) Pour déterminer la LRI/LSN plage d'un fichier journal, exécutez la `db2flsn` commande comme indiqué dans l'exemple suivant. <pre>db2flsn -db SAMPLE -lrirange 2</pre> La sortie est similaire à l’exemple suivant.  <pre><br />S0000002.LOG: has LRI range 00000000000000010000000000002254000000000004F9A6 to <br />000000000000000100000000000022CC000000000004FB13</pre> Dans cette sortie, le fichier journal est S0000002.LOG et la valeur du **StartFromContext**LRI correspond aux 34 octets situés à la fin de la plage. <pre>0100000000000022CC000000000004FB13</pre>  | 

## Types de données source pour IBM Db2 LUW
<a name="CHAP_Source.DB2.DataTypes"></a>

La migration de données qui utilise Db2 LUW comme source prend en AWS DMS charge la plupart des types de données DB2 LUW. Le tableau suivant indique les types de données source DB2 LUW pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données. Pour plus d'informations sur les types de donnée Db2 LUW, consultez la [documentation Db2 LUW](https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008483.html).

Pour obtenir des informations sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section relative au point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Types de données Db2 LUW  |  AWS DMS types de données  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s)  | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  Si la précision est 16, alors REAL8 ; si la précision est 34, alors STRING  | 
|  GRAPHIC (n)  |  WSTRING, pour des chaînes graphiques à longueur fixe de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 127  | 
|  VARGRAPHIC (n)  |  WSTRING, pour des chaînes graphiques à longueur variable, avec une longueur supérieure à 0 et inférieure ou égale à 16 352 caractères à 2 octets  | 
|  LONG VARGRAPHIC (n)  |  CLOB, pour des chaînes graphiques à longueur variable, avec une longueur supérieure à 0 et inférieure ou égale à 16 352 caractères à 2 octets  | 
|  CHARACTER (n)  |  STRING, pour des chaînes à longueur fixe de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 255  | 
|  VARCHAR(n)  |  STRING, pour des chaînes à longueur variable de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 32,704  | 
|  LONG VARCHAR (n)  |  CLOB, pour des chaînes à longueur variable de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 32,704  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  DATETIME  | 
|  BLOB (n)  |  BLOB La longueur maximale est de 2 147 483 647 octets  | 
|  CLOB (n)  |  CLOB La longueur maximale est de 2 147 483 647 octets  | 
|  DBCLOB (n)  |  CLOB La longueur maximale est de 1 073 741 824 caractères à deux octets  | 
|  xml  |  CLOB  | 

# Utilisation d'IBM Db2 pour les z/OS bases de données comme source pour AWS DMS
<a name="CHAP_Source.DB2zOS"></a>

Vous pouvez migrer les données d'une base de données IBM for vers n'importe quelle z/OS base de données cible prise en charge à l'aide de AWS Database Migration Service (AWS DMS). 

Pour plus d'informations sur les versions de DB2 prises z/OS AWS DMS en charge en tant que source, consultez[Sources pour AWS DMS](CHAP_Introduction.Sources.md).

## Conditions préalables à l'utilisation de Db2 pour z/OS comme source pour AWS DMS
<a name="CHAP_Source.DB2zOS.Prerequisites"></a>

Pour utiliser une z/OS base de données IBM Db2 for comme entrée source AWS DMS, accordez les privilèges suivants à la base de données Db2 pour l' z/OS utilisateur spécifié dans les paramètres de connexion du point de terminaison source.

```
GRANT SELECT ON SYSIBM.SYSTABLES TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLESPACE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLEPART TO Db2USER;                    
GRANT SELECT ON SYSIBM.SYSCOLUMNS TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDATABASE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDUMMY1 TO Db2USER
```

Accordez également les tables source SELECT ON `user defined`.

Un point de terminaison AWS DMS IBM Db2 for z/OS source s'appuie sur le pilote de serveur de données IBM pour ODBC pour accéder aux données. Le serveur de base de données doit disposer d’une licence IBM ODBC Connect valide pour que DMS puisse se connecter à ce point de terminaison.

## Limitations liées à l'utilisation de Db2 pour z/OS comme source pour AWS DMS
<a name="CHAP_Source.DB2zOS.Limitations"></a>

Les limites suivantes s'appliquent lors de l'utilisation d'une z/OS base de données IBM Db2 for comme source pour AWS DMS :
+ Seules les tâches de réplication à chargement complet sont prises en charge. La capture des données modifiées (CDC) n'est pas prise en charge.
+ Le chargement parallèle n’est pas pris en charge.
+ La validation de données des vues n’est pas prise en charge.
+ Les noms des schémas, des tables et des colonnes doivent être spécifiés en MAJUSCULES dans les mappages de tables pour les transformations de Column/table niveau et les filtres de sélection au niveau des lignes.

## Types de données source pour IBM Db2 for z/OS
<a name="CHAP_Source.DB2zOS.DataTypes"></a>

Les migrations de données qui utilisent Db2 z/OS comme source prennent en AWS DMS charge la plupart des types de données DB2 pour les types de z/OS données. Le tableau suivant présente le Db2 pour les types de données z/OS source pris en charge lors de l'utilisation AWS DMS, ainsi que le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur Db2 pour les types de z/OS données, consultez la [documentation IBM Db2](https://www.ibm.com/docs/en/db2-for-zos/12?topic=elements-data-types). z/OS 

Pour obtenir des informations sur la façon d'afficher le type de données qui est mappé dans la cible, consultez la section relative au point de terminaison cible que vous utilisez.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  DB2 pour les types de z/OS données  |  AWS DMS types de données  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s) Si une virgule est définie sur une virgule (,) dans la DB2 configuration, configurez Replicate pour prendre en charge le paramètre. DB2   | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  Si la précision est 16, alors REAL8 ; si la précision est 34, alors STRING  | 
|  GRAPHIC (n)  |  Si n>=127, alors WSTRING, pour des chaînes graphiques à longueur fixe de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 127  | 
|  VARGRAPHIC (n)  |  WSTRING, pour des chaînes graphiques à longueur variable, avec une longueur supérieure à 0 et inférieure ou égale à 16 352 caractères à 2 octets  | 
|  LONG VARGRAPHIC (n)  |  CLOB, pour des chaînes graphiques à longueur variable, avec une longueur supérieure à 0 et inférieure ou égale à 16 352 caractères à 2 octets  | 
|  CHARACTER (n)  |  STRING, pour des chaînes à longueur fixe de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 255  | 
|  VARCHAR(n)  |  STRING, pour des chaînes à longueur variable de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 32,704  | 
|  LONG VARCHAR (n)  |  CLOB, pour des chaînes à longueur variable de caractères à deux octets, avec une longueur supérieure à 0 et inférieure ou égale à 32,704  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  DATETIME  | 
|  BLOB (n)  |  BLOB La longueur maximale est de 2 147 483 647 octets  | 
|  CLOB (n)  |  CLOB La longueur maximale est de 2 147 483 647 octets  | 
|  DBCLOB (n)  |  CLOB La longueur maximale est de 1 073 741 824 caractères à deux octets  | 
|  xml  |  CLOB  | 
|  BINAIRE  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  ROWID  |  BYTES. Pour plus d’informations sur l’utilisation de ROWID, consultez les rubriques suivantes.   | 
|  TIMESTAMP WITH TIME ZONE  |  Non pris en charge.  | 

Les colonnes ROWID sont migrées par défaut lorsque le mode de préparation des tables cibles pour la tâche est défini sur DROP\$1AND\$1CREATE (par défaut). La validation des données ignore ces colonnes, car les lignes n’ont aucun sens en dehors de la base de données et de la table spécifiques. Pour désactiver la migration de ces colonnes, vous pouvez effectuer l’une des étapes préparatoires suivantes : 
+ Pré-créez la table cible sans ces colonnes. Définissez ensuite le mode de préparation des tables cibles de la tâche sur DO\$1NOTHING ou TRUNCATE\$1BEFORE\$1LOAD. Vous pouvez utiliser AWS Schema Conversion Tool (AWS SCT) pour créer au préalable la table cible sans les colonnes.
+ Ajoutez une règle de mappage de table à une tâche qui filtre ces colonnes afin qu’elles soient ignorées. Pour de plus amples informations, veuillez consulter [Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Classements EBCDIC dans le service de modernisation de PostgreSQL pour les mainframes AWS
<a name="CHAP_Source.DB2zOS.EBCDIC"></a>

AWS Le programme de modernisation du mainframe vous aide à moderniser vos applications mainframe pour les adapter à des environnements d'exécution AWS gérés. Il fournit des outils et des ressources pour vous aider à planifier et à implémenter vos projets de migration et de modernisation. Pour plus d'informations sur la modernisation et la migration du mainframe, voir [Modernisation du mainframe](https://aws.amazon.com/mainframe/) avec. AWS

Certains ensembles de z/OS données IBM Db2 for sont codés dans le jeu de caractères EBCDIC (Extended Binary Coded Decimal Interchange). Ce jeu de caractères développé avant ASCII (American Standard Code for Information Interchange) est désormais couramment utilisé. Une *page de code* mappe chaque caractère du texte aux caractères d’un jeu de caractères. Une page de code traditionnelle contient les informations de mappage entre un point de code et un ID de caractère. Un *ID de caractère* est une chaîne de données de caractères de 8 octets. Un *point de code* est un nombre binaire de 8 bits qui représente un caractère. Les points de code sont généralement des représentations hexadécimales de leurs valeurs binaires.

Si vous utilisez actuellement Micro Focus ou BluAge un composant du service Mainframe Modernization, vous devez demander de AWS DMS *décaler* (traduire) certains points de code. Vous pouvez utiliser les paramètres des AWS DMS tâches pour effectuer les quarts de travail. L'exemple suivant montre comment utiliser l' AWS DMS `CharacterSetSettings`opération pour mapper les changements dans un paramètre de tâche DMS.

```
"CharacterSetSettings": {
        "CharacterSetSupport": null,
        "CharacterReplacements": [
{"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
            }
        ]
    }
```

Certains classements EBCDIC existent déjà pour PostgreSQL et comprennent le décalage nécessaire. Plusieurs pages de code différentes sont prises en charge. Les sections suivantes fournissent des exemples JSON de ce que vous devez décaler pour toutes les pages de code prises en charge. Vous pouvez simplement saisir copy-and-past le JSON dont vous avez besoin dans votre tâche DMS.

### Classements EBCDIC spécifiques à Micro Focus
<a name="CHAP_Source.DB2zOS.EBCDIC.MicroFocus"></a>

Pour Micro Focus, décalez un sous-ensemble de caractères selon vos besoins pour les classements suivants.

```
 da-DK-cp1142m-x-icu
 de-DE-cp1141m-x-icu
 en-GB-cp1146m-x-icu
 en-US-cp1140m-x-icu
 es-ES-cp1145m-x-icu
 fi-FI-cp1143m-x-icu
 fr-FR-cp1147m-x-icu
 it-IT-cp1144m-x-icu
 nl-BE-cp1148m-x-icu
```

**Example Décalages de données Micro Focus par classement :**  
**en\$1us\$1cp1140m**  
Décalage de code :  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1141m**  
Décalage de code :  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1142m**  
Décalage de code :  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1143m**  
Décalage de code :  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1144m**  
Décalage de code :  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1145m**  
Décalage de code :  

```
0000    0180
00A6    0160
00B8    0161
00A8    017D
00BC    017E
00BD    0152
00BE    0153
00B4    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1146m**  
Décalage de code :  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1147m**  
Décalage de code :  

```
0000    0180
00B8    0160
00A8    0161
00BC    017D
00BD    017E
00BE    0152
00B4    0153
00A6    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1148m**  
Décalage de code :  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```

### BluAge collations EBCDIC spécifiques
<a name="CHAP_Source.DB2zOS.EBCDIC.BluAge"></a>

Pour BluAge, décalez toutes les *valeurs basses* et *hautes* suivantes selon vos besoins. Ces classements ne doivent être utilisés que pour prendre en charge le BluAge service de migration du mainframe.

```
da-DK-cp1142b-x-icu
 da-DK-cp277b-x-icu
 de-DE-cp1141b-x-icu
 de-DE-cp273b-x-icu
 en-GB-cp1146b-x-icu
 en-GB-cp285b-x-icu
 en-US-cp037b-x-icu
 en-US-cp1140b-x-icu
 es-ES-cp1145b-x-icu
 es-ES-cp284b-x-icu
 fi-FI-cp1143b-x-icu
 fi-FI-cp278b-x-icu 
 fr-FR-cp1147b-x-icu
 fr-FR-cp297b-x-icu
 it-IT-cp1144b-x-icu
 it-IT-cp280b-x-icu
 nl-BE-cp1148b-x-icu
 nl-BE-cp500b-x-icu
```

**Example BluAge Changements de données :**  
**da-DK-cp277b** et **da-DK-cp1142b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**de-DE-273b** et **de-DE-1141b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-GB-285b** et **en-GB-1146b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-us-037b** et **en-us-1140b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**es-ES-284b** et **es-ES-1145b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fi\$1FI-278b** et **fi-FI-1143b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fr-FR-297b** et **fr-FR-1147b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**it-IT-280b** et **it-IT-1144b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**nl-BE-500b** et **nl-BE-1148b**  
Décalage de code :  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mappage d'entrée correspondant pour une AWS DMS tâche :  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```

# Cibles pour la migration des données
<a name="CHAP_Target"></a>

AWS Database Migration Service (AWS DMS) peut utiliser la plupart des bases de données les plus populaires comme cible pour la réplication de données. La cible peut se trouver sur une instance Amazon Elastic Compute Cloud (Amazon EC2), une instance Amazon Relational Database Service (Amazon RDS) ou une base de données sur site. 

Pour une liste complète des cibles valides, consultez [Cibles pour AWS DMS](CHAP_Introduction.Targets.md).

**Note**  
AWS DMS ne prend pas en charge la migration entre AWS les régions pour les types de terminaux cibles suivants :  
Amazon DynamoDB
Amazon OpenSearch Service
Amazon Kinesis Data Streams
Amazon Aurora PostgreSQL Limitless est disponible en tant que cible pour (). AWS Database Migration Service AWS DMS Pour plus d'informations, consultez la section [Utilisation d'une base de données PostgreSQL comme cible](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) pour. AWS Database Migration Service

**Topics**
+ [Utilisation d'une base de données Oracle comme cible pour AWS Database Migration Service](CHAP_Target.Oracle.md)
+ [Utilisation d'une base de données Microsoft SQL Server comme cible pour AWS Database Migration Service](CHAP_Target.SQLServer.md)
+ [Utilisation d'une base de données PostgreSQL comme cible pour AWS Database Migration Service](CHAP_Target.PostgreSQL.md)
+ [Utilisation d'une base de données compatible MySQL comme cible pour AWS Database Migration Service](CHAP_Target.MySQL.md)
+ [Utilisation d'une base de données Amazon Redshift comme cible pour AWS Database Migration Service](CHAP_Target.Redshift.md)
+ [Utilisation d'une base de données SAP ASE comme cible pour AWS Database Migration Service](CHAP_Target.SAP.md)
+ [Utiliser Amazon S3 comme cible pour AWS Database Migration Service](CHAP_Target.S3.md)
+ [Utilisation d'une base de données Amazon DynamoDB comme cible pour AWS Database Migration Service](CHAP_Target.DynamoDB.md)
+ [Utilisation d'Amazon Kinesis Data Streams comme cible pour AWS Database Migration Service](CHAP_Target.Kinesis.md)
+ [Utiliser Apache Kafka comme cible pour AWS Database Migration Service](CHAP_Target.Kafka.md)
+ [Utilisation d'un cluster Amazon OpenSearch Service comme cible pour AWS Database Migration Service](CHAP_Target.Elasticsearch.md)
+ [Utilisation d'Amazon DocumentDB comme cible pour le service de migration de AWS base de données](CHAP_Target.DocumentDB.md)
+ [Utiliser Amazon Neptune comme cible pour AWS Database Migration Service](CHAP_Target.Neptune.md)
+ [Utilisation de Redis OSS comme cible pour AWS Database Migration Service](CHAP_Target.Redis.md)
+ [Utiliser Babelfish comme cible pour AWS Database Migration Service](CHAP_Target.Babelfish.md)
+ [Utiliser Amazon Timestream comme cible pour AWS Database Migration Service](CHAP_Target.Timestream.md)
+ [Utilisation d'Amazon RDS pour Db2 et d'IBM Db2 LUW comme cible pour AWS DMS](CHAP_Target.DB2.md)

# Utilisation d'une base de données Oracle comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Oracle"></a>

Vous pouvez migrer des données vers des cibles de base de données Oracle en utilisant soit une autre base de données Oracle AWS DMS, soit l'une des autres bases de données prises en charge. Vous pouvez utiliser SSL (Secure Sockets Layer) pour chiffrer les connexions entre votre point de terminaison Oracle et l'instance de réplication. Pour plus d'informations sur l'utilisation du protocole SSL avec un point de terminaison Oracle, consultez[Utilisation du protocole SSL avec AWS Database Migration Service](CHAP_Security.SSL.md). AWS DMS prend également en charge l'utilisation du chiffrement transparent des données (TDE) Oracle pour chiffrer les données au repos dans la base de données cible, car Oracle TDE n'a pas besoin de clé de chiffrement ni de mot de passe pour écrire dans la base de données.

Pour plus d'informations sur les versions d'Oracle prises AWS DMS en charge en tant que cible, consultez[Objectifs pour AWS DMS](CHAP_Introduction.Targets.md). 

Quand vous utilisez Oracle comme cible, nous supposons que les données doivent être migrées vers le schéma ou l'utilisateur qui est utilisé pour la connexion cible. Si vous voulez migrer des données vers un autre schéma, utilisez une transformation de schéma pour cela. Par exemple, supposons que votre point de terminaison cible se connecte à l'utilisateur `RDSMASTER` et que vous souhaitez migrer de l'utilisateur `PERFDATA1` vers `PERFDATA2`. Dans ce cas, créez une transformation comme suit.

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

Lorsque vous utilisez Oracle comme cible, AWS DMS migre toutes les tables et tous les index vers les tablespaces de table et d'index par défaut de la cible. Si vous souhaitez migrer des tables et des index vers des espaces de table et d’index différents, utilisez une transformation d’espace de table. Par exemple, supposons que vous avez dans le schéma `INVENTORY` un ensemble de tables affectées à certains espaces de table dans la source Oracle. Pour la migration, vous souhaitez affecter toutes ces tables à un espace de tables unique `INVENTORYSPACE` dans la cible. Dans ce cas, créez une transformation comme suit.

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

Pour plus d'informations sur les transformations, consultez [Spécification des règles de sélection de table et de transformation à l’aide de JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Si Oracle est à la fois source et cible, vous pouvez conserver les affectations d'espace de table de table ou d'index existantes en définissant l'attribut de connexion supplémentaire source Oracle, `enableHomogenousTablespace=true`. Pour de plus amples informations, consultez [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.ConnectionAttrib).

Pour plus de détails sur l'utilisation des bases de données Oracle en tant que cible pour AWS DMS, consultez les sections suivantes : 

**Topics**
+ [Limites imposées à Oracle en tant que cible pour AWS Database Migration Service](#CHAP_Target.Oracle.Limitations)
+ [Privilèges de compte d'utilisateur requis pour utiliser Oracle comme cible](#CHAP_Target.Oracle.Privileges)
+ [Configuration d'une base de données Oracle comme cible pour AWS Database Migration Service](#CHAP_Target.Oracle.Configuration)
+ [Paramètres du point de terminaison lors de l'utilisation d'Oracle comme cible pour AWS DMS](#CHAP_Target.Oracle.ConnectionAttrib)
+ [Types de données cibles pour Oracle](#CHAP_Target.Oracle.DataTypes)

## Limites imposées à Oracle en tant que cible pour AWS Database Migration Service
<a name="CHAP_Target.Oracle.Limitations"></a>

Les limitations lors de l'utilisation d'Oracle comme cible pour la migration de données sont les suivantes :
+ AWS DMS ne crée pas de schéma sur la base de données Oracle cible. Vous devez créer les schémas que vous voulez sur la base de données Oracle cible. Le nom du schéma doit déjà exister pour la cible Oracle. Les tables du schéma source sont importées vers l'utilisateur ou le schéma, qui est AWS DMS utilisé pour se connecter à l'instance cible. Vous pouvez créer plusieurs tâches de réplication si vous avez plusieurs schémas à migrer. Vous pouvez également migrer des données vers différents schémas sur une cible. Pour ce faire, vous devez utiliser des règles de transformation de schéma sur les mappages de AWS DMS tables.
+ AWS DMS ne prend pas en charge l'`Use direct path full load`option pour les tables avec INDEXTYPE CONTEXT. Pour contourner ce problème, vous pouvez utiliser le chargement de la grappe. 
+ Avec l'option d’application optimisée par lots, le chargement dans la table de modifications nettes utilise un chemin d'accès direct, qui ne prend pas en charge le type XML. Pour contourner ce problème, vous pouvez utiliser le mode d'application transactionnel.
+ Les chaînes vides migrées à partir de bases de données sources peuvent être traitées différemment par la cible Oracle (converties en chaînes d'un espace, par exemple). Cela peut entraîner le signalement d'une incompatibilité lors de la AWS DMS validation.
+ Vous pouvez exprimer le nombre total de colonnes par table prises en charge dans le mode d’application par lots optimisée, à l’aide de la formule suivante :

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

  Par exemple, si la table d’origine comporte 25 colonnes et que sa clé primaire est composée de 5 colonnes, le nombre total de colonnes est de 55. Si un tableau dépasse le nombre de colonnes autorisé, toutes les modifications sont appliquées en one-by-one mode.
+ AWS DMS ne prend pas en charge la base de données autonome sur Oracle Cloud Infrastructure (OCI).
+ En mode d'application transactionnelle, une cible Oracle peut traiter des instructions DML d'une taille maximale de 32 Ko. Bien que cette limite soit suffisante pour de nombreux cas d'utilisation, les instructions DML supérieures à 32 Ko échoueront avec l'erreur suivante : « ORA-01460 : conversion non implémentée ou déraisonnable demandée ». Pour résoudre ce problème, vous devez activer la fonctionnalité d'application par lots en définissant le paramètre de `BatchApplyEnabled` tâche sur`true`. L'application par lots réduit la taille globale du relevé, ce qui vous permet de contourner la limite de 32 Ko. Pour de plus amples informations, veuillez consulter [Paramètres de métadonnées des tâches cibles](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md).
+ AWS DMS Le chargement complet du chemin direct pour les tables LOB peut échouer avec l'erreur ORA-39777 en raison des exigences de traitement particulières pour les données LOB. Cette erreur se produit pendant le processus de chargement direct du chemin et peut perturber les tâches de migration impliquant des colonnes LOB. Pour résoudre le problème, désactivez le `useDirectPathFullLoad` paramètre sur le point de terminaison cible et réessayez l'opération de chargement.

## Privilèges de compte d'utilisateur requis pour utiliser Oracle comme cible
<a name="CHAP_Target.Oracle.Privileges"></a>

Pour utiliser une cible Oracle dans une AWS Database Migration Service tâche, accordez les privilèges suivants dans la base de données Oracle. Vous accordez ces privilèges au compte utilisateur spécifié dans les définitions de la base de données Oracle pour AWS DMS.
+ 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

Pour les exigences suivantes, accordez ces privilèges supplémentaires :
+ Pour utiliser une liste de tables spécifique, accordez l'autorisation SELECT sur n'importe quelle table répliquée et ALTER sur n'importe quelle table répliquée.
+ Pour permettre à un utilisateur de créer une table dans un espace de table par défaut, accordez-lui le privilège GRANT UNLIMITED TABLESPACE.
+ Pour l'ouverture de session, accordez le privilège CREATE SESSION.
+ Si vous utilisez un chemin direct (qui est le chemin par défaut pour le chargement complet), `GRANT LOCK ANY TABLE to dms_user;`.
+ Si le schéma est différent lors de l’utilisation du mode de préparation de table « DROP and CREATE », `GRANT CREATE ANY INDEX to dms_user;`.
+ Pour certains scénarios de chargement complet, vous pouvez choisir l'option « SUPPRIMER et CRÉER une table » ou « TRONQUER avant le chargement » où un schéma de table cible est différent de celui de l'utilisateur DMS. Dans ce cas, accordez SUPPRIMER N'IMPORTE QUELLE TABLE.
+ Pour stocker les modifications dans des tables de modification ou une table d'audit où le schéma de table cible est différent de celui de l'utilisateur DMS, accordez CRÉER N'IMPORTE QUELLE TABLE et CRÉER N'IMPORTE QUEL INDEX.
+ Pour valider les colonnes LOB avec la fonctionnalité de validation, accordez le privilège EXECUTE `SYS.DBMS_CRYPTO` à l'utilisateur DMS.

### Privilèges de lecture requis pour AWS Database Migration Service la base de données cible
<a name="CHAP_Target.Oracle.Privileges.Read"></a>

Le compte AWS DMS utilisateur doit disposer d'autorisations de lecture pour les tables DBA suivantes :
+ 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

Si certains des privilèges requis ne peuvent pas être accordés à V\$1 xxx, accordez-les à V\$1\$1 xxx.

### Évaluations de prémigration
<a name="CHAP_Target.Oracle.Privileges.Premigration"></a>

Pour utiliser les évaluations de prémigration [Évaluations Oracle](CHAP_Tasks.AssessmentReport.Oracle.md) répertoriées dans Oracle as a Target, vous devez ajouter les autorisations suivantes au compte utilisateur spécifié dans le point de terminaison cible de la base de données Oracle :

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

## Configuration d'une base de données Oracle comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Oracle.Configuration"></a>

Avant d'utiliser une base de données Oracle comme cible de migration de données, vous devez fournir un compte utilisateur Oracle à AWS DMS. Le compte utilisateur doit disposer de read/write privilèges sur la base de données Oracle, comme indiqué dans[Privilèges de compte d'utilisateur requis pour utiliser Oracle comme cible](#CHAP_Target.Oracle.Privileges).

## Paramètres du point de terminaison lors de l'utilisation d'Oracle comme cible pour AWS DMS
<a name="CHAP_Target.Oracle.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible Oracle comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Oracle en tant que cible sont indiqués dans le tableau suivant.

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

## Types de données cibles pour Oracle
<a name="CHAP_Target.Oracle.DataTypes"></a>

Une base de données Oracle cible utilisée AWS DMS prend en charge la plupart des types de données Oracle. Le tableau suivant indique les types de données cibles Oracle pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données. Pour en savoir plus sur la façon d'afficher le type de données qui est mappé à partir de la source, consultez la section correspondant à la source que vous utilisez.


|  AWS DMS type de données  |  Type de données Oracle  | 
| --- | --- | 
|  BOOLEAN  |  NUMBER (1)  | 
|  BYTES  |  RAW (length)  | 
|  DATE  |  DATETIME  | 
|  TIME  | TIMESTAMP (0) | 
|  DATETIME  |  TIMESTAMP (scale)  | 
|  INT1  | NUMBER (3) | 
|  INT2  |  NUMBER (5)  | 
|  INT4  | NUMBER (10) | 
|  INT8  |  NUMBER (19)  | 
|  NUMERIC  |  NUMBER (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  | FLOAT | 
|  CHAÎNE  |  Avec indication date : DATE  Avec indication time : TIMESTAMP  Avec indication timestamp : TIMESTAMP  Avec indication timestamp\$1with\$1timezone : TIMESTAMP WITH TIMEZONE  Avec indication timestamp\$1with\$1local\$1timezone : TIMESTAMP WITH LOCAL TIMEZONE Avec indication interval\$1year\$1to\$1month : INTERVAL YEAR TO MONTH  Avec indication interval\$1day\$1to\$1second : INTERVAL DAY TO SECOND  Si la longueur > 4 000 : CLOB Dans tous les autres cas : VARCHAR2 (longueur)  | 
|  UINT1  |  NUMBER (3)  | 
|  UINT2  |  NUMBER (5)  | 
|  UINT4  |  NUMBER (10)  | 
|  UINT8  |  NUMBER (19)  | 
|  WSTRING  |  Si la longueur > 2 000 : NCLOB Dans tous les autres cas : NVARCHAR2 (longueur)  | 
|  BLOB  |  BLOB Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation de BLOBs pour une tâche spécifique. Les types de données BLOB sont pris en charge uniquement dans les tables qui contiennent une clé primaire  | 
|  CLOB  |  CLOB Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation de CLOBs pour une tâche spécifique. Au cours de la capture des données modifiées (CDC), les types de données CLOB sont pris en charge uniquement dans les tables qui comprennent une clé primaire. CHAÎNE Un type de VARCHAR2 données Oracle sur la source dont la taille déclarée est supérieure à 4 000 octets est mappé via le AWS DMS CLOB vers une CHAÎNE sur la cible Oracle.  | 
|  NCLOB  |  NCLOB Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation de NCLOBs pour une tâche spécifique. Au cours de la capture des données modifiées (CDC), les types de données NCLOB sont pris en charge uniquement dans les tables qui contiennent une clé primaire. WSTRING Un type de VARCHAR2 données Oracle sur la source dont la taille déclarée est supérieure à 4 000 octets est mappé via le AWS DMS NCLOB vers une chaîne WSTRING sur la cible Oracle.   | 
| XMLTYPE |  Le type de données cible XMLTYPE n'est pertinent que pour les tâches de Oracle-to-Oracle réplication. Lorsque la base de données source est Oracle, les types de donnée source sont répliqués en l'état dans la cible Oracle. Par exemple, un type de données XMLTYPE dans la source est créé en tant que type de données XMLTYPE dans la cible.  | 

# Utilisation d'une base de données Microsoft SQL Server comme cible pour AWS Database Migration Service
<a name="CHAP_Target.SQLServer"></a>

Vous pouvez migrer des données vers des bases de données Microsoft SQL Server à l'aide de AWS DMS. Avec une base de données SQL Server comme cible, vous pouvez migrer les données à partir d'une autre base de données SQL Server, ou d'une des autres bases de données prises en charge.

Pour plus d'informations sur les versions de SQL Server prises AWS DMS en charge en tant que cible, consultez[Objectifs pour AWS DMS](CHAP_Introduction.Targets.md). 

AWS DMS prend en charge les éditions sur site et Amazon RDS d'Enterprise, Standard, Workgroup et Developer.

Pour plus d'informations sur l'utilisation des bases de données cibles SQL Server AWS DMS et de leurs utilisations, consultez ce qui suit.

**Topics**
+ [Limitations relatives à l'utilisation de SQL Server comme cible pour AWS Database Migration Service](#CHAP_Target.SQLServer.Limitations)
+ [Exigences de sécurité lors de l'utilisation de SQL Server comme cible pour AWS Database Migration Service](#CHAP_Target.SQLServer.Security)
+ [Paramètres du point de terminaison lors de l'utilisation de SQL Server comme cible pour AWS DMS](#CHAP_Target.SQLServer.ConnectionAttrib)
+ [Types de données cibles pour Microsoft SQL Server](#CHAP_Target.SQLServer.DataTypes)

## Limitations relatives à l'utilisation de SQL Server comme cible pour AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Limitations"></a>

Les limitations suivantes s'appliquent lors de l'utilisation d'une base de données SQL Server comme cible pour AWS DMS :
+ Lorsque vous créez manuellement une table SQL Server cible avec une colonne calculée, la réplication de chargement complet n'est pas prise en charge lors de l'utilisation de l'utilitaire de copie groupée BCP. Pour utiliser la réplication à chargement complet, désactivez le chargement BCP en définissant l’attribut de connexion supplémentaire (ECA) `'useBCPFullLoad=false'` sur le point de terminaison. Pour plus d'informations sur ECAs le paramétrage des points de terminaison, consultez[Création de points de terminaison source et cible](CHAP_Endpoints.Creating.md). Pour en savoir plus sur l'utilisation avec BCP, consultez la [documentation Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-and-export-bulk-data-by-using-the-bcp-utility-sql-server).
+ Lorsque vous répliquez des tables avec des types de données spatiales SQL Server (GEOMETRY et AWS DMS GEOGRAPHY), remplacez tout identifiant de référence spatiale (SRID) que vous pourriez avoir inséré par le SRID par défaut. Le SRID par défaut est 0 pour GEOMETRY et 4326 pour GEOGRAPHY.
+ Les tables temporelles ne sont pas prises en charge. La migration de tables temporelles peut fonctionner avec une tâche de réplication seule en mode d'application transactionnelle si ces tables sont créées manuellement sur la cible.
+ Actuellement, `boolean` les types de données d'une source PostgreSQL sont migrés vers SQLServer une cible en tant que type de données présentant des valeurs `bit` incohérentes. 

  Pour contourner ce problème, procédez comme suit :
  + Précréez la table avec un type de `VARCHAR(1)` données pour la colonne (ou laissez AWS DMS créer la table). Ensuite, faites en sorte que le traitement en aval traite un « F » comme Faux et un « T » comme Vrai.
  + Pour éviter d’avoir à modifier le traitement en aval, ajoutez une règle de transformation à la tâche pour remplacer les valeurs « F » par « 0 » et les valeurs « T » par 1, puis stockez-les en tant que type de données binaire SQL Server.
+ AWS DMS ne prend pas en charge le traitement des modifications pour définir la nullité des colonnes (en utilisant la `ALTER COLUMN [SET|DROP] NOT NULL` clause avec des `ALTER TABLE` instructions).
+ L'authentification Windows n'est pas prise en charge.

## Exigences de sécurité lors de l'utilisation de SQL Server comme cible pour AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Security"></a>

Ce qui suit décrit les exigences de sécurité pour une utilisation AWS DMS avec une cible Microsoft SQL Server :
+ Le compte AWS DMS utilisateur doit avoir au moins le rôle `db_owner` d'utilisateur dans la base de données SQL Server à laquelle vous vous connectez.
+ Un administrateur système SQL Server doit fournir cette autorisation à tous les comptes utilisateur AWS DMS .

## Paramètres du point de terminaison lors de l'utilisation de SQL Server comme cible pour AWS DMS
<a name="CHAP_Target.SQLServer.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible SQL Server comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec SQL Server en tant que cible sont indiqués dans le tableau suivant.

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

## Types de données cibles pour Microsoft SQL Server
<a name="CHAP_Target.SQLServer.DataTypes"></a>

Le tableau suivant indique les types de données cibles Microsoft SQL Server pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données. Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS type de données  |  Type de données SQL Server  | 
| --- | --- | 
|  BOOLEAN  |  TINYINT  | 
|  BYTES  |  VARBINARY(Length)  | 
|  DATE  |  Pour SQL Server 2008 et versions ultérieures, utilisez DATE. Pour les versions antérieures, si l'échelle est 3 ou inférieure utilisez DATETIME. Dans tous les autres cas, utilisez VARCHAR (37).  | 
|  TIME  |  Pour SQL Server 2008 et versions ultérieures, utilisez DATETIME2 (%d). Pour les versions antérieures, si l'échelle est 3 ou inférieure utilisez DATETIME. Dans tous les autres cas, utilisez VARCHAR (37).  | 
|  DATETIME  |  Pour SQL Server 2008 et versions ultérieures, utilisez DATETIME2 (scale).  Pour les versions antérieures, si l'échelle est 3 ou inférieure utilisez DATETIME. Dans tous les autres cas, utilisez VARCHAR (37).  | 
|  INT1  | SMALLINT | 
|  INT2  |  SMALLINT  | 
|  INT4  | INT | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  NUMERIC (p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  | FLOAT | 
|  CHAÎNE  |  Si la colonne est une colonne de date ou d'heure, effectuez les opérations suivantes :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Target.SQLServer.html) Si la colonne n'est pas une colonne de date ou d'heure, utilisez VARCHAR (length).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR (length)  | 
|  BLOB  |  VARBINARY(max) IMAGE Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation de BLOBs pour une tâche spécifique. AWS DMS prend en charge les types de données BLOB uniquement dans les tables qui incluent une clé primaire.  | 
|  CLOB  |  VARCHAR(max) Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation de CLOBs pour une tâche spécifique. Au cours de la capture des données modifiées (CDC), AWS DMS prend en charge les types de données CLOB uniquement dans les tables qui comprennent une clé primaire.  | 
|  NCLOB  |  NVARCHAR(max) Pour utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation de NCLOBs pour une tâche spécifique. Pendant le CDC, AWS DMS prend en charge les types de données NCLOB uniquement dans les tables qui incluent une clé primaire.  | 

# Utilisation d'une base de données PostgreSQL comme cible pour AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL"></a>

Vous pouvez migrer des données vers des bases de données PostgreSQL à AWS DMS l'aide d'une autre base de données PostgreSQL ou de l'une des autres bases de données prises en charge. 

Pour plus d'informations sur les versions de PostgreSQL compatibles en tant AWS DMS que cible, consultez. [Objectifs pour AWS DMS](CHAP_Introduction.Targets.md)

**Note**  
Amazon Aurora Serverless est disponible en tant que cible pour Amazon Aurora compatible avec PostgreSQL. Pour plus d'informations sur Amazon Aurora Serverless, consultez la section [Utilisation d'Amazon Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) dans le guide de l'*utilisateur Amazon Aurora*.
Les clusters de bases de données Aurora sans serveur sont uniquement accessibles à partir d’un réseau Amazon VPC et ne peuvent pas utiliser d’[adresse IP publique](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html). Par conséquent, si vous avez l’intention de disposer d’une instance de réplication dans une région différente de celle d’Aurora PostgreSQL sans serveur, vous devez configurer l’[appairage de VPC](https://docs.aws.amazon.com//dms/latest/userguide/CHAP_ReplicationInstance.VPC.html#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer). Sinon, vérifiez la disponibilité des [régions](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraFeaturesRegionsDBEngines.grids.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.Serverless) Aurora PostgreSQL sans serveur et décidez d’utiliser l’une de ces régions à la fois pour Aurora PostgreSQL sans serveur et pour votre instance de réplication.
La fonctionnalité Babelfish est intégrée à Amazon Aurora et n’entraîne aucun coût supplémentaire. Pour plus d’informations, consultez [Utilisation de Babelfish for Aurora PostgreSQL en tant que cible pour AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish).

AWS DMS adopte une table-by-table approche lors de la migration des données de la source vers la cible pendant la phase de chargement complet. L'ordre des tables pendant la phase de chargement complet ne peut pas être garanti. Les tables ne sont pas synchronisées pendant la phase de chargement complet et pendant que les transactions mises en cache pour les tables individuelles sont appliquées. En conséquence, les contraintes actives d'intégrité référentielle peuvent entraîner l'échec d'une tâche pendant la phase de chargement complet.

Dans PostgreSQL, les clés étrangères (contraintes d'intégrité référentielle) sont mises en œuvre à l'aide de déclencheurs. Pendant la phase de chargement complet, AWS DMS charge chaque table une par une. Nous vous recommandons vivement de désactiver les contraintes de clé étrangère pendant un chargement complet, à l'aide de l'une des méthodes suivantes :
+ Désactivez temporairement tous les déclencheurs depuis l'instance, et terminez le chargement complet.
+ Utilisez le paramètre `session_replication_role` dans PostgreSQL.

À un instant donné, un déclencheur peut être dans l'un des états suivants : `origin`, `replica`, `always` ou `disabled`. Lorsque le paramètre `session_replication_role` a la valeur `replica`, seuls les déclencheurs ayant l'état `replica` sont actifs et sont déclenchés lorsqu'ils sont appelés. Sinon, les déclencheurs demeurent inactifs. 

PostgreSQL possède un mécanisme failsafe pour empêcher qu'une table soit tronquée, même lorsque `session_replication_role` est défini. Vous pouvez l'utiliser comme alternative à la désactivation des déclencheurs, afin d'aider le chargement complet à s'exécuter intégralement. Pour ce faire, définissez le mode de préparation des tables cible avec la valeur `DO_NOTHING`. Dans le cas contraire, les opérations DROP et TRUNCATE échouent lorsqu'il existe des contraintes de clé étrangère.

Dans Amazon RDS, vous pouvez définir ce paramètre à l’aide d’un groupe de paramètres. Pour une instance PostgreSQL s’exécutant sur Amazon EC2, vous pouvez définir le paramètre directement.



Pour plus d'informations sur l'utilisation d'une base de données PostgreSQL en tant que cible AWS DMS pour, consultez les sections suivantes : 

**Topics**
+ [Limitations relatives à l'utilisation de PostgreSQL comme cible pour AWS Database Migration Service](#CHAP_Target.PostgreSQL.Limitations)
+ [Limitations relatives à l'utilisation d'Amazon Aurora PostgreSQL Limitless comme cible pour AWS Database Migration Service](#CHAP_Target.PostgreSQL.Aurora.Limitations)
+ [Exigences de sécurité lors de l'utilisation d'une base de données PostgreSQL comme cible pour AWS Database Migration Service](#CHAP_Target.PostgreSQL.Security)
+ [Paramètres du point de terminaison et attributs de connexion supplémentaires (ECAs) lors de l'utilisation de PostgreSQL comme cible pour AWS DMS](#CHAP_Target.PostgreSQL.ConnectionAttrib)
+ [Types de données cibles pour PostgreSQL](#CHAP_Target.PostgreSQL.DataTypes)
+ [Utilisation de Babelfish pour Aurora PostgreSQL comme cible pour AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish)

## Limitations relatives à l'utilisation de PostgreSQL comme cible pour AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Limitations"></a>

Les limitations suivantes s'appliquent lors de l'utilisation d'une base de données PostgreSQL comme cible pour AWS DMS :
+ Pour les migrations hétérogènes, le type de données JSON est converti en type de données CLOB natif en interne.
+ Lors d'une migration d'Oracle vers PostgreSQL, si une colonne d'Oracle contient un caractère NULL (valeur hexadécimale U\$10000) AWS DMS , le caractère NULL est converti en espace (valeur hexadécimale U\$10020). Cela est dû à une limitation PostgreSQL.
+ AWS DMS ne prend pas en charge la réplication vers une table avec un index unique créé avec la fonction de coalesce.
+ Si vos tables utilisent des séquences, mettez à jour la valeur de `NEXTVAL` pour chaque séquence dans la base de données cible après avoir arrêté la réplication depuis la base de données source. AWS DMS copie les données de votre base de données source, mais ne migre pas les séquences vers la cible pendant la réplication en cours.

## Limitations relatives à l'utilisation d'Amazon Aurora PostgreSQL Limitless comme cible pour AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Aurora.Limitations"></a>

Les limitations suivantes s'appliquent lors de l'utilisation d'Amazon Aurora PostgreSQL Limitless comme cible pour : AWS DMS
+ AWS DMS La validation des données ne prend pas en charge Amazon Aurora PostgreSQL Limitless.
+ AWS DMS migre les tables sources en tant que tables standard, qui ne sont pas distribuées. Après la migration, vous pouvez convertir ces tables standard en tables Limitless en suivant le guide de conversion officiel.

## Exigences de sécurité lors de l'utilisation d'une base de données PostgreSQL comme cible pour AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Security"></a>

À des fins de sécurité, le compte d'utilisateur utilisé pour la migration des données doit être un utilisateur enregistré dans une base de données PostgreSQL que vous utilisez comme cible.

Votre point de terminaison cible PostgreSQL nécessite des autorisations utilisateur minimales pour exécuter AWS DMS une migration, consultez les exemples suivants.

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

Ou

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

## Paramètres du point de terminaison et attributs de connexion supplémentaires (ECAs) lors de l'utilisation de PostgreSQL comme cible pour AWS DMS
<a name="CHAP_Target.PostgreSQL.ConnectionAttrib"></a>

Vous pouvez utiliser les paramètres du point de terminaison et les attributs de connexion supplémentaires (ECAs) pour configurer votre base de données cible PostgreSQL. 

Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--postgre-sql-settings '{"EndpointSetting": "value", ...}'` JSON.

Vous spécifiez ECAs à l'aide du `ExtraConnectionAttributes` paramètre de votre point de terminaison.

Les paramètres de point de terminaison que vous pouvez utiliser avec PostgreSQL en tant que cible sont indiqués dans le tableau suivant.

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

## Types de données cibles pour PostgreSQL
<a name="CHAP_Target.PostgreSQL.DataTypes"></a>

Le point de terminaison de base de données PostgreSQL pour AWS DMS prend en charge la plupart des types de données de base de données PostgreSQL. Le tableau suivant indique les types de données cibles de base de données PostgreSQL pris en charge lors de l' AWS DMS utilisation et le mappage AWS DMS par défaut à partir des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS type de données  |  Type de données PostgreSQL  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEAN  | 
|  BLOB  |  BYTEA  | 
|  BYTES  |  BYTEA  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIME  |  Si l'échelle s'étend de 0 à 6, utilisez TIMESTAMP. Si l'échelle s'étend de 7 à 9, utilisez VARCHAR (37).  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  DECIMAL (P,S)  | 
|  REAL4  |  FLOAT4  | 
|  REAL8  |  FLOAT8  | 
|  CHAÎNE  |  Si la longueur est comprise entre 1 et 21 845, utilisez VARCHAR (longueur en octets).  Si la longueur est comprise entre 21 846 et 2 147 483 647, utilisez VARCHAR (65535).  | 
|  UINT1  |  SMALLINT  | 
|  UINT2  |  INTEGER  | 
|  UINT4  |  BIGINT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  Si la longueur est comprise entre 1 et 21 845, utilisez VARCHAR (longueur en octets).  Si la longueur est comprise entre 21 846 et 2 147 483 647, utilisez VARCHAR (65535).  | 
|  NCLOB  |  TEXT  | 
|  CLOB  |  TEXT  | 

**Note**  
Lors de la réplication à partir d'une source PostgreSQL AWS DMS , crée la table cible avec les mêmes types de données pour toutes les colonnes, à l'exception des colonnes avec des types de données définis par l'utilisateur. Dans ces cas, le type de données est créé en tant que « character varying » dans la cible.

## Utilisation de Babelfish pour Aurora PostgreSQL comme cible pour AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Babelfish"></a>

Vous pouvez migrer les tables sources SQL Server vers une cible Babelfish for Amazon Aurora PostgreSQL à l’aide d’ AWS Database Migration Service. Avec Babelfish, Aurora PostgreSQL comprend T-SQL, le dialecte SQL propriétaire de Microsoft SQL Server, et prend en charge le même protocole de communication. Ainsi, les applications écrites pour SQL Server peuvent désormais fonctionner avec Aurora avec moins de modifications de code. La fonctionnalité Babelfish est intégrée à Amazon Aurora et n’entraîne aucun coût supplémentaire. Vous pouvez activer Babelfish sur votre cluster Amazon Aurora à partir de la console Amazon RDS.

**Lorsque vous créez votre point de terminaison AWS DMS cible à l'aide des commandes de AWS DMS console, d'API ou de CLI, spécifiez le moteur cible comme **Amazon Aurora PostgreSQL** et nommez la base de données babelfish\$1db.** Dans la section **Paramètres de point de terminaison**, ajoutez les paramètres pour définir `DatabaseMode` sur `Babelfish` et `BabelfishDatabaseName` sur le nom de la base de données Babelfish T-SQL cible.

### Ajout de règles de transformation à votre tâche de migration
<a name="CHAP_Target.PostgreSQL.Babelfish.transform"></a>

Lorsque vous définissez une tâche de migration pour une cible Babelfish, vous devez inclure des règles de transformation garantissant que DMS utilise les tables Babelfish T-SQL pré-créées dans la base de données cible.

Commencez par ajouter une règle de transformation à votre tâche de migration qui convertit tous les noms de table en minuscules. Babelfish stocke en minuscules dans le catalogue `pg_class` PostgreSQL les noms des tables que vous créez à l’aide de T-SQL. Toutefois, lorsque vous avez des tables SQL Server avec des noms en casse mixte, DMS crée les tables en utilisant les types de données natifs PostgreSQL au lieu des types de données compatibles T-SQL. Pour cette raison, veillez à ajouter une règle de transformation qui convertit tous les noms de table en minuscules. Notez que les noms de colonnes ne doivent pas être convertis en minuscules.

Ensuite, si vous avez utilisé le mode de migration à plusieurs bases de données lorsque vous avez défini votre cluster, ajoutez une règle de transformation qui renomme le schéma SQL Server d’origine. Assurez-vous de renommer le nom du schéma SQL Server de sorte à inclure le nom de la base de données T-SQL. Par exemple, si le nom du schéma SQL Server d'origine est dbo et que le nom de votre base de données T-SQL est mydb, renommez le schéma en mydb\$1dbo à l'aide d'une règle de transformation.

**Note**  
Lorsque vous utilisez Babelfish pour Aurora PostgreSQL 16 ou version ultérieure, le mode de migration par défaut est « mutidatabase ». Lorsque vous exécutez des tâches de migration DMS, assurez-vous de revoir le paramètre du mode de migration et de mettre à jour les règles de transformation si nécessaire.

Si vous utilisez le mode à une seule base de données, vous n’avez pas besoin d’une règle de transformation pour renommer les noms de schéma. Les noms de schéma sont one-to-one mappés avec la base de données T-SQL cible dans Babelfish.

L’exemple de règle de transformation suivant convertit tous les noms de table en minuscules et renomme le nom du schéma SQL Server d’origine `dbo` en `mydb_dbo`.

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

### Limitations de l’utilisation d’un point de terminaison cible PostgreSQL avec des tables Babelfish
<a name="CHAP_Target.PostgreSQL.Babelfish.limitations"></a>

Les limitations suivantes s’appliquent lors de l’utilisation d’un point de terminaison cible PostgreSQL avec des tables Babelfish :
+ Pour le mode **Préparation de table cible**, utilisez uniquement les modes **Ne rien faire** ou **Tronquer**. N’utilisez pas le mode **Supprimer les tables sur la cible**. Dans ce mode, DMS crée les tables en tant que tables PostgreSQL que T-SQL peut ne pas reconnaître.
+ AWS DMS ne prend pas en charge le type de données sql\$1variant.
+ Babelfish sous le point de terminaison Postgres ne prend pas en charge `HEIRARCHYID` les types de données `GEOMETRY` (avant 3.5.4) et `GEOGRAPHY` (avant 3.5.4). Pour migrer ces types de données, vous pouvez ajouter des règles de transformation afin de convertir le type de données en wstring (250).
+ Babelfish ne prend en charge que la migration des types de données `BINARY`, `VARBINARY` et `IMAGE` avec le type de données `BYTEA`. Pour les versions antérieures d’Aurora PostgreSQL, vous pouvez utiliser DMS pour migrer ces tables vers un [point de terminaison cible Babelfish](CHAP_Target.Babelfish.md). Il n’est pas nécessaire de spécifier une longueur pour le type de données `BYTEA`, comme illustré dans l’exemple suivant.

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

  Remplacez le type de données T-SQL précédent par le type de données `BYTEA` pris en charge par T-SQL.

  ```
  [Picture] BYTEA NULL
  ```
+ Pour les versions antérieures d’Aurora PostgreSQL Babelfish, si vous créez une tâche de migration pour une réplication continue de SQL Server vers Babelfish à l’aide du point de terminaison cible PostgreSQL, vous devez affecter le type de données `SERIAL` à toutes les tables utilisant des colonnes `IDENTITY`. À partir d’Aurora PostgreSQL (versions 15.3/14.8 et ultérieures) et de Babelfish (versions 3.2.0 et ultérieures), la colonne d’identité est prise en charge et il n’est plus nécessaire d’affecter le type de données SERIAL. Pour plus d’informations, consultez [Syntaxe de SERIAL](https://docs.aws.amazon.com/dms/latest/sql-server-to-aurora-postgresql-migration-playbook/chap-sql-server-aurora-pg.tsql.sequences..html) dans la section Séquences et identité du *Manuel de migration de SQL Server vers Aurora PostgreSQL*. Ensuite, lorsque vous créez la table dans Babelfish, modifiez la définition de colonne comme suit.

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

  Modifiez la ligne précédente comme suit.

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

  Aurora PostgreSQL compatible avec Babelfish crée une séquence en utilisant la configuration par défaut et ajoute une contrainte `NOT NULL` à la colonne. La séquence récemment créée se comporte comme une séquence normale (incrémentée de 1) et ne possède aucune option `SERIAL` composite.
+ Après avoir migré les données avec des tables qui utilisent des colonnes `IDENTITY` ou le type de données `SERIAL`, réinitialisez l’objet de séquence basé sur PostgreSQL en fonction de la valeur maximale de la colonne. Après avoir effectué un chargement complet des tables, utilisez la requête T-SQL suivante pour générer des instructions afin d’amorcer l’objet de séquence associé.

  ```
  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(%';
  ```

  La requête génère une série d’instructions SELECT que vous exécutez afin de mettre à jour les valeurs maximales d’IDENTITY et de SERIAL.
+ Pour les versions de Babelfish antérieures à 3.2, le **Mode LOB complet** peut entraîner une erreur de table. Dans ce cas, créez une tâche distincte pour les tables qui n’ont pas pu être chargées. Utilisez ensuite le **Mode LOB limité** pour spécifier la valeur appropriée pour **Taille de LOB maximale (Ko)**. Sinon, vous pouvez définir le paramètre de l’attribut de connexion du point de terminaison SQL Server`ForceFullLob=True`.
+ Pour les versions de Babelfish antérieures à 3.2, la validation des données avec des tables Babelfish qui n’utilisent pas de clés primaires basées sur des entiers génère un message indiquant qu’aucune clé unique appropriée n’a été trouvée. À partir d’Aurora PostgreSQL (versions 15.3/14.8 et ultérieures) et de Babelfish (versions 3.2.0 et ultérieures), la validation des données pour les clés primaires non entières est prise en charge. 
+ En raison des différences de précision dans le nombre de décimales par seconde, DMS signale des échecs de validation des données pour les tables Babelfish qui utilisent les types de données `DATETIME`. Pour éviter ces échecs, vous pouvez ajouter le type de règle de validation suivant pour les types de données `DATETIME`.

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

# Utilisation d'une base de données compatible MySQL comme cible pour AWS Database Migration Service
<a name="CHAP_Target.MySQL"></a>

Vous pouvez migrer des données vers n'importe quelle base de données compatible MySQL à l'aide AWS DMS de n'importe quel moteur de données source compatible. AWS DMS Si vous migrez vers une base de données compatible MySQL sur site, votre moteur source AWS DMS doit résider dans l'écosystème. AWS Le moteur peut se trouver sur un service AWS géré tel qu'Amazon RDS, Amazon Aurora ou Amazon S3. Sinon, le moteur peut se trouver sur une base de données autogérée sur Amazon EC2. 

Vous pouvez utiliser SSL pour chiffrer les connexions entre votre point de terminaison compatible MySQL et l'instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison compatible MySQL, consultez [Utilisation du protocole SSL avec AWS Database Migration Service](CHAP_Security.SSL.md). 

Pour plus d'informations sur les versions de MySQL AWS DMS prises en charge en tant que cible, consultez[Objectifs pour AWS DMS](CHAP_Introduction.Targets.md).

Vous pouvez utiliser les bases de données compatibles MySQL suivantes comme cibles pour : 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

**Note**  
Quel que soit le moteur de stockage source (MyISAM, MEMORY, etc.), AWS DMS crée une table cible compatible MySQL en tant que table InnoDB par défaut.   
Si vous avez besoin d'une table qui utilise un moteur de stockage autre qu'InnoDB, vous pouvez manuellement créer la table sur la cible compatible avec MySQL et migrer la table à l'aide de l'option **Ne rien faire**. Pour de plus amples informations, veuillez consulter [Paramètres de tâche de chargement complet](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

Pour plus de détails sur l'utilisation d'une base de données compatible MySQL comme cible pour AWS DMS, consultez les sections suivantes. 

**Topics**
+ [Utiliser n'importe quelle base de données compatible MySQL comme cible pour AWS Database Migration Service](#CHAP_Target.MySQL.Prerequisites)
+ [Limitations relatives à l'utilisation d'une base de données compatible MySQL comme cible pour AWS Database Migration Service](#CHAP_Target.MySQL.Limitations)
+ [Paramètres du point de terminaison lors de l'utilisation d'une base de données compatible MySQL comme cible pour AWS DMS](#CHAP_Target.MySQL.ConnectionAttrib)
+ [Types de données cibles pour MySQL](#CHAP_Target.MySQL.DataTypes)

## Utiliser n'importe quelle base de données compatible MySQL comme cible pour AWS Database Migration Service
<a name="CHAP_Target.MySQL.Prerequisites"></a>

Avant de commencer à utiliser une base de données compatible avec MySQL comme cible pour AWS DMS, assurez-vous que les conditions préalables suivantes sont remplies :
+ Fournissez un compte utilisateur AWS DMS disposant de read/write privilèges d'accès à la base de données compatible MySQL. Pour créer les privilèges nécessaires, exécutez les commandes suivantes.

  ```
  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>'@'%';
  ```
+ Pendant la phase de migration de chargement complet, vous devez désactiver les clés étrangères sur vos tables cibles. Pour désactiver les vérifications par clé étrangère sur une base de données compatible MySQL pendant un chargement complet, vous pouvez ajouter la commande suivante à la section **Attributs de connexion supplémentaires** de la AWS DMS console pour votre point de terminaison cible.

  ```
  Initstmt=SET FOREIGN_KEY_CHECKS=0;
  ```
+ Définissez le paramètre de base de données `local_infile = 1` pour permettre à AWS DMS de charger les données dans la base de données cible.
+ Accordez les privilèges suivants si vous utilisez des évaluations de prémigration spécifiques à MySQL.

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

## Limitations relatives à l'utilisation d'une base de données compatible MySQL comme cible pour AWS Database Migration Service
<a name="CHAP_Target.MySQL.Limitations"></a>

Lorsque vous utilisez une base de données MySQL comme cible, les AWS DMS fonctionnalités suivantes ne sont pas prises en charge :
+ Les instructions en langage de définition de données (DDL) TRUNCATE PARTITION, DROP TABLE et RENAME TABLE.
+ Utilisation d'une instruction `ALTER TABLE table_name ADD COLUMN column_name` pour ajouter des colonnes au début ou au milieu d'une table.
+ Lorsque vous chargez des données sur une cible compatible MySQL dans le cadre d'une tâche à chargement complet, AWS DMS ne signale pas les erreurs causées par des contraintes dans les journaux des tâches, ce qui peut entraîner des erreurs clés dupliquées ou des incohérences avec le nombre d'enregistrements. Cela est dû à la façon dont MySQL gère les données locales avec la commande `LOAD DATA`. Veillez à effectuer les opérations suivantes pendant la phase de chargement complet : 
  + Désactivez les contraintes.
  + Utilisez AWS DMS la validation pour vous assurer que les données sont cohérentes.
+ Lorsque vous mettez à jour la valeur d'une colonne à sa valeur existante, les bases de données compatibles MySQL renvoient un avertissement `0 rows affected`. Bien que ce comportement ne soit pas techniquement une erreur, il est différent de la façon dont la situation est gérée par d'autres moteurs de base de données. Par exemple, Oracle effectue une mise à jour d'une seule ligne. Pour les bases de données compatibles avec MySQL, AWS DMS génère une entrée dans la table de contrôle awsdms\$1apply\$1exceptions et enregistre l'avertissement suivant.

  ```
  Some changes from the source database had no impact when applied to
  the target database. See awsdms_apply_exceptions table for details.
  ```
+ Aurora sans serveur est disponible en tant que cible pour Amazon Aurora version 2, compatible avec MySQL version 5.7. (Sélectionnez Aurora MySQL version 2.07.1 pour pouvoir utiliser Aurora sans serveur avec la compatibilité MySQL 5.7.) Pour plus d'informations sur Aurora Serverless, consultez la section [Utilisation d'Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) dans le guide de l'*utilisateur Amazon Aurora*.
+ AWS DMS ne prend pas en charge l'utilisation d'un point de terminaison de lecteur pour Aurora ou Amazon RDS, sauf si les instances sont en mode inscriptible, c'est-à-dire que les `innodb_read_only` paramètres `read_only` et sont définis sur ou. `0` `OFF` Pour plus d’informations sur l’utilisation d’Amazon RDS et Aurora en tant que cibles, consultez les rubriques suivantes :
  +  [Détermination de l’instance de base de données à laquelle vous êtes connecté](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.BestPractices.html#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection) 
  +  [Mise à jour des réplicas en lecture avec MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.ReadReplicas.html#USER_MySQL.Replication.ReadReplicas.Updates) 
+ Lors de la réplication du type de données TIME, une fraction de la valeur temporelle n'est pas répliquée.
+ Lors de la réplication du type de données TIME avec un attribut de connexion supplémentaire`loadUsingCSV=false`, la valeur temporelle est limitée à une plage. `[00:00:00, 23:59:59]`

## Paramètres du point de terminaison lors de l'utilisation d'une base de données compatible MySQL comme cible pour AWS DMS
<a name="CHAP_Target.MySQL.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible compatible MySQL comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--my-sql-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec MySQL en tant que cible sont indiqués dans le tableau suivant.

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

Vous pouvez également utiliser les attributs de connexion supplémentaires pour configurer la base de données cible compatible MySQL.

Le tableau suivant indique les attributs de connexion supplémentaires que vous pouvez utiliser avec MySQL en tant que cible.

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

Vous pouvez également utiliser le paramètre `AfterConnectScript` de la commande `--my-sql-settings` pour désactiver les contrôles de clés étrangères et spécifier le fuseau horaire de la base de données.

## Types de données cibles pour MySQL
<a name="CHAP_Target.MySQL.DataTypes"></a>

Le tableau suivant indique les types de données cibles de base de données MySQL pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS types de données  |  Types de données MySQL  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEAN  | 
|  BYTES  |  Si la longueur est comprise entre 1 et 65 535, utilisez VARBINARY (length).  Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGLOB.  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  « Si l'échelle est => 0 et =< 6, alors : DATETIME (Scale) Si l'échelle est => 7 et =< 9, alors : VARCHAR (37) »  | 
|  INT1  |  TINYINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  DECIMAL (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  |  DOUBLE PRECISION  | 
|  CHAÎNE  |  Si la longueur est comprise entre 1 et 21 845, utilisez VARCHAR (length). Si la longueur est comprise entre 21 846 et 2 147 483 647, utilisez LONGTEXT.  | 
|  UINT1  |  UNSIGNED TINYINT  | 
|  UINT2  |  UNSIGNED SMALLINT  | 
|  UINT4  |  UNSIGNED INTEGER  | 
|  UINT8  |  UNSIGNED BIGINT  | 
|  WSTRING  |  Si la longueur est comprise entre 1 et 32 767, utilisez VARCHAR (length).  Si la longueur est comprise entre 32 768 et 2 147 483 647, utilisez LONGTEXT.  | 
|  BLOB  |  Si la longueur est comprise entre 1 et 65 535, utilisez BLOB. Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGBLOB. Si la longueur est 0, utilisez LONGBLOB (full LOB support).  | 
|  NCLOB  |  Si la longueur est comprise entre 1 et 65 535, utilisez TEXT. Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGTEXT avec ucs2 pour CHARACTER SET. Si la longueur est 0, utilisez LONGTEXT (full LOB support) avec ucs2 pour CHARACTER SET.  | 
|  CLOB  |  Si la longueur est comprise entre 1 et 65 535, utilisez TEXT. Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGTEXT. Si la longueur est 0, utilisez LONGTEXT (full LOB support).  | 

# Utilisation d'une base de données Amazon Redshift comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Redshift"></a>

Vous pouvez migrer les données vers les bases de données Amazon Redshift à l'aide de. AWS Database Migration Service Amazon Redshift est un service d’entrepôt des données entièrement géré dans le cloud. Avec une base de données Amazon Redshift en tant que cible, vous pouvez migrer les données provenant de tous les autres bases de données sources prises en charge.

Vous pouvez utiliser Amazon Redshift Serverless comme cible pour. AWS DMS Pour plus d'informations, consultez [Utilisation AWS DMS avec Amazon Redshift Serverless comme cibleAmazon Redshift sans serveur](#CHAP_Target.Redshift.RSServerless), ci-après.

 Le cluster Amazon Redshift doit se trouver dans le même AWS compte et dans la même AWS région que l'instance de réplication. 

Lors d'une migration de base de données vers Amazon Redshift, déplacez AWS DMS d'abord les données vers un compartiment Amazon S3. Lorsque les fichiers se trouvent dans un compartiment Amazon S3, AWS DMS ils sont transférés vers les tables appropriées de l'entrepôt de données Amazon Redshift. AWS DMS crée le compartiment S3 dans la même AWS région que la base de données Amazon Redshift. L'instance de AWS DMS réplication doit être située dans cette même AWS région. 

Si vous utilisez l'API AWS CLI ou DMS pour migrer des données vers Amazon Redshift, configurez Gestion des identités et des accès AWS un rôle (IAM) pour autoriser l'accès à S3. Pour plus d'informations sur la création de ce rôle IAM, consultez [Création des rôles IAM à utiliser avec AWS DMS](security-iam.md#CHAP_Security.APIRole).

Le point de terminaison Amazon Redshift automatise complètement les éléments suivants :
+ la génération de schéma et le mappage de type de données ;
+ le chargement complet des tables de base de données source ;
+ le chargement incrémentiel des modifications apportées aux tables source ;
+ l'application des modifications de schéma en langage de définition de données (DDL) apportées aux tables de la source ;
+ la synchronisation entre le chargement complet et les traitements de capture des données modifiées (CDC).

AWS Database Migration Service prend en charge à la fois le chargement complet et les opérations de traitement des modifications. AWS DMS lit les données de la base de données source et crée une série de fichiers de valeurs séparées par des virgules (.csv). Pour les opérations de chargement complet, AWS DMS crée des fichiers pour chaque table. AWS DMS copie ensuite les fichiers de table pour chaque table dans un dossier distinct dans Amazon S3. Lorsque les fichiers sont chargés sur Amazon S3, AWS DMS envoie une commande de copie et les données contenues dans les fichiers sont copiées dans Amazon Redshift. Pour les opérations de traitement des modifications, AWS DMS copie les modifications nettes dans les fichiers .csv. AWS DMS télécharge ensuite les fichiers net change sur Amazon S3 et copie les données sur Amazon Redshift.

Pour plus d'informations sur l'utilisation d'Amazon Redshift comme cible pour AWS DMS, consultez les sections suivantes : 

**Topics**
+ [Conditions préalables à l'utilisation d'une base de données Amazon Redshift comme cible pour AWS Database Migration Service](#CHAP_Target.Redshift.Prerequisites)
+ [Privilèges requis pour utiliser Redshift en tant que cible](#CHAP_Target.Redshift.Privileges)
+ [Limitations relatives à l'utilisation d'Amazon Redshift comme cible pour AWS Database Migration Service](#CHAP_Target.Redshift.Limitations)
+ [Configuration d'une base de données Amazon Redshift en tant que cible pour AWS Database Migration Service](#CHAP_Target.Redshift.Configuration)
+ [Utilisation d'un routage VPC amélioré avec Amazon Redshift comme cible pour AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC)
+ [Création et utilisation de AWS KMS clés pour chiffrer les données cibles d'Amazon Redshift](#CHAP_Target.Redshift.KMSKeys)
+ [Paramètres du point de terminaison lors de l'utilisation d'Amazon Redshift comme cible pour AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib)
+ [Utilisation d’une clé de chiffrement des données et d’un compartiment Amazon S3 comme stockage intermédiaire](#CHAP_Target.Redshift.EndpointSettings)
+ [Paramètres de tâche multithread pour Amazon Redshift](#CHAP_Target.Redshift.ParallelApply)
+ [Types de données cibles pour Amazon Redshift](#CHAP_Target.Redshift.DataTypes)
+ [Utilisation AWS DMS avec Amazon Redshift Serverless comme cible](#CHAP_Target.Redshift.RSServerless)

## Conditions préalables à l'utilisation d'une base de données Amazon Redshift comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Redshift.Prerequisites"></a>

La liste suivante décrit les conditions requises pour l’utilisation d’Amazon Redshift en tant que cible pour la migration des données :
+ Utilisez la console AWS de gestion pour lancer un cluster Amazon Redshift. Notez les informations de base concernant votre AWS compte et votre cluster Amazon Redshift, telles que votre mot de passe, votre nom d'utilisateur et le nom de la base de données. Vous avez besoin de ces valeurs lors de la création du point de terminaison cible Amazon Redshift. 
+ Le cluster Amazon Redshift doit se trouver dans le même AWS compte et dans la même AWS région que l'instance de réplication.
+ L'instance de AWS DMS réplication a besoin d'une connectivité réseau avec le point de terminaison Amazon Redshift (nom d'hôte et port) utilisé par votre cluster.
+ AWS DMS utilise un compartiment Amazon S3 pour transférer des données vers la base de données Amazon Redshift. Pour que AWS DMS crée le compartiment, la console doit utiliser un rôle IAM `dms-access-for-endpoint`. Si vous utilisez l'API AWS CLI ou DMS pour créer une migration de base de données avec Amazon Redshift comme base de données cible, vous devez créer ce rôle IAM. Pour plus d'informations sur la création de ce rôle, consultez la page [Création des rôles IAM à utiliser avec AWS DMS](security-iam.md#CHAP_Security.APIRole). 
+ AWS DMS convertit BLOBs CLOBs, et NCLOBs en un VARCHAR sur l'instance Amazon Redshift cible. Amazon Redshift ne prend pas en charge les types de données VARCHAR supérieurs à 64 Ko. Vous ne pouvez donc pas stocker de données traditionnelles sur Amazon LOBs Redshift. 
+ Définissez le paramètre de tâche de métadonnées cible [BatchApplyEnabled](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)sur `true` for AWS DMS pour gérer les modifications apportées aux tables cibles Amazon Redshift pendant le CDC. Une clé primaire sur la table source et la table cible est requise. Sans clé primaire, les modifications sont appliquées instruction par instruction. Ce qui peut nuire aux performances des tâches pendant la CDC en provoquant une latence cible et en affectant la file d'attente de validation du cluster. 
+ Lorsque la sécurité au niveau des lignes est activée sur les tables de Redshift, vous devez accorder les autorisations appropriées à tous les utilisateurs de votre DMS.

## Privilèges requis pour utiliser Redshift en tant que cible
<a name="CHAP_Target.Redshift.Privileges"></a>

Utilisez la commande GRANT pour définir les privilèges d’accès pour un utilisateur ou un groupe d’utilisateurs. Les privilèges incluent les options d'accès telles que pouvoir lire les données des tables et des vues, écrire des données et créer des tables. Pour plus d’informations sur l’utilisation de GRANT avec Amazon Redshift, consultez [GRANT](https://docs.aws.amazon.com//redshift/latest/dg/r_GRANT.html) dans le *Guide du développeur de base de données Amazon Redshift*. 

La syntaxe suivante s’applique à accorder des privilèges spécifiques pour une table, une base de données, un schéma, une fonction, une procédure ou des privilèges de niveau langue sur les tables et les vues Amazon Redshift.

```
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 } [, ...]
```

La syntaxe suivante s'applique aux privilèges de niveau colonne sur les tables et les vues Amazon Redshift. 

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

Voici la syntaxe du privilège ASSUMEROLE accordé aux utilisateurs et aux groupes ayant un rôle spécifié.

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

## Limitations relatives à l'utilisation d'Amazon Redshift comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Redshift.Limitations"></a>

Les limitations suivantes s’appliquent lors de l’utilisation d’une base de données Amazon Redshift en tant que cible :
+ N’activez pas la gestion des versions pour le compartiment S3 que vous utilisez comme stockage intermédiaire pour votre cible Amazon Redshift. Si vous avez besoin de la gestion des versions S3, utilisez des politiques de cycle de vie pour supprimer les anciennes versions de manière active. Dans le cas contraire, la connexion de test du point de terminaison risque d’échouer en raison du délai d’attente d’appel `list-object` S3. Pour créer une politique de cycle de vie pour un compartiment S3, consultez [Gestion du cycle de vie de votre stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Pour supprimer une version d’un objet S3, consultez [Suppression des versions d’objet d’un compartiment activé pour la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ La commande DDL suivante n'est pas prise en charge :

  ```
  ALTER TABLE table name MODIFY COLUMN column name data type;
  ```
+  AWS DMS Impossible de migrer ou de répliquer les modifications apportées à un schéma dont le nom commence par un trait de soulignement (\$1). Si vous avez des schémas dont le nom commence par un trait de soulignement, utilisez les transformations de mappage pour renommer le schéma sur la cible. 
+  Amazon Redshift ne prend pas en charge une VARCHARs taille supérieure à 64 Ko. LOBs provenant de bases de données traditionnelles ne peuvent pas être stockées dans Amazon Redshift.
+  L'application d'une instruction DELETE à une table avec une clé primaire à plusieurs colonnes n'est pas prise en charge lorsque l'un des noms de colonne de clé primaire utilise un mot réservé. Pour obtenir la liste des mots réservés Amazon Redshift, consultez [cette page](https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html).
+ Vous pouvez rencontrer des problèmes de performances si votre système source exécute des opérations UPDATE sur la clé primaire d’une table source. Ces problèmes de performances se produisent lors de l’application de modifications à la cible. Cela est dû au fait que les opérations UPDATE (et DELETE) dépendent de la valeur de la clé primaire pour identifier la ligne cible. Si vous mettez à jour la clé primaire d’une table source, votre journal des tâches contiendra des messages tels que les suivants :

  ```
  Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  ```
+ DMS ne prend pas en charge les noms DNS personnalisés lors de la configuration d'un point de terminaison pour un cluster Redshift, et vous devez utiliser le nom DNS fourni par Amazon. Étant donné que le cluster Amazon Redshift doit se trouver dans le même AWS compte et dans la même région que l'instance de réplication, la validation échoue si vous utilisez un point de terminaison DNS personnalisé.
+ Le délai d’expiration des sessions inactives par défaut d’Amazon Redshift est de 4 heures. Lorsqu’il n’y a aucune activité dans le cadre de la tâche de réplication DMS, Redshift déconnecte la session au bout de 4 heures. Des erreurs peuvent survenir si DMS ne parvient pas à se connecter et doit éventuellement redémarrer. Pour contourner le problème, définissez une limite SESSION TIMEOUT supérieure à 4 heures pour l’utilisateur de réplication DMS. Vous pouvez également consulter la description de [ALTER USER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html) dans le *Guide du développeur de base de données Amazon Redshift*.
+ Lors de AWS DMS la réplication des données de la table source sans clé principale ou unique, la latence du CDC peut être élevée, ce qui se traduit par un niveau de performance inacceptable.
+ La troncature des partitions n'est pas prise en charge lors de la réplication CDC d'une source Oracle vers une cible Redshift.
+ Des enregistrements dupliqués peuvent apparaître dans les tables cibles car Amazon Redshift n'applique pas les clés primaires et AWS DMS peut rejouer le CDC lorsqu'une tâche est reprise. Pour éviter les doublons, utilisez le `ApplyErrorInsertPolicy=INSERT_RECORD` paramètre. Pour de plus amples informations, veuillez consulter [Paramètres de traitement des erreurs pour une tâche](CHAP_Tasks.CustomizingTasks.TaskSettings.ErrorHandling.md). Vous pouvez également mettre en œuvre des procédures de détection des doublons et de nettoyage après la migration au niveau de l'application.

## Configuration d'une base de données Amazon Redshift en tant que cible pour AWS Database Migration Service
<a name="CHAP_Target.Redshift.Configuration"></a>

AWS Database Migration Service doit être configuré pour fonctionner avec l'instance Amazon Redshift. Le tableau suivant décrit les propriétés de configuration disponibles pour le point de terminaison Amazon Redshift.


| Propriété | Description | 
| --- | --- | 
| serveur | Nom du cluster Amazon Redshift que vous utilisez. | 
| port | Numéro de port d’Amazon Redshift. La valeur par défaut est 5439. | 
| nom d’utilisateur | Nom d’utilisateur Amazon Redshift d’un utilisateur enregistré. | 
| mot de passe | Mot de passe de l'utilisateur nommé dans la propriété de nom d'utilisateur. | 
| database | Nom de l’entrepôt des données (service) Amazon Redshift que vous utilisez. | 

Si vous souhaitez ajouter des attributs de chaîne de connexion supplémentaires au point de terminaison Amazon Redshift, vous pouvez spécifier les attributs `maxFileSize` et `fileTransferUploadStreams`. Pour plus d'informations sur ces attributs, consultez la page [Paramètres du point de terminaison lors de l'utilisation d'Amazon Redshift comme cible pour AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

## Utilisation d'un routage VPC amélioré avec Amazon Redshift comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Redshift.EnhancedVPC"></a>

Si vous utilisez le routage VPC amélioré avec votre cible Amazon Redshift, l’ensemble du trafic COPY entre votre cluster Amazon Redshift et vos référentiels de données passe par votre VPC. Étant donné que le routage VPC amélioré affecte la manière dont Amazon Redshift accède aux autres ressources, les commandes COPY risquent d’échouer si vous n’avez pas configuré correctement votre VPC.

AWS DMS peut être affecté par ce comportement car il utilise la commande COPY pour déplacer des données dans S3 vers un cluster Amazon Redshift.

Voici les étapes à suivre AWS DMS pour charger des données dans une cible Amazon Redshift :

1. AWS DMS copie les données de la source vers des fichiers .csv sur le serveur de réplication.

1. AWS DMS utilise le AWS SDK pour copier les fichiers .csv dans un compartiment S3 de votre compte.

1. AWS DMS utilise ensuite la commande COPY dans Amazon Redshift pour copier les données des fichiers .csv dans S3 vers une table appropriée dans Amazon Redshift.

Si le routage VPC amélioré n'est pas activé, Amazon Redshift achemine le trafic via Internet, y compris le trafic vers d'autres services du réseau. AWS Si la fonction n'est pas activée, vous n'avez pas à configurer le chemin d'accès réseau. Si la fonction est activée, vous devez créer spécifiquement un chemin d'accès réseau entre le VPC de votre cluster et vos ressources de données. Pour plus d’informations sur la configuration requise, consultez [Routage VPC amélioré](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) dans la documentation d’Amazon Redshift. 

## Création et utilisation de AWS KMS clés pour chiffrer les données cibles d'Amazon Redshift
<a name="CHAP_Target.Redshift.KMSKeys"></a>

Vous pouvez chiffrer vos données cibles transmises à Amazon S3 avant de les copier sur Amazon Redshift. Pour ce faire, vous pouvez créer et utiliser des AWS KMS clés personnalisées. Vous pouvez utiliser la clé que vous avez créée pour chiffrer vos données cibles à l’aide de l’un des mécanismes suivants lorsque vous créez le point de terminaison cible Amazon Redshift :
+ Utilisez l'option suivante lorsque vous exécutez la commande `create-endpoint` à l'aide de l' AWS CLI.

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

  Ici, `your-kms-key-ARN` est l'Amazon Resource Name (ARN) pour votre clé KMS. Pour de plus amples informations, veuillez consulter [Utilisation d’une clé de chiffrement des données et d’un compartiment Amazon S3 comme stockage intermédiaire](#CHAP_Target.Redshift.EndpointSettings).
+ Définissez l'attribut de connexion supplémentaire `encryptionMode` à la valeur `SSE_KMS` et l'attribut de connexion supplémentaire `serverSideEncryptionKmsKeyId` à l'ARN de votre clé KMS. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation d'Amazon Redshift comme cible pour AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

Pour chiffrer les données cibles Amazon Redshift à l'aide d'une clé KMS, vous avez besoin Gestion des identités et des accès AWS d'un rôle (IAM) autorisé à accéder aux données Amazon Redshift. Ce rôle IAM est ensuite accessible dans une stratégie (stratégie de clé) attachée à la clé de chiffrement que vous créez. Pour ce faire, créez les éléments suivants dans votre console IAM :
+ Un rôle IAM avec une politique AWS gérée.
+ Une clé KMS avec une stratégie de clé qui fait référence à ce rôle.

Les procédures suivantes décrivent la marche à suivre.

**Pour créer un rôle IAM avec la politique gérée requise AWS**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Rôles**. La page **Rôles** s'ouvre.

1. Choisissez **Créer un rôle**. La page **Créer un rôle** s'ouvre.

1. Choisissez **Service AWS ** en tant qu’entité de confiance, puis **DMS** en tant que service utilisant le rôle.

1. Choisissez **Suivant : Autorisations**. La page **Attach permissions policies (Attacher des stratégies d'autorisation)** s'affiche.

1. Recherchez et sélectionnez la stratégie `AmazonDMSRedshiftS3Role`.

1. Choisissez **Suivant : Balises**. La page **Ajouter des balises** s’affiche. Ici, vous pouvez ajouter toutes les balises souhaitées.

1. Choisissez **Next: Review (Suivant : Vérification)** et vérifiez vos résultats.

1. Si les paramètres correspondent à vos besoins, saisissez un nom pour le rôle (par exemple, `DMS-Redshift-endpoint-access-role`) et une description supplémentaire si vous le souhaitez, puis choisissez **Créer un rôle**. La page **Rôles** s'ouvre avec un message indiquant que votre rôle a été créé.

Vous avez désormais créé le nouveau rôle pour accéder aux ressources Amazon Redshift en vue du chiffrement avec un nom spécifié, par exemple `DMS-Redshift-endpoint-access-role`.

**Pour créer une clé de AWS KMS chiffrement avec une politique de clé qui fait référence à votre rôle IAM**
**Note**  
Pour plus d'informations sur le AWS DMS fonctionnement des clés de AWS KMS chiffrement, consultez[Configuration d'une clé de chiffrement et spécification AWS KMS des autorisations](CHAP_Security.md#CHAP_Security.EncryptionKey).

1. Connectez-vous à la console AWS Key Management Service (AWS KMS) AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/kms.](https://console.aws.amazon.com/kms)

1. Pour modifier le Région AWS, utilisez le sélecteur de région dans le coin supérieur droit de la page.

1. Dans le panneau de navigation, choisissez **Clés gérées par le client**.

1. Choisissez **Create key**. La page **Configurer la clé** s'ouvre.

1. Pour **Type de clé**, choisissez **Symétrique**.
**Note**  
Lorsque vous créez cette clé, vous ne pouvez créer qu'une clé symétrique, car tous les AWS services, tels qu'Amazon Redshift, ne fonctionnent qu'avec des clés de chiffrement symétriques.

1. Choisissez **Options avancées**. Pour **Origine des éléments de clé**, assurez-vous que **KMS** est choisi, puis choisissez **Suivant**. La page **Ajouter des étiquettes** s'ouvre.

1. Dans **Créer un alias et une description**, entrez un alias pour la clé (par exemple, `DMS-Redshift-endpoint-encryption-key`) et toute description supplémentaire.

1. Pour **Balises**, ajoutez les balises que vous souhaitez pour vous aider à identifier la clé et suivre son utilisation, puis choisissez **Suivant**. La page **Définir des autorisations d'administration de clé** s'ouvre et affiche une liste d'utilisateurs et de rôles parmi lesquels vous pouvez choisir.

1. Ajoutez les utilisateurs et les rôles que vous souhaitez voir gérer la clé. Assurez-vous que ces utilisateurs et ces rôles ont les autorisations requises pour gérer la clé. 

1. Pour **Suppression de clé**, choisissez si les administrateurs de clé peuvent supprimer celle-ci, puis choisissez **Suivant**. La page **Définir des autorisations d'utilisation de clé** s'ouvre et affiche une liste supplémentaire d'utilisateurs et de rôles parmi lesquels vous pouvez choisir.

1. Pour **Ce compte**, choisissez les utilisateurs disponibles pour lesquels vous souhaitez effectuer des opérations de chiffrement sur des cibles Amazon Redshift. Choisissez également le rôle que vous avez créé précédemment dans **Rôles** pour activer l’accès au chiffrement des objets cibles Amazon Redshift, par exemple `DMS-Redshift-endpoint-access-role`.

1. Si vous souhaitez ajouter d'autres comptes ne figurant pas dans la liste pour avoir ce même accès, dans **Autres AWS comptes**, choisissez **Ajouter un autre AWS compte**, puis cliquez sur **Suivant**. La page **Réviser et modifier la stratégie de clé** s'ouvre, affichant le JSON de la stratégie de clé que vous pouvez réviser et modifier en saisissant les informations dans le JSON existant. Ici, vous pouvez voir où la stratégie clé fait référence au rôle et aux utilisateurs (par exemple, `Admin` et `User1`) que vous avez choisis à l'étape précédente. Vous pouvez également voir les actions clés autorisées pour les différents mandataires (utilisateurs et rôles), comme illustré dans l'exemple suivant.

------
#### [ 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. Choisissez **Finish** (Terminer). La page **Clés de chiffrement** s'ouvre avec un message indiquant que votre AWS KMS key compte a été créé.

Vous venez de créer une nouvelle clé KMS avec un alias spécifié (par exemple, `DMS-Redshift-endpoint-encryption-key`). Cette clé permet AWS DMS de chiffrer les données cibles Amazon Redshift.

## Paramètres du point de terminaison lors de l'utilisation d'Amazon Redshift comme cible pour AWS DMS
<a name="CHAP_Target.Redshift.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible Amazon Redshift comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--redshift-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Amazon Redshift en tant que cible sont indiqués dans le tableau suivant.

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

## Utilisation d’une clé de chiffrement des données et d’un compartiment Amazon S3 comme stockage intermédiaire
<a name="CHAP_Target.Redshift.EndpointSettings"></a>

Vous pouvez utiliser les paramètres de point de terminaison cible Amazon Redshift pour configurer les éléments suivants :
+ Une clé de chiffrement de AWS KMS données personnalisée. Vous pouvez ensuite utiliser cette clé pour chiffrer vos données transmises à Amazon S3 avant qu’elles ne soient copiées sur Amazon Redshift.
+ Un compartiment S3 personnalisé en tant que stockage intermédiaire pour les données migrées vers Amazon Redshift.
+ Mappez un booléen en tant que booléen provenant d’une source PostgreSQL. Par défaut, un type BOOLEAN est migré au format varchar(1). Vous pouvez indiquer à `MapBooleanAsBoolean` d’autoriser votre cible Redshift à migrer le type booléen en tant que booléen, comme illustré dans l’exemple suivant.

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

  Notez que vous devez définir ce paramètre à la fois sur les points de terminaison sources et cibles pour qu’il prenne effet.

### Paramètres de clé KMS pour le chiffrement des données
<a name="CHAP_Target.Redshift.EndpointSettings.KMSkeys"></a>

Les exemples suivants illustrent la configuration d'une clé KMS personnalisée pour chiffrer vos données transmises à S3. Pour commencer, vous pouvez effectuer l'appel `create-endpoint` suivant à l’aide de l' AWS CLI.

```
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"}'
```

Ici, l'objet JSON spécifié par l'option `--redshift-settings` définit deux paramètres. Le premier est le paramètre `EncryptionMode` avec la valeur `SSE_KMS`. L'autre est le paramètre `ServerSideEncryptionKmsKeyId` avec la valeur `arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1`. Cette valeur est un Amazon Resource Name (ARN) pour votre clé KMS personnalisée.

Par défaut, le chiffrement de données S3 a lieu à l’aide du chiffrement côté serveur S3. Pour la cible Amazon Redshift de l’exemple précédent, cela équivaut à spécifier ses paramètres de point de terminaison, comme dans l’exemple suivant.

```
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"}'
```

Pour plus d’informations sur l’utilisation du chiffrement côté serveur S3, consultez [Protection des données à l’aide du chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.

**Note**  
Vous pouvez également utiliser la commande CLI `modify-endpoint` pour modifier la valeur du paramètre `EncryptionMode` d’un point de terminaison existant de `SSE_KMS` à `SSE_S3`. Vous ne pouvez pas modifier la valeur `EncryptionMode` de `SSE_S3` à `SSE_KMS`.

### Paramètres du compartiment Amazon S3
<a name="CHAP_Target.Redshift.EndpointSettings.S3Buckets"></a>

Lorsque vous migrez des données vers un point de terminaison cible Amazon Redshift, utilisez AWS DMS un compartiment Amazon S3 par défaut comme stockage de tâches intermédiaire avant de copier les données migrées vers Amazon Redshift. Par exemple, les exemples indiqués pour la création d’un point de terminaison cible Amazon Redshift avec une clé de chiffrement des données AWS KMS utilisent ce compartiment S3 par défaut (voir [Paramètres de clé KMS pour le chiffrement des données](#CHAP_Target.Redshift.EndpointSettings.KMSkeys)). 

Vous pouvez plutôt spécifier un compartiment S3 personnalisé pour ce stockage intermédiaire en incluant les paramètres suivants dans la valeur de votre `--redshift-settings` option sur la AWS CLI `create-endpoint` commande :
+ `BucketName` : chaîne que vous spécifiez comme le nom de stockage du compartiment S3. Si votre rôle d’accès au service est basé sur la politique `AmazonDMSRedshiftS3Role`, cette valeur doit avoir le préfixe `dms-`, par exemple, `dms-my-bucket-name`.
+ `BucketFolder` : (Facultatif) chaîne que vous pouvez spécifier comme nom du dossier de stockage dans le compartiment S3 spécifié.
+ `ServiceAccessRoleArn` : ARN d’un rôle IAM qui autorise un accès administratif au compartiment S3. Généralement, vous créez ce rôle en fonction de la stratégie `AmazonDMSRedshiftS3Role`. Pour obtenir un exemple, consultez la procédure permettant de créer un rôle IAM avec la stratégie gérée par AWS requise dans [Création et utilisation de AWS KMS clés pour chiffrer les données cibles d'Amazon Redshift](#CHAP_Target.Redshift.KMSKeys).
**Note**  
Si vous spécifiez l'ARN d'un autre rôle IAM à l'aide de l'option `--service-access-role-arn` de la commande `create-endpoint`, cette option de rôle IAM est prioritaire.

L’exemple suivant montre comment utiliser ces paramètres pour spécifier un compartiment Amazon S3 personnalisé dans l’appel `create-endpoint` suivant à l’aide d’ AWS CLI. 

```
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"}'
```

## Paramètres de tâche multithread pour Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply"></a>

Vous pouvez améliorer les performances des tâches de chargement complet et de capture des données de modification (CDC) pour un point de terminaison cible Amazon Redshift en utilisant des paramètres de tâche multithread. Ils vous permettent de spécifier le nombre de threads simultanés et le nombre d’enregistrements à stocker dans un tampon.

### Paramètres de tâche de chargement complet multithread pour Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.FullLoad"></a>

Pour améliorer les performances de chargement complet, vous pouvez utiliser les paramètres de tâche `ParallelLoad*` suivants :
+ `ParallelLoadThreads` : spécifie le nombre de threads simultanés utilisés par DMS pendant un chargement complet pour transférer des enregistrements de données vers un point de terminaison cible Amazon Redshift. La valeur par défaut est zéro (0) et la valeur maximale est 32. Pour de plus amples informations, veuillez consulter [Paramètres de tâche de chargement complet](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

  Définissez l’attribut `enableParallelBatchInMemoryCSVFiles` sur `false` lorsque vous utilisez le paramètre de tâche `ParallelLoadThreads`. L’attribut améliore les performances des tâches de chargement complet multithread de grande taille en permettant à DMS d’écrire sur le disque plutôt que dans la mémoire. La valeur par défaut est `true`.
+ `ParallelLoadBufferSize` : spécifie le nombre maximal de demandes d’enregistrement de données lors de l’utilisation de threads de chargement parallèle avec la cible Redshift. La valeur par défaut est 100 et la valeur maximale est 1 000. Nous vous recommandons d'utiliser cette option lorsque ParallelLoadThreads > 1 (supérieur à un).

**Note**  
Support pour l'utilisation des paramètres des `ParallelLoad*` tâches pendant le chargement complet sur les points de terminaison cibles Amazon Redshift est disponible dans AWS DMS les versions 3.4.5 et supérieures.  
Le paramètre de point de terminaison Redshift `ReplaceInvalidChars` n’est pas pris en charge pour être utilisé lors de la capture des données de modification (CDC) ou lors d’une tâche de migration FULL LOAD compatible avec le chargement parallèle. Il est pris en charge pour la migration FULL LOAD lorsque le chargement parallèle n’est pas activé. Pour plus d'informations, voir le [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)Guide de *référence de l'AWS Database Migration Service API*

### Paramètres de tâche de CDC multithread pour Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.CDC"></a>

Pour améliorer les performances de la CDC, vous pouvez utiliser les paramètres de tâche `ParallelApply*` suivants :
+ `ParallelApplyThreads`— Spécifie le nombre de threads simultanés AWS DMS utilisés lors d'un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible Amazon Redshift. La valeur par défaut est zéro (0) et la valeur maximale est 32. La valeur minimale recommandée est le nombre de tranches présentes dans votre cluster.
+ `ParallelApplyBufferSize` : spécifie le nombre maximal de demandes d’enregistrement de données lors de l’utilisation de threads d’application parallèle avec la cible Redshift. La valeur par défaut est 100 et la valeur maximale est 1 000. Nous recommandons d'utiliser cette option lorsque ParallelApplyThreads > 1 (supérieur à un). 

  Pour tirer le meilleur parti de Redshift en tant que cible, nous recommandons que la valeur de `ParallelApplyBufferSize` soit au moins deux fois supérieure à la valeur de `ParallelApplyThreads`.

**Note**  
Support pour l'utilisation des paramètres des `ParallelApply*` tâches pendant les points de terminaison cibles CDC vers Amazon Redshift est disponible dans AWS DMS les versions 3.4.3 et supérieures.

Le niveau de parallélisme appliqué dépend de la corrélation entre la *taille de lot* totale et la *taille de fichier maximale* utilisées pour transférer les données. Lorsque vous utilisez des paramètres de tâche de CDC multithread avec une cible Redshift, vous tirez le meilleur parti lorsque la taille de lot est supérieure à la taille de fichier maximale. Par exemple, vous pouvez utiliser la combinaison suivante de paramètres de point de terminaison et de tâche pour optimiser les performances. 

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

// Task settings

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

En utilisant les paramètres de l’exemple précédent, un client ayant une charge de travail transactionnelle importante tire le meilleur parti de sa mémoire tampon par lots, qui contient 8 000 enregistrements, est remplie en 1 800 secondes et utilise 32 threads parallèles avec une taille de fichier maximale de 250 Mo.

Pour de plus amples informations, veuillez consulter [Paramètres de réglage du traitement des modifications](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md).

**Note**  
Les requêtes DMS exécutées pendant la réplication continue vers un cluster Redshift peuvent partager la même file d’attente WLM (gestion de la charge de travail) avec les autres requêtes d’application en cours d’exécution. Pensez donc à configurer correctement les propriétés WLM afin d’influencer les performances lors de la réplication continue vers une cible Redshift. Par exemple, si d’autres requêtes ETL parallèles sont en cours d’exécution, DMS s’exécute plus lentement et les gains de performances sont perdus.

## Types de données cibles pour Amazon Redshift
<a name="CHAP_Target.Redshift.DataTypes"></a>

Le point de terminaison Amazon Redshift pour AWS DMS prend en charge la plupart des types de données Amazon Redshift. Le tableau suivant indique les types de données cibles Amazon Redshift pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


| AWS DMS types de données | Types de données Amazon Redshift | 
| --- | --- | 
| BOOLEAN | BOOL | 
| BYTES | VARCHAR (Length) | 
| DATE | DATE | 
| TIME | VARCHAR(20) | 
| DATETIME |  Si l’échelle est => 0 et =< 6, selon le type de colonne cible Redshift, alors : TIMESTAMP (s) TIMESTAMPTZ (s) : si l’horodatage source contient un décalage de zone (comme dans SQL Server ou Oracle), il est converti en UTC lors de l’insertion/de la mise à jour. S’il ne contient pas de décalage, l’heure est déjà prise en compte en UTC. Si l'échelle est => 7 et =< 9, alors :  VARCHAR (37) | 
| INT1 | INT2 | 
| INT2 | INT2 | 
| INT4 | INT4 | 
| INT8 | INT8 | 
| NUMERIC | Si l'échelle est => 0 et =< 37, alors :  NUMERIC (p,s)  Si l'échelle est => 38 et =< 127, alors :  VARCHAR (Length) | 
| REAL4 | FLOAT4 | 
| REAL8 | FLOAT8 | 
| CHAÎNE | Si la longueur est comprise entre 1 et 65 535, utilisez VARCHAR (longueur en octets)  Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez VARCHAR (65535) | 
| UINT1 | INT2 | 
| UINT2 | INT2 | 
| UINT4 | INT4 | 
| UINT8 | NUMERIC (20,0) | 
| WSTRING |  Si la longueur est comprise entre 1 et 65 535, utilisez NVARCHAR (longueur en octets)  Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez NVARCHAR (65535) | 
| BLOB | VARCHAR (taille de LOB maximale \$12)  La taille de LOB maximale ne peut pas dépasser 31 Ko. Amazon Redshift ne prend pas en charge une VARCHARs taille supérieure à 64 Ko. | 
| NCLOB | NVARCHAR (taille de LOB maximale)  La taille de LOB maximale ne peut pas dépasser 63 Ko. Amazon Redshift ne prend pas en charge une VARCHARs taille supérieure à 64 Ko. | 
| CLOB | VARCHAR (taille de LOB maximale)  La taille de LOB maximale ne peut pas dépasser 63 Ko. Amazon Redshift ne prend pas en charge une VARCHARs taille supérieure à 64 Ko. | 

## Utilisation AWS DMS avec Amazon Redshift Serverless comme cible
<a name="CHAP_Target.Redshift.RSServerless"></a>

AWS DMS prend en charge l'utilisation d'Amazon Redshift Serverless comme point de terminaison cible. Pour en savoir plus sur l’utilisation d’Amazon Redshift sans serveur, consultez [Amazon Redshift sans serveur](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-serverless.html) dans le [Guide de gestion Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html).

Cette rubrique décrit comment utiliser un point de terminaison Amazon Redshift Serverless avec. AWS DMS

**Note**  
Lorsque vous créez un point de terminaison Amazon Redshift sans serveur, pour le **DatabaseName**champ de configuration de votre [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)point de terminaison, utilisez soit le nom de l'entrepôt de données Amazon Redshift, soit le nom du point de terminaison du groupe de travail. Pour le **ServerName**champ, utilisez la valeur du point de terminaison affichée sur la page du **groupe de travail** pour le cluster sans serveur (par exemple,`default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com`). Pour en savoir plus sur la création d’un point de terminaison, consultez [Création de points de terminaison source et cible](CHAP_Endpoints.Creating.md). Pour en savoir plus sur le point de terminaison de groupe de travail, consultez [Connexion à Amazon Redshift sans serveur](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-connecting.html).

### Politique d’approbation avec Amazon Redshift sans serveur en tant que cible
<a name="CHAP_Target.Redshift.RSServerless.policy"></a>

Lorsque vous utilisez Amazon Redshift sans serveur en tant que point de terminaison cible, vous devez ajouter la section surlignée suivante à votre politique d’approbation. Cette politique d’approbation est liée au rôle `dms-access-for-endpoint`.

Pour plus d'informations sur l'utilisation d'une politique de confiance avec AWS DMS, consultez[Création des rôles IAM à utiliser avec AWS DMS](security-iam.md#CHAP_Security.APIRole).

### Limitations lors de l’utilisation d’Amazon Redshift sans serveur en tant que cible
<a name="CHAP_Target.Redshift.RSServerless.Limitations"></a>

L’utilisation de Redshift sans serveur en tant que cible présente les limitations suivantes :
+ AWS DMS prend uniquement en charge Amazon Redshift Serverless en tant que point de terminaison dans les régions qui prennent en charge Amazon Redshift Serverless. Pour en savoir plus sur les régions qui prennent en charge Amazon Redshift sans serveur, consultez **API Redshift sans serveur** dans la rubrique [Points de terminaison et quotas Amazon Redshift](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html) de la [Référence générale AWS](https://docs.aws.amazon.com/general/latest/gr/Welcome.html).
+ Lorsque vous utilisez le routage VPC amélioré, assurez-vous de créer un point de terminaison Amazon S3 dans le même VPC que votre cluster Redshift sans serveur ou Redshift provisionné. Pour de plus amples informations, veuillez consulter [Utilisation d'un routage VPC amélioré avec Amazon Redshift comme cible pour AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC).
+ AWS DMS ne prend pas en charge le débit amélioré pour Amazon Redshift Serverless en tant que cible. Pour de plus amples informations, veuillez consulter [Débit amélioré pour les migrations à chargement complet d'Oracle vers Amazon Redshift et Amazon S3](CHAP_Serverless.Components.md#CHAP_Serverless.Throughput).
+ AWS DMS ne prend pas en charge les connexions à Amazon Redshift Redshift Serverless lorsque le mode SSL est défini sur. `verify-full` Pour les connexions nécessitant une vérification SSL vers des cibles Amazon Redshift Serverless, utilisez d'autres modes SSL tels que ou. `require` `verify-ca`

# Utilisation d'une base de données SAP ASE comme cible pour AWS Database Migration Service
<a name="CHAP_Target.SAP"></a>

Vous pouvez migrer des données vers des bases de données SAP Adaptive Server Enterprise (ASE), anciennement connu sous le nom de Sybase AWS DMS, en utilisant l'une des sources de base de données prises en charge.

Pour plus d'informations sur les versions de SAP ASE prises AWS DMS en charge en tant que cible, consultez[Objectifs pour AWS DMS](CHAP_Introduction.Targets.md).

## Conditions préalables à l'utilisation d'une base de données SAP ASE comme cible pour AWS Database Migration Service
<a name="CHAP_Target.SAP.Prerequisites"></a>

Avant de commencer à travailler avec une base de données SAP ASE comme cible AWS DMS, assurez-vous de remplir les conditions préalables suivantes :
+ Fournissez un accès au compte SAP ASE à l' AWS DMS utilisateur. Cet utilisateur doit disposer de read/write privilèges dans la base de données SAP ASE.
+ Dans certains cas, vous pouvez répliquer vers SAP ASE version 15.7 installée sur une instance Amazon EC2 de Microsoft Windows configurée avec des caractères non latins (par exemple, chinois). Dans ce cas, AWS DMS SAP ASE 15.7 doit SP121 être installé sur la machine SAP ASE cible.

## Limitations liées à l'utilisation d'une base de données SAP ASE comme cible pour AWS DMS
<a name="CHAP_Target.SAP.Limitations"></a>

Les limitations suivantes s’appliquent lors de l’utilisation d’une base de données SAP ASE en tant que cible pour AWS DMS :
+ AWS DMS ne prend pas en charge les tables qui incluent des champs contenant les types de données suivants. Les colonnes répliquées avec ces types de données s'affichent en tant que valeurs NULL. 
  + Type défini par l'utilisateur (UDT)

## Paramètres du point de terminaison lors de l'utilisation de SAP ASE comme cible pour AWS DMS
<a name="CHAP_Target.SAP.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible SAP ASE comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--sybase-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec SAP ASE en tant que cible sont indiqués dans le tableau suivant.

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

## Types de données cibles pour SAP ASE
<a name="CHAP_Target.SAP.DataTypes"></a>

Le tableau suivant indique les types de données cibles de base de données SAP ASE pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS types de données  |  Type de données SAP ASE  | 
| --- | --- | 
| BOOLEAN | BIT | 
| BYTES | VARBINARY (Length) | 
| DATE | DATE | 
| TIME | TIME | 
| TIMESTAMP |  Si l'échelle est => 0 et =< 6, alors : BIGDATETIME  Si l'échelle est => 7 et =< 9, alors : VARCHAR (37)  | 
| INT1 | TINYINT | 
| INT2 | SMALLINT | 
| INT4 | INTEGER | 
| INT8 | BIGINT | 
| NUMERIC | NUMERIC (p,s) | 
| REAL4 | REAL | 
| REAL8 | DOUBLE PRECISION | 
| CHAÎNE | VARCHAR (Length) | 
| UINT1 | TINYINT | 
| UINT2 | UNSIGNED SMALLINT | 
| UINT4 | UNSIGNED INTEGER | 
| UINT8 | UNSIGNED BIGINT | 
| WSTRING | VARCHAR (Length) | 
| BLOB | IMAGE | 
| CLOB | UNITEXT | 
| NCLOB | TEXT | 

# Utiliser Amazon S3 comme cible pour AWS Database Migration Service
<a name="CHAP_Target.S3"></a>

Vous pouvez migrer des données vers Amazon S3 à AWS DMS partir de l'une des sources de base de données prises en charge. Lorsque vous utilisez Amazon S3 comme cible dans une AWS DMS tâche, les données de chargement complet et de capture des données de modification (CDC) sont écrites au format de valeurs séparées par des virgules (.csv) par défaut. Pour plus d'options de stockage compact et de requêtes plus rapides, vous avez également la possibilité d'écrire les données au format Apache Parquet (.parquet). 

AWS DMS nomme les fichiers créés lors d'un chargement complet à l'aide d'un compteur hexadécimal incrémentiel, par exemple LOAD00001 .csv,... LOAD00002 LOAD00009, LOAD0000 A, etc. pour les fichiers .csv. AWS DMS nomme les fichiers CDC à l'aide d'horodatages, par exemple 20141029-1134010000.csv. Pour chaque table source contenant des enregistrements, AWS DMS crée un dossier sous le dossier cible spécifié (si la table source n'est pas vide). AWS DMS écrit tous les fichiers CDC et à chargement complet dans le compartiment Amazon S3 spécifié. Vous pouvez contrôler la taille des fichiers créés à l'aide du paramètre du [MaxFileSize](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html#DMS-Type-S3Settings-MaxFileSize)point de terminaison. AWS DMS 

Le paramètre `bucketFolder` contient l'emplacement où les fichiers .csv ou .parquet sont stockés avant d'être téléchargés vers le compartiment S3. Avec les fichiers .csv, les données de la table sont stockées dans le compartiment S3 au format suivant (l’exemple s’applique à des fichiers de chargement complet).

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

Vous pouvez spécifier le délimiteur de colonne, le délimiteur de ligne et d'autres paramètres à l'aide des attributs de connexion supplémentaires. Pour obtenir plus d'informations sur les attributs de connexion supplémentaires, consultez [Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.Configuring) à la fin de cette section.

Pour éviter toute usurpation d'identité, AWS DMS valide la propriété du bucket avant d'effectuer des opérations. Par défaut, lorsque le paramètre du point de terminaison `ExpectedBucketOwner` Amazon S3 n'est pas spécifié, il AWS DMS utilise l'ID de AWS compte qui détient le rôle de AWS DMS service en tant que propriétaire attendu du compartiment.

Pour migrer des données vers un compartiment S3 appartenant à un autre AWS compte, vous devez spécifier explicitement le propriétaire réel du compartiment dans le paramètre du point de terminaison `ExpectedBucketOwner` Amazon S3, comme indiqué ci-dessous. Dans le cas contraire, la tâche de réplication entre comptes échouera.

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

Lorsque vous répliquez les modifications de données AWS DMS à l'aide d'une tâche CDC, la première colonne du fichier de sortie .csv ou .parquet indique comment les données de ligne ont été modifiées, comme indiqué dans le fichier .csv suivant.

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

Pour cet exemple, supposons qu'il existe une `EMPLOYEE` table dans la base de données source. AWS DMS écrit des données dans le fichier .csv ou .parquet, en réponse aux événements suivants :
+ Un nouvel employé (Bob Smith, ID employé 101) est engagé le 4 juin 2014 au bureau de New York. Dans le fichier .csv ou .parquet, la valeur `I` dans la première colonne indique qu'une nouvelle ligne a fait l'objet d'une opération `INSERT` dans la table EMPLOYEE de la base de données source.
+ Le 8 octobre 2015, Bob est transféré au bureau de Los Angeles. Dans le fichier .csv ou .parquet, la valeur `U` indique que la ligne correspondante de la table EMPLOYEE a fait l'objet d'une opération `UPDATE` pour refléter le nouvel emplacement du bureau de Bob. Le reste reflète la ligne de la table EMPLOYEE telle qu'elle apparaît après l'opération `UPDATE`. 
+ Le 13 mars 2017, Bob Dallas est à nouveau transféré au bureau de Dallas. Dans le fichier .csv ou .parquet, la valeur `U` indique que cette ligne a fait de nouveau l'objet d'une opération `UPDATE`. Le reste reflète la ligne de la table EMPLOYEE telle qu'elle apparaît après l'opération `UPDATE`.
+ Après avoir travaillé quelque temps à Dallas, Bob quitte l'entreprise. Dans le fichier .csv ou .parquet, la valeur `D` indique que la ligne a fait l'objet d'une opération `DELETE` dans la table source. Le reste reflète la ligne de la table EMPLOYEE telle qu'elle apparaît avant la suppression.

Notez que par défaut pour CDC, AWS DMS stocke les modifications de ligne pour chaque table de base de données sans tenir compte de l'ordre des transactions. Si vous souhaitez stocker les modifications de ligne dans les fichiers de CDC en fonction de l’ordre des transactions, vous devez utiliser les paramètres de point de terminaison S3 pour le spécifier ainsi que le chemin du dossier dans lequel vous souhaitez que les fichiers de transaction CDC soient stockés sur la cible S3. Pour de plus amples informations, veuillez consulter [Capture des données de modification (CDC) avec l’ordre des transactions sur la cible S3](#CHAP_Target.S3.EndpointSettings.CdcPath).

Pour contrôler la fréquence des écritures sur une cible Amazon S3 lors d’une tâche de réplication de données, vous pouvez configurer les attributs de connexion supplémentaires `cdcMaxBatchInterval` et `cdcMinFileSize`. Cela peut améliorer les performances lors de l’analyse des données sans aucune surcharge supplémentaire. Pour de plus amples informations, consultez [Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.Configuring). 

**Topics**
+ [Prérequis pour l’utilisation d’Amazon S3 en tant que cible](#CHAP_Target.S3.Prerequisites)
+ [Limitations de l’utilisation d’Amazon S3 en tant que cible](#CHAP_Target.S3.Limitations)
+ [Sécurité](#CHAP_Target.S3.Security)
+ [Utilisation d’Apache Parquet pour stocker des objets Amazon S3](#CHAP_Target.S3.Parquet)
+ [Balisage d’objets Amazon S3](#CHAP_Target.S3.Tagging)
+ [Création de AWS KMS clés pour chiffrer les objets cibles d'Amazon S3](#CHAP_Target.S3.KMSKeys)
+ [Utilisation du partitionnement de dossiers basé sur la date](#CHAP_Target.S3.DatePartitioning)
+ [Chargement parallèle de sources partitionnées lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.ParallelLoad)
+ [Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.Configuring)
+ [Utilisation AWS Glue Data Catalog avec une cible Amazon S3 pour AWS DMS](#CHAP_Target.S3.GlueCatalog)
+ [Utilisation du chiffrement des données, des fichiers Parquet et de la CDC sur votre cible Amazon S3](#CHAP_Target.S3.EndpointSettings)
+ [Indication des opérations de base de données source dans des données S3 migrées](#CHAP_Target.S3.Configuring.InsertOps)
+ [Types de données cibles pour S3 Parquet](#CHAP_Target.S3.DataTypes)

## Prérequis pour l’utilisation d’Amazon S3 en tant que cible
<a name="CHAP_Target.S3.Prerequisites"></a>

Avant d’utiliser Amazon S3 en tant que cible, vérifiez que les conditions suivantes sont réunies : 
+ Le compartiment S3 que vous utilisez comme cible se trouve dans la même AWS région que l'instance de réplication DMS que vous utilisez pour migrer vos données.
+ Le AWS compte que vous utilisez pour la migration possède un rôle IAM avec accès en écriture et en suppression au compartiment S3 que vous utilisez comme cible.
+ Ce rôle dispose d'un accès de balisage afin que vous pouvez baliser tous les objets S3 écrits sur le compartiment cible.
+ DMS (dms.amazonaws.com) a été ajouté au rôle IAM en tant qu’*entité de confiance*. 
+ Pour les AWS DMS versions 3.4.7 et supérieures, DMS doit accéder au compartiment source via un point de terminaison VPC ou une route publique. Pour plus d'informations sur les points de terminaison VPC, consultez. [Configuration des points de terminaison VPC pour AWS DMS](CHAP_VPC_Endpoints.md)

Pour définir cet accès de compte, assurez-vous que le rôle affecté au compte utilisateur utilisé pour créer la tâche de migration bénéficie de l'ensemble d'autorisations suivant.

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

------

Pour connaître les conditions préalables à l’utilisation de la validation avec S3 en tant que cible, consultez [Conditions préalables à la validation des cibles S3](CHAP_Validating_S3.md#CHAP_Validating_S3_prerequisites).

## Limitations de l’utilisation d’Amazon S3 en tant que cible
<a name="CHAP_Target.S3.Limitations"></a>

Les limitations suivantes s’appliquent lorsque vous utilisez Amazon S3 en tant que cible :
+ N’activez pas la gestion des versions pour S3. Si vous avez besoin de la gestion des versions S3, utilisez des politiques de cycle de vie pour supprimer les anciennes versions de manière active. Dans le cas contraire, la connexion de test du point de terminaison risque d’échouer en raison du délai d’attente d’appel `list-object` S3. Pour créer une politique de cycle de vie pour un compartiment S3, consultez [Gestion du cycle de vie de votre stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Pour supprimer une version d’un objet S3, consultez [Suppression des versions d’objet d’un compartiment activé pour la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ Un compartiment S3 compatible VPC (VPC de passerelle) est pris en charge dans les versions 3.4.7 et ultérieures.
+ Les commandes de langage de définition de données (DDL) suivantes sont prises en charge pour la capture des données de modification (CDC) : tronquer une table, supprimer une table, créer une table, renommer une table, ajouter une colonne, supprimer une colonne, renommer une colonne et modifier le type de données de colonne. Notez que lorsqu'une colonne est ajoutée, supprimée ou renommée dans la base de données source, aucune instruction ALTER n'est enregistrée dans le compartiment S3 cible et AWS DMS ne modifie pas les enregistrements créés précédemment pour qu'ils correspondent à la nouvelle structure. Après la modification, AWS DMS crée de nouveaux enregistrements à l'aide de la nouvelle structure de table.
**Note**  
Une opération DDL de troncation supprime tous les fichiers et les dossiers de table correspondants d’un compartiment S3. Vous pouvez utiliser les paramètres de tâche pour désactiver ce comportement et configurer la façon dont DMS gère le comportement DDL lors de la capture des données de modification (CDC). Pour de plus amples informations, veuillez consulter [Paramètres de tâche pour la gestion du DDL de traitement des modifications](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).
+ Le Mode LOB complet n'est pas pris en charge.
+ Les modifications apportées à la structure de la table source lors du chargement complet ne sont pas prises en charge. Les modifications apportées aux données sont prises en charge pendant le chargement complet.
+ Lorsque plusieurs tâches répliquent des données d'une même table source vers le même compartiment de point de terminaison S3 cible, ces tâches écrivent dans le même fichier. Nous vous recommandons de spécifier des points de terminaison (compartiments) cibles différents si votre source de données est de la même table.
+ `BatchApply` n’est pas pris en charge pour un point de terminaison S3. L’utilisation de l’application par lots (par exemple, le paramètre de tâche de métadonnées cible `BatchApplyEnabled`) pour une cible S3 peut entraîner une perte de données.
+ Vous ne pouvez pas utiliser `DatePartitionEnabled` ou `addColumnName` ensemble avec `PreserveTransactions` ou `CdcPath`.
+ AWS DMS ne permet pas de renommer plusieurs tables sources dans le même dossier cible à l'aide de règles de transformation.
+ En cas d’écriture intensive dans la table source pendant la phase de chargement complet, DMS peut écrire des enregistrements dupliqués dans le compartiment S3 ou des modifications mises en cache.
+ Si vous configurez la tâche avec `TargetTablePrepMode` défini sur `DO_NOTHING`, DMS peut écrire des enregistrements dupliqués dans le compartiment S3 si la tâche s’arrête et reprend brusquement pendant la phase de chargement complet.
+ Si vous configurez le point de terminaison cible avec le paramètre `PreserveTransactions` défini sur `true`, le rechargement d’une table n’efface pas les fichiers CDC générés précédemment. Pour de plus amples informations, veuillez consulter [Capture des données de modification (CDC) avec l’ordre des transactions sur la cible S3](#CHAP_Target.S3.EndpointSettings.CdcPath).

Pour connaître les limitations de l’utilisation de la validation avec S3 en tant que cible, consultez [Limitations liées à l’utilisation de la validation des cibles S3](CHAP_Validating_S3.md#CHAP_Validating_S3_limitations).

## Sécurité
<a name="CHAP_Target.S3.Security"></a>

Pour utiliser Amazon S3 en tant que cible, le compte utilisé pour la migration doit bénéficier d’un accès pour l’écriture et la suppression au compartiment Amazon S3 qui est utilisé comme cible. Spécifiez l’Amazon Resource Name (ARN) du rôle IAM qui bénéficie des autorisations requises pour accéder à Amazon S3. 

AWS DMS prend en charge un ensemble d'autorisations prédéfinies pour Amazon S3, appelées listes de contrôle d'accès prédéfinies (ACLs). Chaque liste ACL prédéfinie possède un ensemble de bénéficiaires et d’autorisations que vous pouvez utiliser pour définir les autorisations du compartiment Amazon S3. Vous pouvez spécifier une liste ACL prédéfinie à l'aide de l'attribut `cannedAclForObjects` de la chaîne de connexion de votre point de terminaison cible S3. Pour plus d'informations sur l'utilisation de l'attribut de connexion supplémentaire `cannedAclForObjects`, consultez [Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.Configuring). Pour plus d'informations sur Amazon S3 scanné ACLs, consultez la section [Caned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl).

Le rôle IAM que vous utilisez pour la migration doit être en mesure d'effectuer l'opération d'API `s3:PutObjectAcl`.

## Utilisation d’Apache Parquet pour stocker des objets Amazon S3
<a name="CHAP_Target.S3.Parquet"></a>

Le format .csv (valeurs séparées par des virgules) est le format de stockage par défaut pour les objets cibles Amazon S3. Pour un stockage plus compact et des requêtes plus rapides, vous pouvez utiliser le format de stockage Apache Parquet (.parquet).

Apache Parquet est un format de stockage de fichiers open source, initialement conçu pour Hadoop. Pour plus d'informations sur Apache Parquet, consultez [https://parquet.apache.org/](https://parquet.apache.org/).

Pour définir .parquet comme format de stockage pour vos objets cibles S3 migrés, vous pouvez utiliser les mécanismes suivants :
+ Paramètres de point de terminaison que vous fournissez sous forme de paramètres d'objet JSON lorsque vous créez le point de terminaison à l'aide de l' AWS CLI ou de l'API pour AWS DMS. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement des données, des fichiers Parquet et de la CDC sur votre cible Amazon S3](#CHAP_Target.S3.EndpointSettings).
+ Attributs de connexion supplémentaires que vous fournissez sous forme de liste séparée par des points-virgules lorsque vous créez le point de terminaison. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.Configuring).

## Balisage d’objets Amazon S3
<a name="CHAP_Target.S3.Tagging"></a>

Vous pouvez baliser des objets Amazon S3 créés par une instance de réplication en spécifiant les objets JSON appropriés dans le cadre des règles de mappage des tâches aux tables. Pour plus d’informations sur les exigences et les options du balisage d’objets S3, y compris les noms de balise valides, consultez [Balisage d’objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*. Pour plus d'informations sur le mappage de table avec JSON, consultez [Spécification des règles de sélection de table et de transformation à l’aide de JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Vous pouvez baliser des objets S3 créés pour des tables et des schémas spécifiés à l'aide d'un ou plusieurs objets JSON du type de règle `selection`. Vous pouvez faire suivre cet objet (ou ces objets) `selection` d'un ou plusieurs objets JSON du type de règle `post-processing` avec l'action `add-tag`. Ces règles de post-traitement identifient les objets S3 que vous souhaitez baliser et spécifient les noms et les valeurs des balises que vous souhaitez ajouter à ces objets S3.

Vous trouverez les paramètres à spécifier dans les objets JSON du type de règle `post-processing` dans le tableau suivant.

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

Lorsque vous spécifiez plusieurs types de règle `post-processing` pour baliser une sélection d'objets S3, chaque objet S3 est balisé à l'aide d'un seul objet `tag-set` à partir d'une règle de post-traitement. L'ensemble de balises utilisé pour baliser un objet S3 donné est celui issu de la règle de post-traitement dont le localisateur d'objet associé correspond le mieux à l'objet S3. 

Par exemple, supposons que deux règles de post-traitement identifient le même objet S3. Supposons également que le localisateur d'objet d'une règle utilise des caractères génériques et que le localisateur d'objet de l'autre règle utilise une correspondance exacte pour identifier l'objet S3 (sans caractères génériques). Dans ce cas, l'ensemble de balises associé à la règle de post-traitement avec la correspondance exacte est utilisé pour baliser l'objet S3. Si plusieurs règles de post-traitement correspondent de manière identique à un objet S3, l'ensemble de balises associé à la première règle de post-traitement est utilisé pour baliser l'objet.

**Example Ajout de balises statiques à un objet S3 créé pour une table et un schéma unique**  
Les règles de sélection et de post-traitement suivantes ajoutent trois balises (`tag_1`, `tag_2` et `tag_3` avec leurs valeurs statiques correspondantes `value_1`, `value_2` et `value_3`) à un objet S3 créé. Cet objet S3 correspond à une table unique dans la source nommée `STOCK` avec un schéma nommé `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 Ajout de balises statiques et dynamiques à des objets S3 créés pour plusieurs tables et schémas**  
L'exemple suivant présente une règle de sélection et deux règles de post-traitement, où l'entrée de la source inclut toutes les tables et tous leurs schémas.  

```
{
    "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"
              }           ]
        }
    ]
}
```
La première règle de post-traitement ajoute deux balises (`dw-schema-name` et `dw-schema-table`) avec les valeurs dynamiques correspondantes (`${schema-name}` et `my_prefix_${table-name}`) pour presque tous les objets S3 créés dans la cible. L'exception est l'objet S3 identifié et balisé avec la seconde règle de post-traitement. Par conséquent, chaque objet S3 cible identifié par le localisateur d'objet utilisant des caractères génériques est créé avec des balises qui identifient le schéma et la table auxquels il correspond dans la source.  
La deuxième règle de post-traitement ajoute `tag_1` et `tag_2` avec les valeurs statiques correspondantes `value_1` et `value_2` à un objet S3 qui est identifié par un localisateur d'objet utilisant une correspondance exacte. Cet objet S3 créé correspond donc à la table unique dans la source nommée `ITEM` avec un schéma nommé `aat`. En raison de la correspondance exacte, ces balises remplacent toutes les balises sur cet objet ajouté à partir de la première règle de post-traitement, qui correspond à des objets S3 par caractère générique uniquement.

**Example Ajout de noms et de valeurs de balise dynamique à des objets S3**  
L'exemple suivant comporte deux règles de sélection et une règle de post-traitement. Ici, l'entrée à partir de la source comprend seulement la table `ITEM` dans le schéma `retail` ou `wholesale`.  

```
{
    "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"
              }
            ]
    ]
}
```
L'ensemble de balises pour la règle de post-traitement ajoute deux balises (`dw-schema-name` et `dw-schema-table`) à tous les objets S3 créés pour la table `ITEM` dans la cible. La première balise a la valeur dynamique `"${schema-name}"` et la deuxième balise a une valeur statique, `"my_prefix_ITEM"`. Par conséquent, chaque objet S3 cible est créé avec des balises qui identifient le schéma et la table auxquels il correspond dans la source.   
En outre, l'ensemble de balises ajoute deux balises supplémentaires avec des noms dynamiques (`${schema-name}_ITEM_tag_1` et `"${schema-name}_ITEM_tag_2"`). Ces derniers ont les valeurs statiques correspondantes `value_1` et `value_2`. Ainsi, chacune de ces balises est nommée pour le schéma actuel, `retail` ou `wholesale`. Vous ne pouvez pas créer un nom de balise dynamique dupliqué dans cet objet, car chaque objet est créé pour un nom de schéma unique. Le nom de schéma est utilisé pour créer un autre nom de balise unique.

## Création de AWS KMS clés pour chiffrer les objets cibles d'Amazon S3
<a name="CHAP_Target.S3.KMSKeys"></a>

Vous pouvez créer et utiliser des AWS KMS clés personnalisées pour chiffrer vos objets cibles Amazon S3. Après avoir créé une clé KMS, vous pouvez l'utiliser pour chiffrer des objets à l'aide de l'une des approches suivantes lorsque vous créez le point de terminaison cible S3 :
+ Utilisez les options suivantes pour les objets cibles S3 (avec le format de stockage de fichiers .csv par défaut) lorsque vous exécutez la commande `create-endpoint` à l'aide de l' AWS CLI.

  ```
  --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"}'
  ```

  Ici, votre- `your-KMS-key-ARN` est le nom de ressource Amazon (ARN) de votre clé KMS et il est nécessaire que votre rôle IAM dispose d'autorisations d'accès, voir[Utilisation du chiffrement des données, des fichiers Parquet et de la CDC sur votre cible Amazon S3](#CHAP_Target.S3.EndpointSettings).
+ Définissez l'attribut de connexion supplémentaire `encryptionMode` à la valeur `SSE_KMS` et l'attribut de connexion supplémentaire `serverSideEncryptionKmsKeyId` à l'ARN de votre clé KMS. Pour de plus amples informations, veuillez consulter [Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.Configuring).

Pour chiffrer des objets cibles Amazon S3 à l’aide d’une clé KMS, vous avez besoin d’un rôle IAM qui dispose des autorisations d’accès au compartiment Amazon S3. Ce rôle IAM est ensuite accessible dans une stratégie (stratégie de clé) attachée à la clé de chiffrement que vous créez. Pour ce faire, créez les éléments suivants dans votre console IAM :
+ Une stratégie avec les autorisations d’accès au compartiment Amazon S3.
+ Un rôle IAM avec cette stratégie.
+ Une clé de chiffrement de clé KMS avec une stratégie de clé qui fait référence à ce rôle.

Les procédures suivantes décrivent la marche à suivre.

**Pour créer une politique IAM avec les autorisations d’accès au compartiment Amazon S3**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Stratégies**. La page **Stratégies** s'ouvre.

1. Choisissez **Create Policy** (Créer une politique). La page **Créer une politique** s'ouvre.

1. Choisissez **Service**, puis **S3**. Une liste d'autorisations d'action s'affiche.

1. Choisissez **Développer tout** pour développer la liste et choisissez au moins les autorisations suivantes :
   + **ListBucket**
   + **PutObject**
   + **DeleteObject**

   Choisissez toute autre autorisation dont vous avez besoin, puis sélectionnez **Réduire tout** pour réduire la liste.

1. Choisissez **Ressources** pour spécifier les ressources auxquelles vous souhaitez accéder. Choisissez au moins **Toutes les ressources** pour fournir un accès général aux ressources Amazon S3.

1. Ajoutez toute autre condition ou autorisation dont vous avez besoin, puis choisissez **Examiner une stratégie**. Vérifiez vos résultats sur la page **Examiner une stratégie**.

1. Si les paramètres vous conviennent, entrez un nom pour la stratégie (par exemple, `DMS-S3-endpoint-access`) et une description, puis choisissez **Créer une stratégie**. La page **Stratégies** s'ouvre et affiche un message indiquant que votre stratégie a été créée.

1. Recherchez et choisissez le nom de la stratégie dans la liste **Stratégies**. La page **Récapitulatif** affiche la stratégie au format JSON comme ci-après.

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

****  

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

------

Vous avez créé une nouvelle stratégie pour accéder à des ressources Amazon S3 en vue du chiffrement avec un nom spécifié, par exemple `DMS-S3-endpoint-access`.

**Pour créer un rôle IAM avec cette stratégie**

1. Dans votre console IAM, choisissez **Rôles** dans le volet de navigation. La page détaillée **Rôles** s'ouvre.

1. Choisissez **Créer un rôle**. La page **Créer un rôle** s'ouvre.

1. Lorsque le AWS service est sélectionné comme entité de confiance, choisissez **DMS** comme service pour utiliser le rôle IAM.

1. Choisissez **Suivant : Autorisations**. La vue **Attacher des stratégies d'autorisation** s'affiche dans la page **Créer un rôle**.

1. Recherchez et sélectionnez la stratégie IAM pour le rôle IAM que vous avez créé dans la procédure précédente (`DMS-S3-endpoint-access`).

1. Choisissez **Suivant : Balises**. La vue **Ajouter des balises** s'affiche dans la page **Créer un rôle**. Ici, vous pouvez ajouter toutes les balises souhaitées.

1. Choisissez **Suivant : Vérification**. La vue **Vérifier** s'affiche dans la page **Créer un rôle**. Ici, vous pouvez vérifier les résultats.

1. Si les paramètres vous conviennent, entrez un nom pour le rôle (par exemple, `DMS-S3-endpoint-access-role`) et une description, puis choisissez **Créer un rôle**. La page détaillée **Rôles** s'ouvre et affiche un message indiquant que votre rôle a été créé.

Vous avez désormais créé le nouveau rôle pour accéder aux ressources Amazon S3 en vue du chiffrement avec un nom spécifié, par exemple `DMS-S3-endpoint-access-role`.

**Pour créer une clé de chiffrement de clé KMS avec une stratégie de clé qui fait référence à votre rôle IAM**
**Note**  
Pour plus d'informations sur le AWS DMS fonctionnement des clés de AWS KMS chiffrement, consultez[Configuration d'une clé de chiffrement et spécification AWS KMS des autorisations](CHAP_Security.md#CHAP_Security.EncryptionKey).

1. Connectez-vous à la console AWS Key Management Service (AWS KMS) AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/kms.](https://console.aws.amazon.com/kms)

1. Pour modifier le Région AWS, utilisez le sélecteur de région dans le coin supérieur droit de la page.

1. Dans le panneau de navigation, choisissez **Clés gérées par le client**.

1. Choisissez **Create key**. La page **Configurer la clé** s'ouvre.

1. Pour **Type de clé**, choisissez **Symétrique**.
**Note**  
Lorsque vous créez cette clé, vous ne pouvez créer qu'une clé symétrique, car tous les AWS services, tels qu'Amazon S3, ne fonctionnent qu'avec des clés de chiffrement symétriques.

1. Choisissez **Options avancées**. Pour **Origine des éléments de clé**, assurez-vous que **KMS** est choisi, puis choisissez **Suivant**. La page **Ajouter des étiquettes** s'ouvre.

1. Dans **Créer un alias et une description**, entrez un alias pour la clé (par exemple, `DMS-S3-endpoint-encryption-key`) et toute description supplémentaire.

1. Pour **Balises**, ajoutez les balises que vous souhaitez pour vous aider à identifier la clé et suivre son utilisation, puis choisissez **Suivant**. La page **Définir des autorisations d'administration de clé** s'ouvre et affiche une liste d'utilisateurs et de rôles parmi lesquels vous pouvez choisir.

1. Ajoutez les utilisateurs et les rôles que vous souhaitez voir gérer la clé. Assurez-vous que ces utilisateurs et ces rôles ont les autorisations requises pour gérer la clé. 

1. Pour **Suppression de clé**, choisissez si les administrateurs de clé peuvent supprimer celle-ci, puis choisissez **Suivant**. La page **Définir des autorisations d'utilisation de clé** s'ouvre et affiche une liste supplémentaire d'utilisateurs et de rôles parmi lesquels vous pouvez choisir.

1. Pour **Ce compte**, choisissez les utilisateurs disponibles pour lesquels vous souhaitez effectuer des opérations de chiffrement sur des cibles Amazon S3. Choisissez également le rôle que vous avez créé précédemment dans **Rôles** pour activer l’accès au chiffrement des objets cibles Amazon S3, par exemple `DMS-S3-endpoint-access-role`.

1. Si vous souhaitez ajouter d'autres comptes ne figurant pas dans la liste pour avoir ce même accès, dans **Autres AWS comptes**, choisissez **Ajouter un autre AWS compte**, puis cliquez sur **Suivant**. La page **Réviser et modifier la stratégie de clé** s'ouvre, affichant le JSON de la stratégie de clé que vous pouvez réviser et modifier en saisissant les informations dans le JSON existant. Ici, vous pouvez voir où la stratégie clé fait référence au rôle et aux utilisateurs (par exemple, `Admin` et `User1`) que vous avez choisis à l'étape précédente. Vous pouvez également voir les actions clés autorisées pour les différents mandataires (utilisateurs et rôles), comme illustré dans l'exemple suivant.

------
#### [ 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. Choisissez **Finish** (Terminer). La page **Clés de chiffrement** s’ouvre et affiche un message indiquant que votre clé KMS a été créée.

Vous venez de créer une nouvelle clé KMS avec un alias spécifié (par exemple, `DMS-S3-endpoint-encryption-key`). Cette clé permet AWS DMS de chiffrer les objets cibles d'Amazon S3.

## Utilisation du partitionnement de dossiers basé sur la date
<a name="CHAP_Target.S3.DatePartitioning"></a>

AWS DMS prend en charge les partitions de dossiers S3 en fonction de la date de validation de la transaction lorsque vous utilisez Amazon S3 comme point de terminaison cible. Avec le partitionnement de dossiers basé sur la date, vous pouvez écrire des données à partir d’une table source unique dans une structure de dossiers hiérarchisée dans le temps dans un compartiment S3. En partitionnant des dossiers lors de la création d’un point de terminaison cible S3, vous pouvez :
+ Mieux gérer vos objets S3
+ Limiter la taille de chaque dossier S3
+ Optimiser les requêtes du lac de données ou les autres opérations ultérieures

Vous pouvez activer le partitionnement de dossiers basé sur la date lorsque vous créez un point de terminaison cible S3. Vous pouvez l’activer lorsque vous migrez des données existantes et que vous répliquez les modifications continues (chargement complet \$1 CDC) ou lorsque vous répliquez uniquement les modifications de données (CDC uniquement). Lorsque vous migrez des données existantes et que vous répliquez les modifications en cours, seules les modifications en cours seront partitionnées. Utilisez les paramètres de point de terminaison cible suivants :
+ `DatePartitionEnabled` : spécifie le partitionnement en fonction des dates. Définissez cette option booléenne sur `true` pour partitionner les dossiers de compartiment S3 en fonction des dates de validation des transactions. 

  Vous ne pouvez pas utiliser ce paramètre avec `PreserveTransactions` ou `CdcPath`.

  La valeur par défaut est `false`. 
+ `DatePartitionSequence` : identifie la séquence du format de date à utiliser lors du partitionnement des dossiers. Définissez cette option ENUM sur `YYYYMMDD`, `YYYYMMDDHH`, `YYYYMM`, `MMYYYYDD` ou `DDMMYYYY`. La valeur par défaut est `YYYYMMDD`. Utilisez ce paramètre lorsque `DatePartitionEnabled` est défini sur `true.`.
+ `DatePartitionDelimiter` : spécifie un délimiteur de date à utiliser lors du partitionnement des dossiers. Définissez cette option ENUM sur `SLASH`, `DASH`, `UNDERSCORE` ou `NONE`. La valeur par défaut est `SLASH`. Utilisez ce paramètre lorsque `DatePartitionEnabled` est défini sur `true`.
+ `DatePartitionTimezone`— Lorsque vous créez un point de terminaison cible S3, configurez-le `DatePartitionTimezone` pour convertir l'heure UTC actuelle dans un fuseau horaire spécifié. La conversion a lieu lorsqu'un dossier de partition de dates est créé et qu'un nom de fichier CDC est généré. Le format du fuseau horaire est Zone/Lieu. Utilisez ce paramètre lorsqu'il `DatePartitionedEnabled` est défini sur`true`, comme indiqué dans l'exemple suivant :

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

L’exemple suivant montre comment activer le partitionnement de dossiers basé sur la date, avec les valeurs par défaut pour la séquence de partition de données et le délimiteur. Il utilise l'`--s3-settings '{json-settings}'`option du AWS CLI. `create-endpoint`commande. 

```
   --s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'
```

## Chargement parallèle de sources partitionnées lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS
<a name="CHAP_Target.S3.ParallelLoad"></a>

Vous pouvez configurer un chargement complet parallèle de sources de données partitionnées sur les cibles Amazon S3. Cette approche améliore les temps de chargement lors de la migration des données partitionnées à partir des moteurs de base de données source pris en charge vers la cible S3. Pour améliorer les temps de chargement des données sources partitionnées, vous créez des sous-dossiers cibles S3 mappés aux partitions de chaque table de la base de données source. Ces sous-dossiers liés à une partition permettent d' AWS DMS exécuter des processus parallèles pour remplir chaque sous-dossier de la cible.

Pour configurer le chargement complet parallèle d’une cible S3, S3 prend en charge trois types de règles `parallel-load` pour la règle `table-settings` de mappage de table :
+ `partitions-auto`
+ `partitions-list`
+ `ranges`

Pour plus d’informations sur ces types de règles de chargement parallèle, consultez [Règles des paramètres de table et de collection et opérations](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

Pour les types de règles `partitions-auto` et `partitions-list`, AWS DMS utilise le nom de chaque partition depuis le point de terminaison source pour identifier la structure des sous-dossiers cibles, comme suit.

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

Ici, le chemin du sous-dossier où les données sont migrées et stockées sur la cible S3 inclut un sous-dossier `partition_name` supplémentaire qui correspond à une partition source portant le même nom. Ce sous-dossier `partition_name` stocke ensuite un ou plusieurs fichiers `LOADseq_num.csv` contenant des données migrées depuis la partition source spécifiée. Ici, `seq_num` est le suffixe du numéro de séquence sur le nom du fichier .csv, comme `00000001` dans le fichier .csv portant le nom `LOAD00000001.csv`.

Cependant, certains moteurs de base de données, tels que MongoDB et DocumentDB, n’utilisent pas le concept de partitions. Pour ces moteurs de base de données, AWS DMS ajoute l'index du segment source en cours d'exécution en tant que préfixe au nom du fichier .csv cible, comme suit.

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

Ici, les fichiers `SEGMENT1_LOAD00000001.csv` et `SEGMENT1_LOAD00000002.csv` sont nommés avec le même préfixe d’index de segment source en cours d’exécution, `SEGMENT1`. Ils portent ce nom, car les données sources migrées pour ces deux fichiers .csv sont associées au même index de segment source en cours d’exécution. D’autre part, les données migrées stockées dans chacun des fichiers cibles `SEGMENT2_LOAD00000009.csv` et `SEGMENT3_LOAD0000000A.csv` sont associées à différents index de segment source en cours d’exécution. Le nom de chaque fichier est préfixé avec le nom de son index de segment en cours d’exécution, `SEGMENT2` et `SEGMENT3`.

Pour le type de chargement parallèle `ranges`, vous définissez les noms et les valeurs de colonne à l’aide des paramètres `columns` et `boundaries` des règles `table-settings`. Avec ces règles, vous pouvez spécifier des partitions correspondant aux noms de segment, comme suit.

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

Ici, le paramètre `segment-names` définit les noms de trois partitions pour migrer les données en parallèle sur la cible S3. Les données migrées sont chargées en parallèle et stockées dans des fichiers .csv sous les sous-dossiers de partition, comme suit.

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

Ici, AWS DMS stocke une série de fichiers .csv dans chacun des trois sous-dossiers de partition. La série de fichiers .csv de chaque sous-dossier de partition est nommée de manière incrémentielle à partir de `LOAD00000001.csv` jusqu’à ce que toutes les données soient migrées.

Dans certains cas, il se peut que vous ne nommiez pas explicitement les sous-dossiers de partition pour un type de chargement parallèle `ranges` à l’aide du paramètre `segment-names`. Dans ce cas, AWS DMS applique la valeur par défaut qui consiste à créer chaque série de fichiers .csv dans son `table_name` sous-dossier. Ici, AWS DMS préfixe les noms de fichier de chaque série de fichiers .csv avec le nom de l’index du segment source en cours d’exécution, comme suit.

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

## Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS
<a name="CHAP_Target.S3.Configuring"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible Amazon S3 comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--s3-settings '{"EndpointSetting": "value", ...}'` JSON.

**Note**  
DMS écrit les modifications dans les fichiers Parquet en fonction de l'ordre de validation de la base de données source, mais lors de la migration de plusieurs tables, l'ordre de transaction d'origine n'est pas conservé en raison du partitionnement au niveau de la table. Pour conserver les informations de séquence de transactions, configurez le paramètre du point de `TimestampColumnName` terminaison pour inclure l'horodatage de validation source pour chaque ligne, que vous pouvez ensuite utiliser lors du traitement en aval pour reconstruire la séquence de transaction d'origine. Contrairement au format CSV, qui propose ce `PreserveTransactions` paramètre, les fichiers Parquet gèrent les transactions différemment en raison de leur structure de stockage en colonnes, mais cette approche permet un suivi précis des temps de validation de la source, prend en charge la reconstruction des ordres de transaction après la migration et permet un traitement efficace des données tout en préservant la cohérence des données.

Les paramètres de point de terminaison que vous pouvez utiliser avec Amazon S3 en tant que cible sont indiqués dans le tableau suivant.


| **Option** | **Description** | 
| --- | --- | 
| CsvNullValue |  Paramètre facultatif qui indique le mode de AWS DMS traitement des valeurs nulles. Lors de la gestion de la valeur null (nulle), vous pouvez utiliser ce paramètre pour transmettre une chaîne définie par l'utilisateur comme nulle lors de l'écriture sur la cible. Par exemple, lorsque les colonnes cibles peuvent être définies comme nulles (nullable), vous pouvez utiliser cette option pour différencier la valeur de chaîne vide de la valeur nulle.  Valeur par défaut : `""` Valeurs valides : toutes les chaînes valides Exemple : `--s3-settings '{"CsvNullValue": "NULL"}'` Si la valeur de la colonne de la base de données source est nulle, dans le fichier CSV S3, la valeur de colonne est `NULL` au lieu de la chaîne « ».  | 
| AddColumnName |  Paramètre facultatif qui lorsqu’il est défini sur `true` ou `y` vous permet d'ajouter les informations de nom de colonne dans le fichier de sortie .csv. Vous ne pouvez pas utiliser ce paramètre avec `PreserveTransactions` ou `CdcPath`. Valeur par défaut : `false` Valeurs valides : `true`, `false`, `y`, `n` Exemple : `--s3-settings '{"AddColumnName": true}'`  | 
| AddTrailingPaddingCharacter |  Utilisez le paramètre de point de terminaison cible S3 `AddTrailingPaddingCharacter` pour ajouter un remplissage aux données de chaîne. La valeur par défaut est `false`. Type : Boolean Exemple : `--s3-settings '{"AddTrailingPaddingCharacter": true}'`  | 
| BucketFolder |  Un paramètre facultatif pour définir le nom d'un dossier dans le compartiment S3. S'il est fourni, les objets cibles sont créés en tant que fichiers .csv ou .parquet dans le chemin `BucketFolder/schema_name/table_name/`. Si ce paramètre n'est pas spécifié, le chemin utilisé est `schema_name/table_name/`.  Exemple : `--s3-settings '{"BucketFolder": "testFolder"}'`  | 
| BucketName |  Nom du compartiment S3 dans lequel les objets cibles S3 sont créés en tant que fichiers .csv ou .parquet. Exemple : `--s3-settings '{"BucketName": "buckettest"}'`  | 
| CannedAclForObjects |  Valeur qui permet de AWS DMS spécifier une liste de contrôle d'accès prédéfinie (prédéfinie) pour les objets créés dans le compartiment S3 sous forme de fichiers .csv ou .parquet. Pour plus d'informations sur le scan Amazon S3 ACLs, consultez la section [Caned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) dans le *manuel du développeur Amazon S3.* Valeur par défaut : NONE Les valeurs valides pour cet attribut sont : NONE ; PRIVATE ; PUBLIC\$1READ ; PUBLIC\$1READ\$1WRITE ; AUTHENTICATED\$1READ ; \$1READ ; BUCKET\$1OWNER\$1READ ; BUCKET\$1OWNER\$1FULL\$1CONTROL. AWS\$1EXEC Exemple : `--s3-settings '{"CannedAclForObjects": "PUBLIC_READ"}'`  | 
| CdcInsertsOnly |  Paramètre facultatif lors d’une capture de données de modification (CDC) pour écrire uniquement des opérations INSERT dans les fichiers de sortie .csv (valeurs séparées par des virgules) ou .parquet (stockage en colonnes). Par défaut (le paramètre `false`), le premier champ d'un enregistrement .csv ou .parquet contient la lettre I (INSERT), U (UPDATE) ou D (DELETE). Cette lettre indique si la ligne a été insérée, mise à jour ou supprimée dans la base de données source pour une charge CDC vers la cible. S'il `cdcInsertsOnly` est défini sur `true` ou`y`, seuls les fichiers .csv ou .parquet sont migrés INSERTs depuis la base de données source. Pour le format .csv uniquement, l’enregistrement de de ces commandes INSERT dépend de la valeur de `IncludeOpForFullLoad`. Si `IncludeOpForFullLoad` est défini sur `true`, le premier champ de chaque enregistrement CDC est défini sur I pour indiquer l'opération INSERT à la source. Si `IncludeOpForFullLoad` est défini sur `false`, chaque enregistrement CDC est écrit sans premier champ pour indiquer l'opération INSERT à la source. Pour plus d'informations sur le fonctionnement de ces paramètres utilisés conjointement, consultez [Indication des opérations de base de données source dans des données S3 migrées](#CHAP_Target.S3.Configuring.InsertOps). Valeur par défaut : `false` Valeurs valides : `true`, `false`, `y`, `n` Exemple : `--s3-settings '{"CdcInsertsOnly": true}'`  | 
| CdcInsertsAndUpdates |  Permet une charge CDC (Change Data Capture) pour écrire des opérations INSERT et UPDATE dans des fichiers de sortie .csv ou .parquet (stockage en colonnes). Le paramètre par défaut est`false`, mais quand `cdcInsertsAndUpdates` est défini sur `true` ou`y`, INSERTs et UPDATEs depuis la base de données source sont migrés vers le fichier .csv ou .parquet.  Pour le format de fichier .csv uniquement, la manière dont UPDATEs ils sont enregistrés dépend de la valeur du `includeOpForFullLoad` paramètre. INSERTs Si la valeur `includeOpForFullLoad` est définie sur `true`, le premier champ de chaque enregistrement CDC est défini sur `I` ou `U` pour indiquer les opérations INSERT et UPDATE à la source. Mais si `includeOpForFullLoad` est défini sur `false`, les enregistrements CDC sont écrits sans indication des opérations INSERT ou UPDATE à la source.   Pour plus d'informations sur le fonctionnement de ces paramètres utilisés conjointement, consultez [Indication des opérations de base de données source dans des données S3 migrées](#CHAP_Target.S3.Configuring.InsertOps).  `CdcInsertsOnly` et `cdcInsertsAndUpdates` ne peuvent pas tous les deux être définis sur true pour le même point de terminaison. Définissez `cdcInsertsOnly` ou `cdcInsertsAndUpdates` sur `true` pour le même point de terminaison, mais pas les deux.   Valeur par défaut : `false` Valeurs valides : `true`, `false`, `y`, `n` Exemple : `--s3-settings '{"CdcInsertsAndUpdates": true}'`  | 
|  `CdcPath`  |  Spécifie le chemin du dossier des fichiers CDC. Pour une source S3, cet attribut est requis si une tâche capture les données modifiées. Dans le cas contraire, il est facultatif. Si `CdcPath` est défini, DMS lit les fichiers CDC à partir de ce chemin et réplique les modifications des données sur le point de terminaison cible. Pour une cible S3, si vous définissez `PreserveTransactions` sur true, DMS vérifie que vous avez défini ce paramètre sur un chemin de dossier de votre cible S3 où DMS peut enregistrer l’ordre des transactions pour le chargement CDC. DMS crée ce chemin de dossier CDC soit dans votre répertoire de travail cible S3, soit dans l’emplacement cible S3 spécifié par `BucketFolder` et `BucketName`. Vous ne pouvez pas utiliser ce paramètre avec `DatePartitionEnabled` ou `AddColumnName`. Type : Chaîne Par exemple, si vous définissez `CdcPath` sur `MyChangedData` et `BucketName` sur `MyTargetBucket`, mais que vous ne spécifiez pas `BucketFolder`, DMS crée le chemin du dossier CDC suivant : `MyTargetBucket/MyChangedData`.  Si vous définissez la même valeur pour `CdcPath` et que vous définissez `BucketName` sur `MyTargetBucket` et `BucketFolder` sur `MyTargetData`, DMS crée le chemin du dossier CDC suivant : `MyTargetBucket/MyTargetData/MyChangedData`. Ce paramètre est pris en charge dans AWS DMS les versions 3.4.2 et supérieures. Lors de la capture des modifications de données dans l'ordre des transactions, DMS enregistre toujours les modifications de ligne dans des fichiers .csv, quelle que soit la valeur du paramètre DataFormat S3 sur la cible.   | 
|  `CdcMaxBatchInterval`  |  Condition de durée maximale de l’intervalle, définie en secondes, à laquelle envoyer un fichier vers Amazon S3. Valeur par défaut : 60 secondes Lorsque `CdcMaxBatchInterval` et `CdcMinFileSize` sont spécifiés, l’écriture du fichier est déclenchée dès que l’une des conditions de paramètre est remplie.  À partir de AWS DMS la version 3.5.3, lorsque vous utilisez PostgreSQL ou Aurora PostgreSQL comme source et Amazon S3 avec Parquet comme cible`confirmed_flush_lsn`, la fréquence des mises à jour dépend de la quantité de données que le point de terminaison cible est configuré pour conserver en mémoire. AWS DMS `confirmed_flush_lsn`renvoie le message à la source uniquement une fois que les données en mémoire ont été écrites sur Amazon S3. Si vous configurez le `CdcMaxBatchInterval` paramètre sur une valeur supérieure, vous pouvez observer une augmentation de l'utilisation des emplacements de réplication dans la base de données source.   | 
|  `CdcMinFileSize`  |  Condition de taille minimale de fichier, définie en kilo-octets, à laquelle envoyer un fichier vers Amazon S3. Valeur par défaut : 32 000 Ko Lorsque `CdcMinFileSize` et `CdcMaxBatchInterval` sont spécifiés, l’écriture du fichier est déclenchée dès que l’une des conditions de paramètre est remplie.  | 
|  `PreserveTransactions`  |  Lorsque la valeur est `true`, DMS enregistre l’ordre des transactions pour une capture des données de modification (CDC) sur la cible Amazon S3 spécifiée par `CdcPath`. Vous ne pouvez pas utiliser ce paramètre avec `DatePartitionEnabled` ou `AddColumnName`. Type : Boolean Lors de la capture des modifications de données dans l'ordre des transactions, DMS enregistre toujours les modifications de ligne dans des fichiers .csv, quelle que soit la valeur du paramètre DataFormat S3 sur la cible. Ce paramètre est pris en charge dans AWS DMS les versions 3.4.2 et supérieures.   | 
| IncludeOpForFullLoad |  Paramètre facultatif lors d’un chargement complet pour écrire les opérations INSERT dans les fichiers de sortie .csv (valeurs séparées par des virgules) uniquement. Pour le chargement complet, les enregistrements peuvent être insérés uniquement. Par défaut (paramètre `false`), avec un chargement complet, aucune information n’est enregistrée dans ces fichiers de sortie pour indiquer que les lignes ont été ajoutées à la base de données source. Si `IncludeOpForFullLoad` est défini sur `true` ou `y`, l’opération INSERT est enregistrée en tant que annotation I dans le premier champ du fichier .csv.  Ce paramètre fonctionne conjointement avec `CdcInsertsOnly` ou `CdcInsertsAndUpdates` pour une sortie dans des fichiers .csv uniquement. Pour plus d'informations sur le fonctionnement de ces paramètres utilisés conjointement, consultez [Indication des opérations de base de données source dans des données S3 migrées](#CHAP_Target.S3.Configuring.InsertOps).  Valeur par défaut : `false` Valeurs valides : `true`, `false`, `y`, `n` Exemple : `--s3-settings '{"IncludeOpForFullLoad": true}'`  | 
| CompressionType |  Paramètre facultatif lorsqu'il est défini sur `GZIP` utilise GZIP pour compresser les fichiers .csv cibles. Lorsque ce paramètre est défini sur la valeur par défaut, les fichiers demeurent non compressés. Valeur par défaut : `NONE` Valeurs valides : `GZIP` ou `NONE` Exemple : `--s3-settings '{"CompressionType": "GZIP"}'`  | 
| CsvDelimiter |  Délimiteur utilisé pour séparer les colonnes des fichiers sources .csv. La valeur par défaut est une virgule (,). Exemple : `--s3-settings '{"CsvDelimiter": ","}'`  | 
| CsvRowDelimiter |  Délimiteur utilisé pour séparer les lignes des fichiers sources .csv. La valeur par défaut est un caractère de saut de ligne (\$1 n). Exemple : `--s3-settings '{"CsvRowDelimiter": "\n"}'`  | 
|   `MaxFileSize`   |  Une valeur qui spécifie la taille maximale (en Ko) des fichiers .csv à créer lors de la migration vers une cible S3 pendant le chargement complet. Valeur par défaut : 1 048 576 Ko (1 Go) Valeurs valides : 1 à 1 048 576 Exemple : `--s3-settings '{"MaxFileSize": 512}'`  | 
| Rfc4180 |  Paramètre facultatif utilisé pour définir le comportement afin de se conformer à RFC pour les données migrées vers Amazon S3 à l’aide du format de fichier .csv uniquement. Lorsque cette valeur est définie sur `true` ou `y` en utilisant Amazon S3 comme cible, si les données contiennent des guillemets, des virgules ou des caractères de nouvelle ligne, AWS DMS la colonne entière est entourée d'une paire supplémentaire de guillemets doubles («). Chaque point d'interrogation contenu dans les données est répété deux fois. Ce format est conforme à RFC 4180. Valeur par défaut : `true` Valeurs valides : `true`, `false`, `y`, `n` Exemple : `--s3-settings '{"Rfc4180": false}'`  | 
| EncryptionMode |  Mode de chiffrement côté serveur que vous souhaitez utiliser pour chiffrer vos fichiers d'objets .csv ou .parquet copiés dans S3. Les valeurs valides sont `SSE_S3` (chiffrement côté serveur S3) ou `SSE_KMS` (chiffrement de clé KMS). Si vous choisissez `SSE_KMS`, définissez le paramètre `ServerSideEncryptionKmsKeyId` sur l'Amazon Resource Name (ARN) de la clé KMS à utiliser pour le chiffrement.  Vous pouvez également utiliser la commande CLI `modify-endpoint` pour modifier la valeur de l’attribut `EncryptionMode` d’un point de terminaison existant de `SSE_KMS` à `SSE_S3`. Vous ne pouvez pas modifier la valeur `EncryptionMode` de `SSE_S3` à `SSE_KMS`.  Valeur par défaut : `SSE_S3` Valeurs valides : `SSE_S3` ou `SSE_KMS` Exemple : `--s3-settings '{"EncryptionMode": SSE_S3}'`  | 
| ServerSideEncryptionKmsKeyId |  Si vous définissez `EncryptionMode` sur `SSE_KMS`, définissez ce paramètre sur l’Amazon Resource Name (ARN) de la clé KMS. Vous pouvez trouver cet ARN en sélectionnant l'alias de clé dans la liste des AWS KMS clés créées pour votre compte. Lorsque vous créez la clé, vous devez associer les stratégies et les rôles spécifiques associés à cette clé KMS. Pour de plus amples informations, veuillez consulter [Création de AWS KMS clés pour chiffrer les objets cibles d'Amazon S3](#CHAP_Target.S3.KMSKeys). Exemple : `--s3-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'`  | 
| DataFormat |  Format de sortie des fichiers AWS DMS utilisés pour créer des objets S3. Pour les cibles Amazon S3, AWS DMS prend en charge les fichiers .csv ou .parquet. Les fichiers .parquet ont un format de stockage par colonnes binaire avec des options de compression efficaces et des performances de requête plus rapides. Pour plus d'informations sur les fichiers .parquet, consultez [https://parquet.apache.org/](https://parquet.apache.org/). Valeur par défaut : `csv` Valeurs valides : `csv` ou `parquet` Exemple : `--s3-settings '{"DataFormat": "parquet"}'`  | 
| EncodingType |  Type d'encodage Parquet. Parmi les options de type d'encodage, on trouve : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Target.S3.html) Valeur par défaut : `rle-dictionary` Valeurs valides : `rle-dictionary`, `plain` ou `plain-dictionary` Exemple : `--s3-settings '{"EncodingType": "plain-dictionary"}'`  | 
| DictPageSizeLimit |  Taille maximale autorisée, en octets, pour une page de dictionnaire dans un fichier .parquet. Si une page de dictionnaire dépasse cette valeur, elle utilise l'encodage brut. Valeur par défaut : 1 024 000 (1 Mo) Valeurs valides : Toute valeur entière valide Exemple : `--s3-settings '{"DictPageSizeLimit": 2,048,000}'`  | 
| RowGroupLength |  Nombre de lignes dans un groupe de lignes d'un fichier .parquet. Valeur par défaut : 10 024 (10 Ko) Valeurs valides : tout entier valide Exemple : `--s3-settings '{"RowGroupLength": 20,048}'`  | 
| DataPageSize |  Taille maximale autorisée, en octets, pour une page de données dans un fichier .parquet. Valeur par défaut : 1 024 000 (1 Mo) Valeurs valides : tout entier valide Exemple : `--s3-settings '{"DataPageSize": 2,048,000}'`  | 
| ParquetVersion |  Version du format de fichier .parquet. Valeur par défaut : `PARQUET_1_0` Valeurs valides : `PARQUET_1_0` ou `PARQUET_2_0` Exemple : `--s3-settings '{"ParquetVersion": "PARQUET_2_0"}'`  | 
| EnableStatistics |  Définissez ce paramètre sur `true` ou `y` pour activer les statistiques sur les pages et les groupes de lignes des fichiers .parquet. Valeur par défaut : `true` Valeurs valides : `true`, `false`, `y`, `n` Exemple : `--s3-settings '{"EnableStatistics": false}'`  | 
| TimestampColumnName |  Paramètre facultatif permettant d’inclure une colonne d'horodatage dans les données de point de terminaison cible S3. AWS DMS inclut une `STRING` colonne supplémentaire dans les fichiers objets .csv ou .parquet de vos données migrées lorsque vous définissez `TimestampColumnName` une valeur non vide. Pour un chargement complet, chaque ligne de cette colonne d'horodatage contient une valeur d’horodatage correspondant au moment où les données ont été transférées de la source vers la cible par DMS.  Pour un chargement CDC, chaque ligne de la colonne d'horodatage contient la valeur d'horodatage correspondant au moment de la validation de cette ligne dans la base de données source. Le format chaîne pour la valeur de cette colonne d'horodatage est `yyyy-MM-dd HH:mm:ss.SSSSSS`. Par défaut, la précision de cette valeur est en microsecondes. Pour un chargement de CDC, l'arrondi de la précision dépend de l’horodatage de validation pris en charge par DMS pour la base de données source. Lorsque le paramètre `AddColumnName` est défini sur `true`, DMS inclut également le nom de la colonne d’horodatage que vous définissez en tant que valeur non vide pour `TimestampColumnName`. Exemple : `--s3-settings '{"TimestampColumnName": "TIMESTAMP"}'`  | 
| UseTaskStartTimeForFullLoadTimestamp |  Lorsqu’il est défini sur `true`, ce paramètre utilise l’heure de début de la tâche comme valeur de colonne d’horodatage au lieu de l’heure à laquelle les données sont écrites dans la cible. Pour un chargement complet, lorsque `UseTaskStartTimeForFullLoadTimestamp` est défini sur `true`, chaque ligne de la colonne d'horodatage contient l'heure de début de la tâche. Pour les chargements CDC, chaque ligne de la colonne d'horodatage contient l'heure de validation de la transaction. Lorsque `UseTaskStartTimeForFullLoadTimestamp` est défini sur `false`, l'horodatage de chargement complet dans la colonne d'horodatage augmente avec l'heure à laquelle les données arrivent sur la cible. Valeur par défaut : `false` Valeurs valides : `true`, `false` Exemple : `--s3-settings '{"UseTaskStartTimeForFullLoadTimestamp": true}'` `UseTaskStartTimeForFullLoadTimestamp: true` fait en sorte que la colonne `TimestampColumnName` de la cible S3 pour un chargement complet puisse être triée avec `TimestampColumnName` pour un chargement CDC.  | 
| ParquetTimestampInMillisecond |  Paramètre facultatif qui spécifie la précision des valeurs de colonne `TIMESTAMP` écrites dans un fichier d'objet S3 au format .parquet. Lorsque cet attribut est défini sur `true` ou`y`, AWS DMS écrit toutes les `TIMESTAMP` colonnes dans un fichier au format .parquet avec une précision de la milliseconde. Sinon, DMS les écrit avec une précision à la microseconde. Actuellement, Amazon Athena et ne AWS Glue peut gérer que des millisecondes de précision pour les valeurs. `TIMESTAMP` Définissez cet attribut sur true pour les fichiers d’objet de point de terminaison S3 au format .parquet uniquement si vous prévoyez d’interroger ou de traiter les données avec Athena ou AWS Glue.    AWS DMS écrit toutes les valeurs de `TIMESTAMP` colonne écrites dans un fichier S3 au format .csv avec une précision de la microseconde.   La valeur de cet attribut n'a aucun effet sur le format chaîne de la valeur de colonne d'horodatage insérée en définissant l'attribut `TimestampColumnName`.    Valeur par défaut : `false` Valeurs valides : `true`, `false`, `y`, `n` Exemple : `--s3-settings '{"ParquetTimestampInMillisecond": true}'`  | 
| GlueCatalogGeneration |  Pour générer un AWS Glue Data Catalog, définissez ce paramètre de point de terminaison sur`true`. Valeur par défaut : `false` Valeurs valides : `true`, `false` Exemple : `--s3-settings '{"GlueCatalogGeneration": true}'` **Remarque :** n’utilisez pas `GlueCatalogGeneration` avec `PreserveTransactions` et `CdcPath`.  | 

## Utilisation AWS Glue Data Catalog avec une cible Amazon S3 pour AWS DMS
<a name="CHAP_Target.S3.GlueCatalog"></a>

AWS Glue est un service qui fournit des méthodes simples pour classer les données et consiste en un référentiel de métadonnées appelé AWS Glue Data Catalog. Vous pouvez intégrer AWS Glue Data Catalog votre point de terminaison cible Amazon S3 et interroger les données Amazon S3 via d'autres AWS services tels qu'Amazon Athena. Amazon Redshift fonctionne avec cette option AWS Glue prédéfinie, mais AWS DMS ne la prend pas en charge. 

Pour générer le catalogue de données, définissez le paramètre du point de `GlueCatalogGeneration` terminaison sur`true`, comme indiqué dans l' AWS CLI exemple suivant.

```
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}'
```

Pour une tâche de réplication à chargement complet incluant le type de données `csv`, définissez `IncludeOpForFullLoad` sur `true`.

N’utilisez pas `GlueCatalogGeneration` avec `PreserveTransactions` et `CdcPath`. Le AWS Glue robot d'exploration ne parvient pas à concilier les différents schémas des fichiers stockés sous le paramètre spécifié. `CdcPath`

Pour qu’Amazon Athena puisse indexer vos données Amazon S3 et pour que vous puissiez interroger vos données à l’aide de requêtes SQL standard via Amazon Athena, le rôle IAM attaché au point de terminaison doit posséder la politique suivante :

------
#### [ 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_*"
        }
    ]
}
```

------

**Références**
+ Pour plus d'informations AWS Glue, consultez la section [Concepts](https://docs.aws.amazon.com//glue/latest/dg/components-key-concepts.html) du *guide du AWS Glue développeur*.
+ Pour plus d'informations sur la AWS Glue Data Catalog section [Composants](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html) du *Guide du AWS Glue développeur*.

## Utilisation du chiffrement des données, des fichiers Parquet et de la CDC sur votre cible Amazon S3
<a name="CHAP_Target.S3.EndpointSettings"></a>

Vous pouvez utiliser les paramètres de point de terminaison cible S3 pour configurer les éléments suivants :
+ Une clé KMS personnalisée pour chiffrer vos objets cibles S3.
+ Des fichiers Parquet comme format de stockage pour les objets cibles S3.
+ La capture des données de modification (CDC) avec l’ordre des transactions sur la cible S3.
+  AWS Glue Data Catalog Intégrez votre point de terminaison cible Amazon S3 et interrogez les données Amazon S3 via d'autres services tels qu'Amazon Athena.

### AWS KMS paramètres clés pour le chiffrement des données
<a name="CHAP_Target.S3.EndpointSettings.KMSkeys"></a>

Les exemples suivants illustrent la configuration d'une clé KMS personnalisée pour chiffrer vos objets cibles S3. Pour commencer, vous pouvez exécuter la commande CLI `create-endpoint` suivante.

```
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"}'
```

Ici, l'objet JSON spécifié par l'option `--s3-settings` définit deux paramètres. Le premier est le paramètre `EncryptionMode` avec la valeur `SSE_KMS`. L'autre est un paramètre `ServerSideEncryptionKmsKeyId` avec la valeur `arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480`. Cette valeur est un Amazon Resource Name (ARN) pour votre clé KMS personnalisée. Pour une cible S3, vous spécifiez également des paramètres supplémentaires. Ces paramètres identifient le rôle d'accès au serveur, fournissent des délimiteurs pour le format de stockage d'objet CSV par défaut et attribuent l'emplacement et le nom du compartiment pour stocker les objets cibles S3.

Par défaut, le chiffrement de données S3 a lieu à l’aide du chiffrement côté serveur S3. Pour la cible S3 de l'exemple précédent, cela équivaut à spécifier ses paramètres de point de terminaison, comme dans l'exemple suivant.

```
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"}'
```

Pour de plus amples informations sur l’utilisation du chiffrement côté serveur S3, veuillez consulter [Protection des données à l'aide du chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).

**Note**  
Vous pouvez également utiliser la commande CLI `modify-endpoint` pour modifier la valeur du paramètre `EncryptionMode` d’un point de terminaison existant de `SSE_KMS` à `SSE_S3`. Vous ne pouvez pas modifier la valeur `EncryptionMode` de `SSE_S3` à `SSE_KMS`.

### Paramètres pour l'utilisation de fichiers .parquet en vue du stockage d'objets cibles S3
<a name="CHAP_Target.S3.EndpointSettings.Parquet"></a>

Le format par défaut pour la création d'objets cibles S3 est le fichier .csv. Les exemples suivants illustrent certains paramètres de point de terminaison pour spécifier des fichiers .parquet comme format de création d'objets cibles S3. Vous pouvez spécifier le format des fichiers .parquet avec toutes les valeurs par défaut, comme dans l'exemple suivant.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target 
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'
```

Ici, le paramètre `DataFormat` est défini sur `parquet` pour activer le format avec toutes les valeurs par défaut de S3. Ces valeurs par défaut comprennent un encodage par dictionnaire (`"EncodingType: "rle-dictionary"`) qui utilise une combinaison d'encodage par compression de bits et longueur d'exécution pour stocker de manière plus efficace les valeurs répétitives.

Vous pouvez ajouter des paramètres supplémentaires pour les options autres que les valeurs par défaut, comme dans l'exemple suivant.

```
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 }'
```

Ici, en plus des paramètres requis pour plusieurs options de compartiment S3 standard et le paramètre `DataFormat`, les paramètres de fichier .parquet supplémentaires suivants sont définis :
+ `EncodingType` : permet de définir un encodage par dictionnaire (`plain-dictionary`) qui stocke les valeurs rencontrées dans chaque colonne dans un bloc par colonne de la page de dictionnaire.
+ `DictPageSizeLimit` : permet de définir une taille de page de dictionnaire de 3 Mo maximum.
+ `EnableStatistics` : désactive la valeur par défaut qui permet la collecte des statistiques sur les pages et les groupes de lignes du fichier Parquet.

### Capture des données de modification (CDC) avec l’ordre des transactions sur la cible S3
<a name="CHAP_Target.S3.EndpointSettings.CdcPath"></a>

Par défaut, lors de l' AWS DMS exécution d'une tâche CDC, elle stocke toutes les modifications de ligne enregistrées dans votre base de données source (ou vos bases de données) dans un ou plusieurs fichiers pour chaque table. Chaque ensemble de fichiers contenant des modifications pour la même table réside dans un répertoire cible unique associé à cette table. AWS DMS crée autant de répertoires cibles que de tables de base de données migrées vers le point de terminaison cible Amazon S3. Les fichiers sont stockés sur la cible S3 dans ces répertoires sans tenir compte de l’ordre des transactions. Pour plus d’informations sur les conventions de dénomination des fichiers, le contenu des données et le format, consultez [Utiliser Amazon S3 comme cible pour AWS Database Migration Service](#CHAP_Target.S3).

Pour capturer les modifications de la base de données source d'une manière qui capture également l'ordre des transactions, vous pouvez spécifier des paramètres de point de terminaison S3 qui indiquent AWS DMS de stocker les modifications de ligne pour *toutes les* tables de base de données dans un ou plusieurs fichiers .csv créés en fonction de la taille de la transaction. Ces *fichiers de transaction* .csv contiennent toutes les modifications de ligne répertoriées séquentiellement dans l’ordre des transactions pour toutes les tables impliquées dans chaque transaction. Ces fichiers de transaction résident ensemble dans un *répertoire de transactions* unique que vous spécifiez également sur la cible S3. Dans chaque fichier de transaction, l’opération de transaction et l’identité de la base de données et de la table source pour chaque modification de ligne sont stockées dans le cadre des données de ligne, comme suit. 

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

Ici, `operation` est l’opération de transaction sur la ligne modifiée, `table_name` est le nom de la table de base de données où la ligne est modifiée, `database_schema_name` est le nom du schéma de base de données dans lequel se trouve la table et `field_value` est la première d’une ou de plusieurs valeurs de champ qui spécifient les données de la ligne.

L’exemple suivant d’un fichier de transaction illustre les lignes modifiées pour une ou plusieurs transactions impliquant deux tables.

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

Ici, l’opération de transaction sur chaque ligne est indiquée par `I` (insérer), `U` (mettre à jour) ou `D` (supprimer) dans la première colonne. Le nom de la table est la valeur de la deuxième colonne (par exemple, `Names_03cdcad11a`). Le nom du schéma de base de données est la valeur de la troisième colonne (par exemple, `rdsTempsdb`). Et les colonnes restantes sont remplies avec vos propres données de ligne (par exemple, `13,Daniel`).

En outre, AWS DMS nomme les fichiers de transaction qu'il crée sur la cible Amazon S3 à l'aide d'un horodatage conformément à la convention de dénomination suivante.

```
CDC_TXN-timestamp.csv
```

Ici, `timestamp` est l’heure à laquelle le fichier de transaction a été créé, comme dans l’exemple suivant. 

```
CDC_TXN-20201117153046033.csv
```

Cet horodatage dans le nom du fichier garantit que les fichiers de transaction sont créés et répertoriés dans l’ordre des transactions lorsque vous les répertoriez dans leur répertoire de transactions.

**Note**  
Lorsque vous capturez des modifications de données dans l'ordre des transactions, les modifications de ligne sont AWS DMS toujours enregistrées dans des fichiers .csv, quelle que soit la valeur du paramètre `DataFormat` S3 sur la cible.

Pour contrôler la fréquence des écritures sur une cible Amazon S3 lors d’une tâche de réplication de données, vous pouvez configurer les paramètres `CdcMaxBatchInterval` et `CdcMinFileSize`. Cela peut améliorer les performances lors de l’analyse des données sans aucune surcharge supplémentaire. Pour de plus amples informations, consultez [Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS](#CHAP_Target.S3.Configuring). 

**Pour indiquer AWS DMS de stocker toutes les modifications de ligne dans l'ordre de transaction**

1. Définissez le paramètre S3 `PreserveTransactions` sur la cible sur `true`.

1. Définissez le paramètre `CdcPath` S3 sur la cible sur un chemin de dossier relatif dans lequel vous AWS DMS souhaitez stocker les fichiers de transaction .csv.

   AWS DMS crée ce chemin soit sous le compartiment cible et le répertoire de travail S3 par défaut, soit sous le compartiment et le dossier de compartiments que vous spécifiez à l'aide des paramètres `BucketName` et `BucketFolder` S3 sur la cible.

## Indication des opérations de base de données source dans des données S3 migrées
<a name="CHAP_Target.S3.Configuring.InsertOps"></a>

Lors de AWS DMS la migration d'enregistrements vers une cible S3, il est possible de créer un champ supplémentaire dans chaque enregistrement migré. Ce champ supplémentaire indique l'opération appliquée à l'enregistrement au niveau de la base de données source. AWS DMS Le mode de création et de définition de ce premier champ dépend du type de tâche de migration et des paramètres de `includeOpForFullLoad``cdcInsertsOnly`, et`cdcInsertsAndUpdates`.

Pour un chargement complet, lorsque la valeur de `includeOpForFullLoad` est `true`, AWS DMS crée toujours un premier champ supplémentaire dans chaque enregistrement .csv. Ce champ contient la lettre I (INSERT) pour indiquer que la ligne a été insérée au niveau de la base de données source. Pour un chargement CDC, quand `cdcInsertsOnly` est `false` (valeur par défaut), crée AWS DMS également toujours un premier champ supplémentaire dans chaque enregistrement .csv ou .parquet. Ce champ contient la lettre I (INSERT), U (UPDATE) ou D (DELETE) pour indiquer si la ligne a été insérée, mise à jour ou supprimée au niveau de la base de données source.

Dans le tableau suivant, vous pouvez voir comment les paramètres des attributs `includeOpForFullLoad` et `cdcInsertsOnly` fonctionnent ensemble pour modifier la configuration des enregistrements migrés.


| Avec ces valeurs de paramètres | DMS définit les enregistrements cibles comme suit pour la sortie .csv et .parquet  | includeOpForFullLoad | cdcInsertsOnly | Pour un chargement complet | Pour un chargement CDC | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Ajout de la valeur du premier champ définie sur I | Ajout de la valeur du premier champ définie sur I | 
| false | false | Aucun champ ajoutée | Ajout de la valeur du premier champ définie définie sur I, U ou D | 
| false | true | Aucun champ ajoutée | Aucun champ ajoutée | 
| true | false | Ajout de la valeur du premier champ définie sur I | Ajout de la valeur du premier champ définie définie sur I, U ou D | 

Lorsque `includeOpForFullLoad` et `cdcInsertsOnly` sont définis sur la même valeur, les enregistrements cibles sont définis en fonction de l'attribut qui contrôle les paramètres d'enregistrement pour le type de migration actuel. Cet attribut est `includeOpForFullLoad` pour les chargements complets et `cdcInsertsOnly` pour les chargements CDC.

Lorsque `includeOpForFullLoad` et `cdcInsertsOnly` sont définis sur des valeurs différentes, les paramètres AWS DMS d'enregistrement cible sont cohérents à la fois pour le CDC et pour le chargement complet. Pour ce faire, il met en conformité les paramètres d’enregistrement pour un chargement CDC avec ceux du chargement complet précédent spécifié par `includeOpForFullLoad`. 

En d'autres termes, supposons qu'un chargement complet soit défini de façon à ajouter un premier champ pour indiquer un enregistrement inséré. Dans ce cas, un chargement CDC suivant est défini de façon à ajouter un premier champ qui indique un enregistrement inséré, mis à jour ou supprimé (selon l'enregistrement au niveau de la source). En revanche, supposons qu'un chargement complet soit défini de façon à *ne pas* ajouter un premier champ pour indiquer un enregistrement inséré. Dans ce cas, un chargement CDC est également défini de façon à ne pas ajouter un premier champ pour chaque enregistrement, quelle que soit l’opération d’enregistrement correspondante au niveau de la source.

De même, la façon dont DMS crée et définit un premier champ supplémentaire dépend des paramètres de `includeOpForFullLoad` et `cdcInsertsAndUpdates`. Dans le tableau suivant, vous pouvez voir comment les paramètres des attributs `includeOpForFullLoad` et `cdcInsertsAndUpdates` fonctionnent ensemble pour modifier la configuration des enregistrements migrés sous ce format. 


| Avec ces valeurs de paramètres | DMS définit les enregistrements cibles comme suit pour la sortie .csv  | includeOpForFullLoad | cdcInsertsAndmises à jour | Pour un chargement complet | Pour un chargement CDC | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Ajout de la valeur du premier champ définie sur I | Ajout de la valeur du premier champ définie sur I ou U | 
| false | false | Aucun champ ajoutée | Ajout de la valeur du premier champ définie définie sur I, U ou D | 
| false | true | Aucun champ ajoutée | Ajout de la valeur du premier champ définie sur I ou U | 
| true | false | Ajout de la valeur du premier champ définie sur I | Ajout de la valeur du premier champ définie définie sur I, U ou D | 

## Types de données cibles pour S3 Parquet
<a name="CHAP_Target.S3.DataTypes"></a>

Le tableau suivant indique les types de données cibles Parquet pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS type de données  |  fType de données S3 Parquet   | 
| --- | --- | 
| 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 | 

# Utilisation d'une base de données Amazon DynamoDB comme cible pour AWS Database Migration Service
<a name="CHAP_Target.DynamoDB"></a>

Vous pouvez l'utiliser AWS DMS pour migrer des données vers une table Amazon DynamoDB. Amazon DynamoDB est un service de base de données NoSQL entièrement géré qui fournit des performances rapides et prévisibles avec une évolutivité sans faille. AWS DMS prend en charge l'utilisation d'une base de données relationnelle ou de MongoDB comme source.

Dans DynamoDB, les tables, les éléments et les attributs sont les principaux composants que vous utilisez. Une *table *est une collection d’éléments et chaque *élément *est une collection d’attributs. DynamoDB utilise les clés primaires, appelées clés de partition, afin d'identifier de façon unique chaque élément d'une table. Vous pouvez également utiliser des clés et des index secondaires pour fournir une plus grande flexibilité d'interrogation.

Vous utilisez le mappage d'objet afin de migrer vos données d'une base de données source vers une table DynamoDB cible. Le mappage d'objet vous permet de déterminer l'emplacement des données sources dans la cible. 

Lors de la AWS DMS création de tables sur un point de terminaison cible DynamoDB, il crée autant de tables que dans le point de terminaison de la base de données source. AWS DMS définit également plusieurs valeurs de paramètres DynamoDB. Le coût de création de la table dépend de la quantité de données et du nombre de tables à migrer.

**Note**  
L'option **Mode SSL** de la AWS DMS console ou de l'API ne s'applique pas à certains services de streaming de données et NoSQL tels que Kinesis et DynamoDB. Ils sont sécurisés par défaut, ce qui AWS DMS montre que le paramètre du mode SSL est égal à aucun (**mode SSL = aucun**). Vous n’avez pas besoin de fournir de configuration supplémentaire pour que votre point de terminaison utilise le protocole SSL. Par exemple, lorsque DynamoDB est utilisé comme point de terminaison cible, il est sécurisé par défaut. Tous les appels d'API à DynamoDB utilisent le protocole SSL, il n'est donc pas nécessaire d'ajouter une option SSL supplémentaire dans le point de terminaison. AWS DMS Vous pouvez placer et récupérer des données en toute sécurité via des points de terminaison SSL à l’aide du protocole HTTPS, utilisé par AWS DMS par défaut lors de la connexion à une base de données DynamoDB.

Pour accélérer le transfert, AWS DMS prend en charge le chargement complet multithread vers une instance cible DynamoDB. DMS prend en charge ce traitement multithread avec des paramètres de tâche, notamment les suivants :
+ `MaxFullLoadSubTasks` : utilisez cette option pour indiquer le nombre maximal de tables sources à charger en parallèle. DMS charge chaque table dans sa table cible DynamoDB correspondante à l’aide d’une sous-tâche dédiée. La valeur par défaut est 8. La valeur maximale est 49.
+ `ParallelLoadThreads`— Utilisez cette option pour spécifier le nombre de threads AWS DMS utilisés pour charger chaque table dans sa table cible DynamoDB. La valeur par défaut est 0 (à thread unique). La valeur maximale est 200. Vous pouvez demander une augmentation de cette limite maximale.
**Note**  
DMS attribue chaque segment d'une table à son propre thread pour le chargement. Par conséquent, définissez `ParallelLoadThreads` sur le nombre maximal de segments que vous spécifiez pour une table de la source.
+ `ParallelLoadBufferSize` : utilisez cette option pour spécifier le nombre maximal d’enregistrements à stocker dans la mémoire tampon utilisée par les threads de chargement parallèles pour charger les données dans la cible DynamoDB. La valeur par défaut est 50. La valeur maximale est 1 000. Utilisez ce paramètre avec `ParallelLoadThreads`. `ParallelLoadBufferSize` est valide uniquement dans le cas de plusieurs threads.
+ Paramètres de mappage de table pour des tables individuelles : utilisez des règles `table-settings` pour identifier les tables individuelles de la source que vous souhaitez charger en parallèle. Utilisez également ces règles pour spécifier comment segmenter les lignes de chaque table pour le chargement multithread. Pour de plus amples informations, veuillez consulter [Règles des paramètres de table et de collection et opérations](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

**Note**  
Lorsque AWS DMS les valeurs des paramètres DynamoDB sont définies pour une tâche de migration, la valeur du paramètre Unités de capacité de lecture (RCU) par défaut est définie sur 200.  
La valeur du paramètre WCU (Write Capacity Units) est également définie, mais sa valeur dépend de plusieurs autres paramètres :  
La valeur par défaut du paramètre WCU est 200.
Si le paramètre de tâche `ParallelLoadThreads` est défini sur une valeur supérieure à 1 (0 par défaut), le paramètre WCU est défini à 200 fois la valeur `ParallelLoadThreads`.
Les frais AWS DMS d'utilisation standard s'appliquent aux ressources que vous utilisez.

## Migration à partir d’une base de données relationnelle vers une table DynamoDB
<a name="CHAP_Target.DynamoDB.RDBMS2DynamoDB"></a>

AWS DMS prend en charge la migration des données vers les types de données scalaires DynamoDB. Lors d'une migration depuis une base de données relationnelle telle qu'Oracle ou MySQL vers DynamoDB, vous pouvez restructurer la manière dont vous stockez les données.

 AWS DMS Prend actuellement en charge la restructuration d'une table à une autre selon les attributs de type scalaire DynamoDB. Si vous migrez des données vers DynamoDB depuis une table de base de données relationnelle, vous prenez les données d'une table et les reformatez en attributs de types de données scalaires DynamoDB. Ces attributs peuvent accepter des données de plusieurs colonnes et vous pouvez mapper directement une colonne à un attribut.

AWS DMS prend en charge les types de données scalaires DynamoDB suivants :
+ String
+ Number
+ Booléen

**Note**  
Les données NULL provenant de la source sont ignorées dans la cible.

## Conditions préalables à l'utilisation de DynamoDB comme cible pour AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Prerequisites"></a>

Avant de commencer à utiliser une base de données DynamoDB comme cible, assurez-vous AWS DMS de créer un rôle IAM. Ce rôle IAM doit permettre d'assumer et AWS DMS d'accorder l'accès aux tables DynamoDB vers lesquelles la migration est en cours de migration. L'ensemble d'autorisations d'accès minimum est indiqué dans la stratégie IAM suivante.

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

****  

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

------

Le rôle que vous utilisez pour la migration vers DynamoDB doit bénéficier des autorisations suivantes.

------
#### [ 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": "*"
        }
    ]
}
```

------

## Limitations liées à l'utilisation de DynamoDB comme cible pour AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Limitations"></a>

Les limitations suivantes s’appliquent à l’utilisation de DynamoDB en tant que cible :
+ DynamoDB limite la précision du type de données Number à 38 places. Stockez tous les types de données en tant que chaîne avec une meilleure précision. Vous devez le spécifier explicitement à l'aide de la fonction de mappage d'objet.
+ Étant donné que DynamoDB ne possède pas de type de données Date, les données utilisant le type de données Date sont converties en chaînes.
+ DynamoDB n’autorise pas les mises à jour des attributs de la clé primaire. Cette restriction est importante lors de l'utilisation de la réplication continue avec la capture des données modifiées (CDC), car elle peut entraîner des données non souhaitées dans la cible. En fonction de la façon dont l'objet est mappé, une opération CDC qui met à jour la clé primaire peut réaliser l'une des deux actions suivantes. Elle peut échouer ou insérer un nouvel élément avec la clé primaire mise à jour et des données incomplètes.
+ AWS DMS prend uniquement en charge la réplication de tables avec des clés primaires non composites. Une exception s'applique si vous spécifiez un mappage d'objet pour la table cible avec une clé de partition ou une clé de tri personnalisée, ou les deux.
+ AWS DMS ne prend pas en charge les données LOB sauf s'il s'agit d'un CLOB. AWS DMS convertit les données CLOB en chaîne DynamoDB lors de la migration des données.
+ Lorsque vous utilisez DynamoDB comme cible, seule la table de contrôle Appliquer les exceptions (`dmslogs.awsdms_apply_exceptions`) est prise en charge. Pour plus d'informations sur les tables de contrôle, consultez [Paramètres de tâche de la table de contrôle](CHAP_Tasks.CustomizingTasks.TaskSettings.ControlTable.md).
+ AWS DMS ne prend pas en charge le paramétrage des tâches `TargetTablePrepMode=TRUNCATE_BEFORE_LOAD` pour DynamoDB en tant que cible. 
+ AWS DMS ne prend pas en charge le paramétrage des tâches `TaskRecoveryTableEnabled` pour DynamoDB en tant que cible. 
+ `BatchApply`n'est pas pris en charge pour un point de terminaison DynamoDB.
+ AWS DMS Impossible de migrer les attributs dont les noms correspondent à des mots réservés dans DynamoDB. Pour plus d'informations, consultez la section [Mots réservés dans DynamoDB dans](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html) le manuel du développeur Amazon *DynamoDB*.

## Utilisation du mappage d’objet pour migrer les données vers DynamoDB
<a name="CHAP_Target.DynamoDB.ObjectMapping"></a>

AWS DMS utilise des règles de mappage de tables pour mapper les données de la source à la table DynamoDB cible. Pour mapper des données vers une cible DynamoDB, utilisez un type de règle de mappage de tables dénommé *object-mapping*. Le mappage d'objet vous permet de définir le nom des attributs et les données qui doivent être migrées vers ceux-ci. Des règles de sélection doivent être définies lorsque vous utilisez le mappage d'objet.

DynamoDB ne dispose pas d’une structure prédéfinie autre qu’une clé de partition et une clé de tri facultative. Si vous avez une clé primaire non composite, AWS DMS utilisez-la. Si vous avez une clé primaire composite ou si vous souhaitez utiliser une clé de tri, définissez ces clés et les autres attributs dans votre table DynamoDB cible.

Pour créer une règle de mappage d'objet, vous spécifiez le `rule-type` comme *mappage d'objet*. Cette règle spécifie le type de mappage d'objet que vous souhaitez utiliser. 

La structure de la règle est la suivante :

```
{ "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 prend actuellement en charge `map-record-to-record` et `map-record-to-document` en tant que seules valeurs valides pour le `rule-action` paramètre. Ces valeurs indiquent ce qui est AWS DMS fait par défaut aux enregistrements qui ne sont pas exclus de la liste d'`exclude-columns`attributs. Ces valeurs n'affectent en aucune façon les mappages d'attributs. 
+ Vous pouvez utiliser `map-record-to-record` lors de la migration d’une base de données relationnelle vers DynamoDB. La clé primaire est utilisée depuis la base de données relationnelle comme clé de partition dans DynamoDB et crée un attribut pour chaque colonne dans la base de données source. Lors de l'utilisation`map-record-to-record`, pour toute colonne de la table source non répertoriée dans la liste `exclude-columns` d'attributs, AWS DMS crée un attribut correspondant sur l'instance DynamoDB cible. Cet attribut est créé, que la colonne source soit ou non utilisée dans un mappage d'attribut. 
+ Vous utilisez `map-record-to-document` pour placer des colonnes sources dans un mappage DynamoDB unique et plat sur la cible, avec le nom d’attribut « \$1doc ». Lors de l'utilisation`map-record-to-document`, AWS DMS place les données dans un attribut cartographique DynamoDB unique et plat sur la source. Cet attribut est appelé « \$1doc ». Ce placement s'applique à toute colonne de la table source non listée dans la liste d'attributs `exclude-columns`. 

Une des manières de comprendre la différence entre les paramètres `rule-action` `map-record-to-record` et `map-record-to-document` consiste à voir les deux paramètres en action. Dans cet exemple, imaginons que vous commencez avec une ligne de table d'une base de données relationnelle, présentant la structure et les données suivantes :

![\[Exemple de base de données\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-dynamodb1.png)


Pour migrer ces informations vers DynamoDB, vous créez des règles pour mapper les données dans un élément de la table DynamoDB. Notez les colonnes listées pour le paramètre `exclude-columns`. Ces colonnes ne sont pas directement mappées à la cible. Le mappage d'attributs est plutôt utilisé pour combiner les données dans de nouveaux éléments, tels que where *FirstName*et *LastName*sont regroupés pour figurer *CustomerName*sur la cible DynamoDB. *NickName*et les *revenus* ne sont pas exclus.

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

À l'aide de `rule-action` ce paramètre *map-record-to-record*, les données *NickName*et les *revenus* sont mappés aux éléments du même nom dans la cible DynamoDB. 

![\[Commencez avec AWS DMS\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-dynamodb2.png)


Supposons toutefois que vous utilisiez les mêmes règles mais que vous modifiiez le `rule-action` paramètre en *map-record-to-document*. Dans ce cas, les colonnes non répertoriées dans le `exclude-columns` paramètre, *NickName*et le *revenu*, sont mappées à un élément *\$1doc*.

![\[Commencez avec AWS DMS\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-dynamodb3.png)


### Utilisation d'expressions de condition personnalisées avec le mappage d'objet
<a name="CHAP_Target.DynamoDB.ObjectMapping.ConditionExpression"></a>

Vous pouvez utiliser une fonctionnalité de DynamoDB nommée « expressions conditionnelles » pour manipuler les données qui sont écrites dans une table DynamoDB. Pour plus d’informations sur les expressions de condition dans DynamoDB, consultez [Expressions de condition](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html).

Une expression de condition est constituée des éléments suivants : 
+ une expression (obligatoire) 
+ valeurs des attributs d'expression (obligatoire). Spécifie une structure DynamoDB json de la valeur de l'attribut. Cela est utile pour comparer un attribut à une valeur dans DynamoDB que vous ne connaîtrez peut-être pas avant l'exécution. Vous pouvez définir une valeur d'attribut d'expression comme espace réservé pour une valeur réelle.
+ noms d'attributs d'expression (obligatoire). Cela permet d'éviter les conflits potentiels avec les mots réservés DynamoDB, les noms d'attributs contenant des caractères spéciaux, etc.
+ options pour déterminer quand utiliser l'expression de condition (facultatif). La valeur par défaut est apply-during-cdc = false et apply-during-full-load = true

La structure de la règle est la suivante :

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

L'exemple suivant illustre les sections utilisées pour l'expression de condition.

![\[Commencez avec AWS DMS\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-Tasks-conditional1.png)


### Utilisation du mappage d'attribut avec le mappage d'objet
<a name="CHAP_Target.DynamoDB.ObjectMapping.AttributeMapping"></a>

La mappage d'attribut vous permet de spécifier une chaîne modèle, en utilisant les noms de la colonne source pour restructurer les données sur la cible. Aucun formatage n'est effectué, autre que ce qui est spécifié par l'utilisateur dans le modèle.

L'exemple suivant illustre la structure de la base de données source et la structure de cible DynamoDB souhaitée. La structure de la source est illustrée en premier, dans ce cas, une base de données Oracle, puis la structure souhaitée des données dans DynamoDB. L'exemple se termine avec le JSON utilisé pour créer la structure cible souhaitée.

La structure des données Oracle est la suivante :


****  

| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateOfBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Clé primaire | N/A |  | 
| Randy | Marsh | 5 | 221B Baker Street  | 1234567890 | 31 Spooner Street, Quahog  | 9876543210  | 02/29/1988  | 

La structure des données DynamoDB est la suivante :


****  

| CustomerName | StoreId | ContactDetails | DateOfBirth | 
| --- | --- | --- | --- | 
| Clé de partition | Clé de tri | N/A | 
| <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> | 

Le JSON suivant illustre le mappage d'objet et le mappage de colonne utilisés pour parvenir à la structure DynamoDB :

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

Une autre façon d'utiliser le mappage de colonne consiste à utiliser le format DynamoDB comme type de document. L'exemple de code suivant utilise *dynamodb-map* comme `attribute-sub-type` pour la mappage d'attribut. 

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

Au lieu de cela`dynamodb-map`, vous pouvez utiliser le mappage d'attributs `dynamodb-list` as attribute-sub-type for, comme indiqué dans l'exemple suivant.

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

### Exemple 1 : utilisation du mappage d'attribut avec le mappage d'objet
<a name="CHAP_Target.DynamoDB.ColumnMappingExample1"></a>

L'exemple suivant fait migrer les données de deux tables de base de données MySQL, *nfl\$1data et *sport\$1team**, vers deux tables DynamoDB appelées et. *NFLTeams*SportTeams** La structure des tables et le JSON utilisés pour mapper les données depuis les tables de base de données MySQL vers les tables DynamoDB sont les suivants :

La structure de la table de base de données MySQL *nfl\$1data* est indiquée ci-dessous :

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

La structure de la table de base de données MySQL *sport\$1team* est indiquée ci-dessous :

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

Les règles de mappage de table utilisées pour mapper les deux tables vers les deux tables DynamoDB sont indiquées ci-dessous :

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

L'exemple de sortie pour la table *NFLTeams*DynamoDB est illustré ci-dessous :

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

L'exemple de sortie pour la table SportsTeams *DynamoDB* est illustré ci-dessous :

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

## Types de données cibles pour DynamoDB
<a name="CHAP_Target.DynamoDB.DataTypes"></a>

Le point de terminaison DynamoDB pour AWS DMS prend en charge la plupart des types de données DynamoDB. Le tableau suivant indique les types de données AWS DMS cibles Amazon pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).

Lors de AWS DMS la migration de données à partir de bases de données hétérogènes, nous mappons les types de données de la base de données source à des types de données intermédiaires appelés types de AWS DMS données. Nous mappons ensuite les types de données intermédiaires vers les types de données cibles. Le tableau suivant indique chaque type de AWS DMS données et le type de données auquel il est mappé dans DynamoDB :


| AWS DMS type de données | Type de données DynamoDB | 
| --- | --- | 
|  String  |  Chaîne  | 
|  WString  |  String  | 
|  Booléen  |  Booléen  | 
|  Date  |  String  | 
|  DateTime  |  String  | 
|  INT1  |  Number  | 
|  INT2  |  Number  | 
|  INT4  |  Number  | 
|  INT8  |  Number  | 
|  Numérique  |  Number  | 
|  Real4  |  Number  | 
|  Real8  |  Number  | 
|  UINT1  |  Number  | 
|  UINT2  |  Number  | 
|  UINT4  |  Number  | 
| UINT8 | Number | 
| CLOB | String | 

# Utilisation d'Amazon Kinesis Data Streams comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Kinesis"></a>

Vous pouvez l'utiliser AWS DMS pour migrer des données vers un flux de données Amazon Kinesis. Les flux de données Amazon Kinesis font partie du service Amazon Kinesis Data Streams. Vous pouvez utiliser des flux de données Kinesis pour collecter et traiter des flux volumineux d’enregistrements de données en temps réel.

Un flux de données Kinesis se compose de partitions. Les *partitions* sont des séquences d'enregistrements de données identifiées de manière unique dans un flux. Pour plus d’informations sur les partitions dans Amazon Kinesis Data Streams, consultez [Partition](https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html#shard) dans le *Guide du développeur Amazon Kinesis Data Streams*.

AWS Database Migration Service publie des enregistrements dans un flux de données Kinesis à l'aide de JSON. Au cours de la conversion, AWS DMS sérialise chaque enregistrement de la base de données source dans une paire attribut-valeur au format JSON ou un format de message JSON\$1UNFORMATED. Un format de message JSON\$1UNFORMATED est une chaîne JSON à une seule ligne avec un délimiteur de nouvelle ligne. Il permet à Amazon Data Firehose de fournir des données Kinesis à une destination Amazon S3, puis de les interroger à l'aide de différents moteurs de requête, dont Amazon Athena.

Utilisez le mappage d'objet pour migrer vos données de n'importe quelle source de données prise en charge vers un flux cible. Avec le mappage d'objet, vous déterminez la façon de structurer les enregistrements de données dans le flux. Vous définissez également une clé de partition pour chaque table, que Kinesis Data Streams utilise pour regrouper les données dans ses partitions. 

AWS DMS définit également plusieurs valeurs de paramètres Kinesis Data Streams. Le coût de création de la table dépend de la quantité de données et du nombre de tables à migrer.

**Note**  
L'option **Mode SSL** de la AWS DMS console ou de l'API ne s'applique pas à certains services de streaming de données et NoSQL tels que Kinesis et DynamoDB. Ils sont sécurisés par défaut, ce qui AWS DMS montre que le paramètre du mode SSL est égal à aucun (**mode SSL = aucun**). Vous n’avez pas besoin de fournir de configuration supplémentaire pour que votre point de terminaison utilise le protocole SSL. Par exemple, lorsque Kinesis est utilisé comme point de terminaison cible, il est sécurisé par défaut. Tous les appels d'API adressés à Kinesis utilisent le protocole SSL, il n'est donc pas nécessaire d'ajouter une option SSL supplémentaire sur le AWS DMS terminal. Vous pouvez placer et récupérer des données en toute sécurité via des points de terminaison SSL à l’aide du protocole HTTPS, utilisé par AWS DMS par défaut lors de la connexion à un flux de données Kinesis.

**Paramètres de point de terminaison Kinesis Data Streams**

Lorsque vous utilisez les points de terminaison cibles de Kinesis Data Streams, vous pouvez obtenir les détails des transactions et des contrôles à l'aide de l'option `KinesisSettings` de l'API. AWS DMS 

Vous pouvez définir les paramètres de connexion de l’une des manières suivantes :
+ Dans la AWS DMS console, à l'aide des paramètres du point de terminaison.
+ Dans la CLI, en utilisant l'`kinesis-settings`option de la [CreateEndpoint](https://docs.aws.amazon.com/dms/latest/APIReference/API_CreateEndpoint.html)commande.

Dans l’interface CLI, utilisez les paramètres de demande de l’option `kinesis-settings` suivants :
**Note**  
La prise en charge des paramètres de point de terminaison `IncludeNullAndEmpty` est disponible dans AWS DMS versions 3.4.1 et ultérieures. Mais la prise en charge des autres paramètres de point de terminaison suivants pour les cibles Kinesis Data Streams est disponible dans AWS DMS. 
+ `MessageFormat` : format de sortie pour les enregistrements créés sur le point de terminaison. Le format du message est `JSON` (par défaut) ou `JSON_UNFORMATTED` (une seule ligne sans onglet).
+ `IncludeControlDetails` : affiche des informations de contrôle détaillées pour la définition de table, la définition de colonne et les modifications de table et de colonne dans la sortie du message Kinesis. La valeur par défaut est `false`.
+ `IncludeNullAndEmpty` : inclut les colonnes NULL et vides dans la cible. La valeur par défaut est `false`.
+ `IncludePartitionValue` : affiche la valeur de partition dans la sortie du message Kinesis, sauf si le type de partition est `schema-table-type`. La valeur par défaut est `false`.
+ `IncludeTableAlterOperations` : inclut toutes les opérations DDL (Data Definition Language) qui modifient la table dans les données de contrôle, telles que `rename-table`, `drop-table`, `add-column`, `drop-column` et `rename-column`. La valeur par défaut est `false`.
+ `IncludeTransactionDetails` : fournit des informations détaillées sur les transactions à partir de la base de données source. Ces informations comprennent un horodatage de validation, une position de journal et des valeurs pour `transaction_id`, `previous_transaction_id` et `transaction_record_id `(le décalage d'enregistrement dans une transaction). La valeur par défaut est `false`.
+ `PartitionIncludeSchemaTable` : préfixe les noms de schéma et de table aux valeurs de partition, lorsque le type de partition est `primary-key-type`. Cela augmente la distribution des données entre les fragments Kinesis. Par exemple, supposons qu'un schéma `SysBench` comporte des milliers de tables et que chaque table n'ait qu'une plage limitée pour une clé primaire. Dans ce cas, la même clé primaire est envoyée à partir de milliers de tables vers le même fragment, ce qui provoque une limitation. La valeur par défaut est `false`.
+ `UseLargeIntegerValue`— Utilisez jusqu'à 18 chiffres au lieu de convertir les entiers en doubles, disponible à partir de AWS DMS la version 3.5.4. La valeur par défaut est false.

L’exemple suivant illustre l’option `kinesis-settings` utilisée avec un exemple de commande `create-endpoint` émise à l’aide d’ AWS CLI.

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

**Paramètres de tâche de chargement complet multithread**

Pour accélérer le transfert, AWS DMS prend en charge le chargement complet multithread vers une instance cible Kinesis Data Streams. DMS prend en charge ce traitement multithread avec des paramètres de tâche, notamment les suivants :
+ `MaxFullLoadSubTasks` : utilisez cette option pour indiquer le nombre maximal de tables sources à charger en parallèle. DMS charge chaque table dans sa table cible Kinesis correspondante à l’aide d’une sous-tâche dédiée. La valeur par défaut est 8 ; la valeur maximale 49.
+ `ParallelLoadThreads`— Utilisez cette option pour spécifier le nombre de threads AWS DMS utilisés pour charger chaque table dans sa table cible Kinesis. La valeur maximale pour une cible Kinesis Data Streams est de 32. Vous pouvez demander une augmentation de cette limite maximale.
+ `ParallelLoadBufferSize` : utilisez cette option pour spécifier le nombre maximal d’enregistrements à stocker dans la mémoire tampon utilisée par les threads de chargement parallèles pour charger les données dans la cible Kinesis. La valeur par défaut est 50. La valeur maximale est 1 000. Utilisez ce paramètre avec `ParallelLoadThreads`. `ParallelLoadBufferSize` est valide uniquement dans le cas de plusieurs threads.
+ `ParallelLoadQueuesPerThread` : utilisez cette option pour spécifier le nombre de files d’attente auxquelles chaque thread simultané accède pour extraire les enregistrements de données des files d’attente et générer un chargement par lots pour la cible. La valeur par défaut est 1. Toutefois, pour les cibles Kinesis de différentes tailles de charge utile, la plage valide est comprise entre 5 et 512 files d’attente par thread.

**Paramètres de tâche de chargement CDC multithread**

Vous pouvez utiliser les paramètres de tâche afin d’améliorer les performances de la capture des données de modification (CDC) pour les points de terminaison cibles de streaming des données en temps réel, comme Kinesis et modifier le comportement de l’appel d’API `PutRecords`. Pour ce faire, vous pouvez spécifier le nombre de threads simultanés, les files d'attente par thread et le nombre d'enregistrements à stocker dans un tampon à l'aide de la tâche `ParallelApply*`. Par exemple, supposons que vous souhaitiez effectuer un chargement CDC et appliquer 128 threads en parallèle. Vous souhaitez également accéder à 64 files d'attente par thread, avec 50 enregistrements stockés par tampon. 

Pour améliorer les performances du CDC, AWS DMS prend en charge les paramètres de tâche suivants :
+ `ParallelApplyThreads`— Spécifie le nombre de threads simultanés AWS DMS utilisés lors d'un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible Kinesis. La valeur par défaut est zéro (0) et la valeur maximale est 32.
+ `ParallelApplyBufferSize` : spécifie le nombre maximal d’enregistrements à stocker dans chaque file d’attente de mémoire tampon pour que les threads simultanés soient transférés vers un point de terminaison cible Kinesis lors d’un chargement CDC. La valeur par défaut est 100 et la valeur maximale est 1 000. Utilisez cette option lorsque `ParallelApplyThreads` spécifie plusieurs threads. 
+ `ParallelApplyQueuesPerThread` : spécifie le nombre de files d’attente auxquelles chaque thread accède pour extraire les enregistrements de données des files d’attente et générer un chargement par lots pour un point de terminaison Kinesis pendant la CDC. La valeur par défaut est 1 et la valeur maximale est 512.

Lorsque vous utilisez les paramètres de tâche `ParallelApply*`, la valeur par défaut `partition-key-type` est la valeur `primary-key` de la table, pas `schema-name.table-name`.

## Utilisation d’une image antérieure pour afficher les valeurs d’origine des lignes CDC pour un flux de données Kinesis en tant que cible
<a name="CHAP_Target.Kinesis.BeforeImage"></a>

Lorsque vous écrivez des mises à jour de CDC sur une cible de diffusion de données comme Kinesis, vous pouvez afficher les valeurs d’origine d’une ligne de base de données source avant de les modifier par une mise à jour. Pour ce faire, AWS DMS remplit une *image antérieure* des événements de mise à jour en fonction des données fournies par le moteur de base de données source. 

Différents moteurs de base de données source fournissent différentes quantités d'informations pour une image antérieure : 
+ Oracle met uniquement à jour des colonnes si elles changent. 
+ PostgreSQL fournit uniquement des données pour les colonnes qui font partie de la clé primaire (modifiée ou non). Pour fournir des données pour toutes les colonnes (modifiées ou non), vous devez définir `REPLICA_IDENTITY` sur `FULL` au lieu de `DEFAULT`. Notez que vous devez choisir la valeur de `REPLICA_IDENTITY` avec soin pour chaque table. Si vous définissez `REPLICA_IDENTITY` sur `FULL`, toutes les valeurs de colonne sont écrites en continu dans la journalisation WAL. Cela peut entraîner des problèmes de performances ou de ressources avec les tables qui sont fréquemment mises à jour.
+ MySQL fournit généralement des données pour toutes les colonnes, à l’exception des types de données BLOB et CLOB (modifiés ou non).

Pour activer avant l'imagerie pour ajouter des valeurs d'origine de la base de données source à la sortie AWS DMS , utilisez le paramètre de tâche `BeforeImageSettings` ou le paramètre `add-before-image-columns`. Ce paramètre applique une règle de transformation de colonne. 

`BeforeImageSettings` ajoute un nouvel attribut JSON à chaque opération de mise à jour avec des valeurs collectées à partir du système de base de données source, comme indiqué ci-dessous.

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

**Note**  
S'applique uniquement `BeforeImageSettings` aux AWS DMS tâches contenant un composant CDC, telles que les tâches à chargement complet plus CDC (qui migrent les données existantes et répliquent les modifications en cours), ou aux tâches CDC uniquement (qui répliquent uniquement les modifications de données). N’appliquez pas les `BeforeImageSettings` aux tâches à pleine charge uniquement.

Pour les options `BeforeImageSettings`, les conditions suivantes s'appliquent :
+ Définissez l'option `EnableBeforeImage` sur `true` pour activer la génération d’image antérieure. La valeur par défaut est `false`. 
+ Utilisez l'option `FieldName` pour attribuer un nom au nouvel attribut JSON. Quand `EnableBeforeImage` est `true`, `FieldName` est obligatoire et ne peut pas être vide.
+ L'option `ColumnFilter` spécifie une colonne à ajouter en utilisant la génération d’image antérieure. Pour ajouter uniquement des colonnes faisant partie des clés primaires de la table, utilisez la valeur par défaut, `pk-only`. Pour ajouter une colonne ayant une valeur d'image antérieure, utilisez `all`. Notez que l’image antérieure ne contient pas de colonnes avec des types de données LOB, tels que CLOB ou BLOB.

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

**Note**  
Les cibles Amazon S3 ne prennent pas en charge `BeforeImageSettings`. Pour les cibles S3, utilisez uniquement la règle de transformation `add-before-image-columns` à effectuer avant la génération d’images pendant la CDC.

### Utilisation d'une règle de transformation d'image antérieure
<a name="CHAP_Target.Kinesis.BeforeImage.Transform-Rule"></a>

Au lieu des paramètres de tâche, vous pouvez utiliser le paramètre `add-before-image-columns`, qui applique une règle de transformation de colonne. Avec ce paramètre, vous pouvez activer la génération d’image antérieure pendant la CDC sur des cibles de streaming de données comme Kinesis. 

En utilisant `add-before-image-columns` dans une règle de transformation, vous pouvez exercer un contrôle plus précis sur les résultats de l'image antérieure. Les règles de transformation vous permettent d'utiliser un localisateur d'objets qui vous fournit un contrôle sur les tables sélectionnées pour la règle. En outre, vous pouvez enchaîner les règles de transformation, ce qui permet d'appliquer différentes règles à différentes tables. Vous pouvez ensuite manipuler les colonnes produites à l'aide d'autres règles. 

**Note**  
N'utilisez pas le paramètre `add-before-image-columns` avec le paramètre de tâche `BeforeImageSettings` dans la même tâche. N’utilisez pas les deux, pour une seule tâche.

Un type de règle `transformation` avec le paramètre `add-before-image-columns` d'une colonne doit fournir une section `before-image-def`. Vous en trouverez un exemple ci-dessous.

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

La valeur de `column-prefix` est ajoutée à un nom de colonne et la valeur par défaut de `column-prefix` est `BI_`. La valeur de `column-suffix` est ajoutée au nom de la colonne et la valeur par défaut est vide. Ne définissez pas les deux `column-prefix` et `column-suffix` sur des chaînes vides.

Choisissez une valeur pour `column-filter`. Pour ajouter uniquement les colonnes qui font partie des clés primaires de la table, choisissez `pk-only` . Choisissez `non-lob` d'ajouter uniquement des colonnes qui ne sont pas de type LOB. Ou choisissez `all` d'ajouter une colonne qui a une valeur d’image antérieure.

### Exemple de règle de transformation d'image antérieure
<a name="CHAP_Target.Kinesis.BeforeImage.Example"></a>

La règle de transformation de l'exemple suivant ajoute une nouvelle colonne appelée `BI_emp_no` dans la cible. Ainsi, une instruction comme `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` remplit le champ `BI_emp_no` avec 1. Lorsque vous écrivez des mises à jour de CDC sur des cibles Amazon S3, la colonne `BI_emp_no` permet de savoir quelle ligne d’origine a été mise à jour.

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

Pour plus d'informations sur l'utilisation de l'action de règle `add-before-image-columns`, consultez [Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Conditions préalables à l'utilisation d'un flux de données Kinesis comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites"></a>

### Rôle IAM pour l'utilisation d'un flux de données Kinesis comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.IAM"></a>

Avant de configurer un flux de données Kinesis comme cible AWS DMS, assurez-vous de créer un rôle IAM. Ce rôle doit permettre AWS DMS d'assumer et d'accorder l'accès aux flux de données Kinesis vers lesquels la migration est effectuée. L'ensemble d'autorisations d'accès minimum est indiqué dans la stratégie IAM suivante.

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

****  

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

------

Le rôle que vous utilisez pour la migration vers un flux de données Kinesis doit bénéficier des autorisations suivantes.

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

****  

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

------

### Accès à un flux de données Kinesis en tant que cible pour AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.Access"></a>

Dans les AWS DMS versions 3.4.7 et supérieures, pour vous connecter à un point de terminaison Kinesis, vous devez effectuer l'une des opérations suivantes :
+ Configurez DMS pour qu’il utilise les points de terminaison d’un VPC. Pour plus d’informations sur la configuration de DMS pour qu’il utilise les points de terminaison d’un VPC, consultez [Configuration des points de terminaison VPC pour AWS DMS](CHAP_VPC_Endpoints.md).
+ Configurez DMS pour qu’il utilise des routes publiques, c’est-à-dire qu’il rende votre instance de réplication publique. Pour plus d’informations sur les instances de réplication publiques, consultez [Instances de réplication publiques et privées](CHAP_ReplicationInstance.PublicPrivate.md).

## Limitations liées à l'utilisation de Kinesis Data Streams comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Limitations"></a>

Les limitations suivantes s’appliquent lorsque vous utilisez Kinesis Data Streams en tant que cible :
+ AWS DMS publie chaque mise à jour d'un seul enregistrement de la base de données source sous la forme d'un enregistrement de données dans un flux de données Kinesis donné, quelles que soient les transactions. Toutefois, vous pouvez inclure des détails de transaction pour chaque enregistrement de données à l'aide des paramètres pertinents de l'API `KinesisSettings`.
+ Le Mode LOB complet n'est pas pris en charge.
+ La taille LOB maximale prise en charge est de 1 Mo.
+ Kinesis Data Streams ne prend pas en charge la déduplication. Les applications qui consomment des données d'un flux doivent gérer les enregistrements en double. Pour plus d’informations, consultez [Gestion des enregistrements en double](https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-duplicates.html) dans le *Guide du développeur Amazon Kinesis Data Streams*.
+ AWS DMS prend en charge les quatre formes suivantes pour les clés de partition :
  + `SchemaName.TableName` : une combinaison du nom du schéma et du nom de la table.
  + `${AttributeName}` : la valeur d'un des champs du fichier JSON, ou la clé primaire de la table dans la base de données source.
  + `transaction-id`: ID de transaction CDC. Tous les enregistrements d'une même transaction sont placés sur la même partition.
  + `constant`: valeur littérale fixe pour chaque enregistrement, indépendamment de la table ou des données. Tous les enregistrements sont envoyés à la même valeur de clé de partition « constante », ce qui permet un ordre global strict dans toutes les tables.

  ```
  {
      "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"
      }
  }
  ```
+ Pour en savoir plus sur le chiffrement de vos données au repos dans Kinesis Data Streams, consultez [Protection des données dans Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/server-side-encryption.html.html) dans le *Guide du développeur AWS Key Management Service *. 
+ Le paramètre du point de `IncludeTransactionDetails` terminaison n'est pris en charge que lorsque le point de terminaison source est Oracle, SQL Server, PostgreSQL ou MySQL. Pour les autres types de point de terminaison source, les détails des transactions ne seront pas inclus.
+ `BatchApply` n’est pas pris en charge pour un point de terminaison Kinesis. L'utilisation de Batch Apply (par exemple, le paramètre de tâche de métadonnées `BatchApplyEnabled` cible) pour une cible Kinesis entraîne l'échec de la tâche et la perte de données. Ne l'activez pas `BatchApply` lorsque vous utilisez Kinesis comme point de terminaison cible.
+ Les cibles Kinesis ne sont prises en charge que pour un flux de données Kinesis dans le même AWS compte et le même Région AWS que l'instance de réplication.
+ Lors de la migration depuis une source MySQL, les BeforeImage données n'incluent pas les types de données CLOB et BLOB. Pour de plus amples informations, veuillez consulter [Utilisation d’une image antérieure pour afficher les valeurs d’origine des lignes CDC pour un flux de données Kinesis en tant que cible](#CHAP_Target.Kinesis.BeforeImage).
+ AWS DMS ne prend pas en charge la migration de valeurs de type de `BigInt` données comportant plus de 16 chiffres. Pour contourner cette limitation, vous pouvez utiliser la règle de transformation suivante pour convertir la colonne `BigInt` en chaîne. Pour plus d’informations sur les règles de transformation, consultez [Règles et actions de transformation](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
      }
  }
  ```
+ Lorsque plusieurs opérations DML au sein d'une même transaction modifient une colonne LOB (Large Object) de la base de données source, la base de données cible ne conserve que la valeur LOB finale de la dernière opération de cette transaction. Les valeurs LOB intermédiaires définies par les opérations précédentes de la même transaction sont remplacées, ce qui peut entraîner des pertes de données ou des incohérences. Ce comportement est dû à la manière dont les données LOB sont traitées lors de la réplication.
+ AWS DMS ne prend pas en charge les données source contenant des `'\0'` caractères incorporés lors de l'utilisation de Kinesis comme point de terminaison cible. Les données contenant des `'\0'` caractères incorporés seront tronquées au premier `'\0'` caractère.

## Utilisation du mappage d’objet pour migrer les données vers un flux de données Kinesis
<a name="CHAP_Target.Kinesis.ObjectMapping"></a>

AWS DMS utilise des règles de mappage de tables pour mapper les données de la source au flux de données Kinesis cible. Pour mapper des données vers un flux cible, vous utilisez un type de règles de mappage de tables qu'on appelle le mappage d'objet. Utilisez le mappage d’objet pour définir la façon dont les enregistrements de données de la source sont mappés aux enregistrements de données publiés dans le flux de données Kinesis. 

Les flux de données Kinesis ne disposent pas d’une structure prédéfinie autre que le fait d’avoir une clé de partition. Dans une règle de mappage d'objets, les valeurs possibles de `partition-key-type` pour un enregistrement de données sont `schema-table`, `transaction-id`, `primary-key`, `constant` et `attribute-name`.

Pour créer une règle de mappage d'objet, spécifiez `rule-type` comme `object-mapping`. Cette règle spécifie le type de mappage d'objet que vous souhaitez utiliser. 

La structure de la règle est la suivante.

```
{
    "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 prend actuellement en charge `map-record-to-record` et `map-record-to-document` en tant que seules valeurs valides pour le `rule-action` paramètre. Ces paramètres affectent les valeurs qui ne sont pas exclues de la liste d’attributs `exclude-columns`. Les `map-record-to-document` valeurs `map-record-to-record` et indiquent comment ces AWS DMS enregistrements sont gérés par défaut. Ces valeurs n'affectent en aucune façon les mappages d'attributs. 

Utilisez `map-record-to-record` lors d’une migration d’une base de données relationnelle vers un flux de données Kinesis. Ce type de règle utilise la valeur `taskResourceId.schemaName.tableName` de la base de données relationnelle comme clé de partition dans le flux de données Kinesis et crée un attribut pour chaque colonne de la base de données source. 

Lorsque vous utilisez `map-record-to-record`, notez ce qui suit :
+ Ce paramètre n’affecte que les colonnes exclues par la liste `exclude-columns`.
+ Pour chacune de ces colonnes, AWS DMS crée un attribut correspondant dans le sujet cible.
+ AWS DMS crée cet attribut correspondant, que la colonne source soit utilisée ou non dans un mappage d'attributs. 

Utilisez `map-record-to-document` pour placer des colonnes sources dans un document unique à plat du flux cible approprié en utilisant le nom d’attribut « \$1doc ». AWS DMS place les données dans un mappage unique à plat sur la source appelée « `_doc` ». Ce placement s'applique à toute colonne de la table source non listée dans la liste d'attributs `exclude-columns`.

Une manière de comprendre `map-record-to-record` est de le voir en action. Dans cet exemple, imaginons que vous commencez avec une ligne de table d'une base de données relationnelle, présentant la structure et les données suivantes :


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

Pour migrer ces informations d’un schéma nommé `Test` vers un flux de données Kinesis, vous créez des règles pour mapper les données au flux cible. La règle suivante illustre ce mappage. 

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

L’exemple qui suit illustre le format d’enregistrement résultant dans le flux de données Kinesis : 
+ StreamName: XXX
+ PartitionKey: Test.Customers //SchmaName.TableName
+ Data : //The following JSON message

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

Supposons toutefois que vous utilisiez les mêmes règles, mais que vous redéfinissiez le paramètre `rule-action` sur `map-record-to-document` et que vous excluiez certaines colonnes. La règle suivante illustre ce mappage.

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

Dans ce cas, les colonnes non répertoriées dans le paramètre `exclude-columns`, `FirstName`, `LastName`, `StoreId` et `DateOfBirth`, sont mappées à `_doc`. L’exemple qui suit illustre le format d’enregistrement résultant. 

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

### Restructuration de données avec le mappage d'attribut
<a name="CHAP_Target.Kinesis.AttributeMapping"></a>

Vous pouvez restructurer les données lors de leur migration vers un flux de données Kinesis à l’aide d’un mappage d’attribut. Par exemple, vous pourriez vouloir regrouper plusieurs champs de la source en un seul champ dans la cible. Le mappage d'attribut suivant illustre comment restructurer les données.

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

Pour définir une valeur constante pour`partition-key`, spécifiez`"partition-key-type: "constant"`, cela définit la valeur de partition sur`constant`. Par exemple, vous pouvez le faire pour forcer le stockage de toutes les données dans une seule partition. Le mappage suivant illustre cette approche. 

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

**Note**  
La valeur `partition-key` d'un enregistrement de contrôle correspondant à une table spécifique est `TaskId.SchemaName.TableName`. La valeur `partition-key` d'un enregistrement de contrôle correspondant à une tâche spécifique est le `TaskId` de cet enregistrement. La spécification d'une valeur `partition-key` dans le mappage d'objet n'a aucun impact sur la `partition-key` d'un enregistrement de contrôle.  
 Lorsqu'il `partition-key-type` est défini sur `attribute-name` dans une règle de mappage de table, vous devez spécifier`partition-key-name`, qui doit faire référence soit à une colonne de la table source, soit à une colonne personnalisée définie dans le mappage. En outre, `attribute-mappings` il doit être fourni pour définir la manière dont les colonnes source sont mappées au Kinesis Stream cible.

### Format de message pour Kinesis Data Streams
<a name="CHAP_Target.Kinesis.Messageformat"></a>

La sortie JSON est simplement une liste de paires clé-valeur. Un format de message JSON\$1UNFORMATED est une chaîne JSON à une seule ligne avec un délimiteur de nouvelle ligne.

AWS DMS fournit les champs réservés suivants pour faciliter la consommation des données issues des Kinesis Data Streams : 

**RecordType**  
Les enregistrements peuvent être de type Données ou Contrôle. *Les enregistrements de données* représentent les lignes réelles de la source. *Les enregistrements de contrôle* sont destinés à des événements importants dans le flux, par exemple un redémarrage de la tâche.

**Opération**  
Pour les enregistrements de données, l'opération peut être `load`,`insert`, `update` ou `delete`.  
Pour les enregistrements de contrôle, l’opération peut être `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` ou `column-type-change`.

**SchemaName**  
Schéma source de l'enregistrement. Ce champ peut être vide pour un enregistrement de contrôle.

**TableName**  
Table source de l'enregistrement. Ce champ peut être vide pour un enregistrement de contrôle.

**Horodatage**  
Horodatage de la construction du message JSON. Le champ est formaté selon le format ISO 8601.

# Utiliser Apache Kafka comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Kafka"></a>

Vous pouvez l'utiliser AWS DMS pour migrer des données vers un cluster Apache Kafka. Apache Kafka est une plateforme de streaming distribuée. Apache Kafka vous permet d’ingérer et de traiter des données de streaming en temps réel.

AWS propose également Amazon Managed Streaming pour Apache Kafka (Amazon MSK) à utiliser comme cible. AWS DMS Amazon MSK est un service de streaming Apache Kafka entièrement géré qui simplifie l’implémentation et la gestion des instances Apache Kafka. Il fonctionne avec les versions open source d'Apache Kafka, et vous accédez aux instances Amazon MSK en tant que AWS DMS cibles, exactement comme n'importe quelle instance Apache Kafka. Pour plus d’informations, consultez [Qu’est-ce qu’Amazon MSK ?](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) dans le *Guide du développeur Amazon Managed Streaming for Apache Kafka*.

Un cluster Kafka stocke les flux d’enregistrements dans des catégories appelées « rubriques », divisées en partitions. Les *partitions* sont des séquences identifiées de manière unique d’enregistrements de données (messages) dans une rubrique. Les partitions peuvent être réparties entre plusieurs agents dans un cluster pour permettre le traitement parallèle des enregistrements d’une rubrique. Pour de plus amples informations sur les rubriques et les partitions et leur distribution dans Apache Kafka, veuillez consulter [Rubriques et journaux](https://kafka.apache.org/documentation/#intro_topics) et [distribution](https://kafka.apache.org/documentation/#intro_distribution).

Votre cluster Kafka peut être une instance Amazon MSK, un cluster exécuté sur une instance Amazon EC2 ou un cluster sur site. Une instance Amazon MSK ou un cluster sur une instance Amazon EC2 peut se trouver dans le même VPC ou dans un autre VPC. Dans le cas d’un cluster sur site, vous pouvez utiliser votre propre serveur de noms sur site pour votre instance de réplication afin de résoudre le nom d’hôte du cluster. Pour en savoir plus sur la configuration d’un serveur de noms pour votre instance de réplication, consultez [Utilisation de votre propre serveur de noms sur site](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver). Pour plus d’informations sur la configuration d’un réseau, consultez [Configuration d'un réseau pour une instance de réplication](CHAP_ReplicationInstance.VPC.md).

Lorsque vous utilisez un cluster Amazon MSK, assurez-vous que son groupe de sécurité autorise l’accès à partir de votre instance de réplication. Pour en savoir plus sur la modification du groupe de sécurité d’un cluster Amazon MSK, consultez [Modification du groupe de sécurité d’un cluster Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/change-security-group.html).

AWS Database Migration Service publie des enregistrements dans un sujet Kafka à l'aide de JSON. Au cours de la conversion, AWS DMS sérialise chaque enregistrement de la base de données source dans une paire attribut-valeur au format JSON.

Utilisez le mappage d’objet pour migrer vos données de n’importe quelle source de données prise en charge vers un cluster Kafka cible. Avec le mappage d’objet, vous déterminez la façon de structurer les enregistrements de données dans la rubrique cible. Vous définissez également une clé de partition pour chaque table, qu'Apache Kafka utilise pour regrouper les données dans ses partitions. 

Actuellement, ne AWS DMS prend en charge qu'un seul sujet par tâche. Pour une seule tâche comportant plusieurs tables, tous les messages sont placés dans une seule rubrique. Chaque message inclut une section de métadonnées qui identifie le schéma et la table cibles. AWS DMS les versions 3.4.6 et supérieures prennent en charge la réplication multisujet à l'aide du mappage d'objets. Pour de plus amples informations, veuillez consulter [Réplication à plusieurs rubriques à l’aide du mappage d’objet](#CHAP_Target.Kafka.MultiTopic).

**Paramètres du point de terminaison Apache Kafka**

Vous pouvez spécifier les détails de connexion via les paramètres du point de terminaison dans la AWS DMS console ou via l'`--kafka-settings`option de la CLI. Les conditions requises pour chaque paramètre sont les suivantes :
+ `Broker` : spécifiez les emplacements d’un ou de plusieurs agents dans votre cluster Kafka sous la forme d’une liste séparée par des virgules de tous les éléments `broker-hostname:port`. Par exemple : `"ec2-12-345-678-901.compute-1.amazonaws.com:2345,ec2-10-987-654-321.compute-1.amazonaws.com:9876"`. Ce paramètre peut spécifier les emplacements d’un ou de tous les agents du cluster. Les agents de cluster communiquent tous pour gérer le partitionnement des enregistrements de données migrés vers la rubrique.
+ `Topic` : (facultatif) spécifiez le nom de rubrique avec une longueur maximale de 255 lettres et symboles. Vous pouvez utiliser le point (.), le trait de soulignement (\$1) et le moins (-). Les noms de rubrique avec un point (.) ou un trait de soulignement (\$1) peuvent entrer en collision dans des structures de données internes. Utilisez l'un ou l'autre de ces symboles, mais pas les deux dans le nom de la rubrique. Si vous ne spécifiez pas de nom de rubrique, AWS DMS `"kafka-default-topic"` utilisez-le comme rubrique de migration.
**Note**  
Pour AWS DMS créer soit un sujet de migration que vous spécifiez, soit le sujet par défaut, défini dans le `auto.create.topics.enable = true` cadre de la configuration de votre cluster Kafka. Pour de plus amples informations, consultez [Limitations liées à l'utilisation d'Apache Kafka comme cible pour AWS Database Migration Service](#CHAP_Target.Kafka.Limitations).
+ `MessageFormat` : format de sortie pour les enregistrements créés sur le point de terminaison. Le format du message est `JSON` (par défaut) ou `JSON_UNFORMATTED` (une seule ligne sans onglet).
+ `MessageMaxBytes` : taille maximale en octets des enregistrements créés sur le point de terminaison. La valeur par défaut est 1 000 000.
**Note**  
Vous ne pouvez utiliser la AWS CLI/SDK que pour passer à une valeur autre que celle par `MessageMaxBytes` défaut. Par exemple, pour modifier votre point de terminaison Kafka existant et redéfinir la valeur de `MessageMaxBytes`, utilisez la commande suivante.  

  ```
  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` : fournit des informations détaillées sur les transactions à partir de la base de données source. Ces informations comprennent un horodatage de validation, une position de journal et des valeurs pour `transaction_id`, `previous_transaction_id` et `transaction_record_id`(le décalage d'enregistrement dans une transaction). La valeur par défaut est `false`.
+ `IncludePartitionValue` : affiche la valeur de partition dans la sortie du message Kafka, sauf si le type de partition est `schema-table-type`. La valeur par défaut est `false`.
+ `PartitionIncludeSchemaTable` : préfixe les noms de schéma et de table aux valeurs de partition, lorsque le type de partition est `primary-key-type`. Cela augmente la distribution des données entre les partitions Kafka. Par exemple, supposons qu'un schéma `SysBench` comporte des milliers de tables et que chaque table n'ait qu'une plage limitée pour une clé primaire. Dans ce cas, la même clé primaire est envoyée à partir de milliers de tables vers la même partition, ce qui provoque une limitation. La valeur par défaut est `false`.
+ `IncludeTableAlterOperations` : inclut toutes les opérations DDL (Data Definition Language) qui modifient la table dans les données de contrôle, telles que `rename-table`, `drop-table`, `add-column`, `drop-column` et `rename-column`. La valeur par défaut est `false`. 
+ `IncludeControlDetails` : affiche les informations de contrôle détaillées pour la définition de table, la définition de colonne et les modifications de table et de colonne dans la sortie du message Kafka. La valeur par défaut est `false`.
+ `IncludeNullAndEmpty` : inclut les colonnes NULL et vides dans la cible. La valeur par défaut est `false`.
+ `SecurityProtocol` : définit une connexion sécurisée à un point de terminaison cible Kafka à l’aide du protocole TLS (Transport Layer Security). Les options sont `ssl-authentication`, `ssl-encryption` et `sasl-ssl`. L’utilisation de `sasl-ssl` requiert `SaslUsername` et `SaslPassword`.
+ `SslEndpointIdentificationAlgorithm`— Définit la vérification du nom d'hôte pour le certificat. Ce paramètre est pris en charge dans les AWS DMS versions 3.5.1 et ultérieures. Les options disponibles sont les suivantes : 
  + `NONE`: désactive la vérification du nom d'hôte du broker dans la connexion client.
  + `HTTPS`: Activez la vérification du nom d'hôte du broker dans la connexion client.
+ `useLargeIntegerValue`— Utilisez jusqu'à 18 chiffres au lieu de convertir les entiers en doubles, disponible à partir de AWS DMS la version 3.5.4. La valeur par défaut est false.

Vous pouvez augmenter la vitesse du transfert dans les paramètres. Pour ce faire, AWS DMS prend en charge un chargement complet multithread sur un cluster cible Apache Kafka. AWS DMS prend en charge ce multithreading avec des paramètres de tâche qui incluent les éléments suivants :
+ `MaxFullLoadSubTasks`— Utilisez cette option pour indiquer le nombre maximum de tables sources à charger en parallèle. AWS DMS charge chaque table dans la table cible Kafka correspondante à l'aide d'une sous-tâche dédiée. La valeur par défaut est 8 ; la valeur maximale 49.
+ `ParallelLoadThreads`— Utilisez cette option pour spécifier le nombre de threads AWS DMS utilisés pour charger chaque table dans sa table cible Kafka. La valeur maximale pour une cible Apache Kafka est 32. Vous pouvez demander une augmentation de cette limite maximale.
+ `ParallelLoadBufferSize` : utilisez cette option pour spécifier le nombre maximal d’enregistrements à stocker dans la mémoire tampon utilisée par les threads de chargement parallèles pour charger les données dans la cible Kafka. La valeur par défaut est 50. La valeur maximale est 1 000. Utilisez ce paramètre avec `ParallelLoadThreads`. `ParallelLoadBufferSize` est valide uniquement dans le cas de plusieurs threads.
+ `ParallelLoadQueuesPerThread` : utilisez cette option pour spécifier le nombre de files d’attente auxquelles chaque thread simultané accède pour extraire les enregistrements de données des files d’attente et générer un chargement par lots pour la cible. La valeur par défaut est 1. La valeur maximale est 512.

Vous pouvez améliorer les performances de capture des données de modification (CDC) pour les points de terminaison Kafka en ajustant les paramètres de tâche des threads parallèles et des opérations en bloc. Pour ce faire, vous pouvez spécifier le nombre de threads simultanés, les files d'attente par thread et le nombre d'enregistrements à stocker dans un tampon à l'aide de la tâche `ParallelApply*`. Par exemple, supposons que vous souhaitiez effectuer un chargement CDC et appliquer 128 threads en parallèle. Vous souhaitez également accéder à 64 files d'attente par thread, avec 50 enregistrements stockés par tampon. 

Pour améliorer les performances du CDC, AWS DMS prend en charge les paramètres de tâche suivants :
+ `ParallelApplyThreads`— Spécifie le nombre de threads simultanés AWS DMS utilisés lors d'un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible Kafka. La valeur par défaut est zéro (0) et la valeur maximale est 32.
+ `ParallelApplyBufferSize` : spécifie le nombre maximal d’enregistrements à stocker dans chaque file d’attente de mémoire tampon pour que les threads simultanés soient transférés vers un point de terminaison cible Kafka lors d’un chargement CDC. La valeur par défaut est 100 et la valeur maximale est 1 000. Utilisez cette option lorsque `ParallelApplyThreads` spécifie plusieurs threads. 
+ `ParallelApplyQueuesPerThread` : spécifie le nombre de files d’attente auxquelles chaque thread accède pour extraire les enregistrements de données des files d’attente et générer un chargement par lots pour un point de terminaison Kafka pendant la CDC. La valeur par défaut est 1. La valeur maximale est 512.

Lorsque vous utilisez les paramètres de tâche `ParallelApply*`, la valeur par défaut `partition-key-type` est la valeur `primary-key` de la table, pas `schema-name.table-name`.

## Connexion à Kafka à l’aide du protocole TLS (Transport Layer Security)
<a name="CHAP_Target.Kafka.TLS"></a>

Un cluster Kafka accepte les connexions sécurisées à l’aide du protocole TLS (Transport Layer Security). Avec DMS, vous pouvez utiliser l’une des trois options de protocole de sécurité suivantes pour sécuriser la connexion d’un point de terminaison Kafka.

**Chiffrement SSL (`server-encryption`)**  
Les clients valident l’identité du serveur par le biais du certificat du serveur. Une connexion chiffrée est alors établie entre le serveur et le client.

**Authentification SSL (`mutual-authentication`)**  
Le serveur et le client valident mutuellement leur identité respective via leurs propres certificats. Une connexion chiffrée est alors établie entre le serveur et le client.

**SASL-SSL (`mutual-authentication`)**  
La méthode SASL (Simple Authentication and Security Layer) remplace le certificat du client par un nom d’utilisateur et un mot de passe pour valider l’identité du client. Plus précisément, vous fournissez un nom d’utilisateur et un mot de passe enregistrés par le serveur afin que ce dernier puisse valider l’identité d’un client. Une connexion chiffrée est alors établie entre le serveur et le client.

**Important**  
Apache Kafka et Amazon MSK acceptent les certificats résolus. Il s’agit d’une limitation connue de Kafka et d’Amazon MSK qui doit être corrigée. Pour plus d’informations, consultez [Apache Kafka issues, KAFKA-3700](https://issues.apache.org/jira/browse/KAFKA-3700).  
Si vous utilisez Amazon MSK, pensez à utiliser des listes de contrôle d'accès (ACLs) pour contourner cette limitation connue. Pour plus d'informations sur son utilisation ACLs, consultez la ACLs section [Apache Kafka](https://docs.aws.amazon.com//msk/latest/developerguide/msk-acls.html) du guide du développeur *Amazon Managed Streaming for Apache Kafka*.  
Si vous utilisez un cluster Kafka autogéré, consultez [Comment dated 21/Oct/18](https://issues.apache.org/jira/browse/KAFKA-3700?focusedCommentId=16658376) pour en savoir plus sur la configuration de votre cluster.

### Utilisation du chiffrement SSL avec Amazon MSK ou un cluster Kafka autogéré
<a name="CHAP_Target.Kafka.TLS.SSLencryption"></a>

Vous pouvez utiliser le chiffrement SSL pour sécuriser la connexion d’un point de terminaison à Amazon MSK ou à un cluster Kafka autogéré. Lorsque vous utilisez la méthode d’authentification par chiffrement SSL, les clients valident l’identité d’un serveur par le biais du certificat du serveur. Une connexion chiffrée est alors établie entre le serveur et le client.

**Pour utiliser le chiffrement SSL pour vous connecter à Amazon MSK**
+ Définissez le paramètre de point de terminaison du protocole de sécurité (`SecurityProtocol`) à l’aide de l’option `ssl-encryption` lorsque vous créez votre point de terminaison Kafka cible. 

  L’exemple de code JSON suivant définit le protocole de sécurité sur le chiffrement SSL.

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

**Pour utiliser le chiffrement SSL pour un cluster Kafka autogéré**

1. Si vous utilisez une autorité de certification (CA) privée dans votre cluster Kafka sur site, chargez votre certificat de CA privée et obtenez un Amazon Resource Name (ARN). 

1. Définissez le paramètre de point de terminaison du protocole de sécurité (`SecurityProtocol`) à l’aide de l’option `ssl-encryption` lorsque vous créez votre point de terminaison Kafka cible. L’exemple de code JSON suivant définit le protocole de sécurité sur `ssl-encryption`.

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

1. Si vous utilisez une CA privée, définissez `SslCaCertificateArn` dans l’ARN obtenu à la première étape ci-dessus.

### Utilisation de l’authentification SSL
<a name="CHAP_Target.Kafka.TLS.SSLauthentication"></a>

Vous pouvez utiliser l’authentification SSL pour sécuriser la connexion d’un point de terminaison à Amazon MSK ou à un cluster Kafka autogéré.

Pour activer l’authentification client et le chiffrement à l’aide de l’authentification SSL pour se connecter à Amazon MSK, procédez comme suit :
+ Préparez une clé privée et un certificat public pour Kafka.
+ Chargez les certificats dans le gestionnaire de certificats DMS.
+ Créez un point de terminaison cible Kafka avec le certificat correspondant ARNs spécifié dans les paramètres du point de terminaison Kafka.

**Pour préparer une clé privée et un certificat public pour Amazon MSK**

1. Créez une instance EC2 et configurez un client de sorte qu’il utilise l’authentification, comme décrit dans les étapes 1 à 9 de la section [Authentification TLS mutuelle](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) du *Guide du développeur Amazon Managed Streaming for Apache Kafka*.

   Après avoir effectué ces étapes, vous disposez d’un Certificate-ARN (l’ARN de certificat public enregistré dans ACM) et d’une clé privée contenus dans un fichier `kafka.client.keystore.jks`.

1. Obtenez le certificat public et copiez-le dans le fichier `signed-certificate-from-acm.pem` à l’aide de la commande suivante :

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

   Cette commande renvoie des informations semblables à celles de l’exemple suivant :

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

   Vous copiez ensuite votre équivalent de `"123"` dans le fichier `signed-certificate-from-acm.pem`.

1. Pour obtenir la clé privée, importez la clé `msk-rsa` à partir de `kafka.client.keystore.jks to keystore.p12`, comme illustré dans l’exemple suivant.

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

1. Utilisez la commande suivante pour exporter `keystore.p12` au format `.pem`. 

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

   Le message **Entrer une phrase passe PEM** apparaît et identifie la clé appliquée pour chiffrer le certificat.

1. Supprimez les attributs de conteneur et les attributs de clé du fichier `.pem` pour vous assurer que la première ligne commence par la chaîne suivante.

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

**Pour charger un certificat public et une clé privée dans le gestionnaire de certificats DMS et tester la connexion à Amazon MSK**

1. Chargez dans le gestionnaire de certificats DMS à l’aide de la commande suivante.

   ```
   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. Créez un point de terminaison cible Amazon MSK et testez la connexion pour vous assurer que l’authentification TLS fonctionne.

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

**Important**  
Vous pouvez utiliser l’authentification SSL pour sécuriser une connexion à un cluster Kafka autogéré. Dans certains cas, vous devrez peut-être utiliser une autorité de certification (CA) privée dans votre cluster Kafka sur site. Si tel est le cas, chargez votre chaîne de CA, votre certificat public et votre clé privée dans le gestionnaire de certificats DMS. Utilisez ensuite l’Amazon Resource Name (ARN) correspondant dans vos paramètres de point de terminaison lorsque vous créez votre point de terminaison cible Kafka sur site.

**Pour préparer une clé privée et un certificat signé pour un cluster Kafka autogéré**

1. Générez une paire de clés comme indiqué dans l’exemple suivant.

   ```
   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. Générez une demande de signature de certificat (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. Utilisez la CA du magasin de clés de confiance de votre cluster pour signer la CSR. Si vous n’avez pas de CA, vous pouvez créer votre propre CA privée.

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

1. Importez `ca-cert` dans le magasin de clés de confiance et le magasin de clés du serveur. Si vous n’avez pas de magasin de clés de confiance, utilisez la commande suivante pour le créer et y importer `ca-cert `. 

   ```
   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. Signez le certificat.

   ```
   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. Importez le certificat signé dans le magasin de clés.

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

1. Utilisez la commande suivante pour importer la clé `on-premise-rsa` de `kafka.server.keystore.jks` dans `keystore.p12`.

   ```
   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. Utilisez la commande suivante pour exporter `keystore.p12` au format `.pem`.

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

1. Chargez `encrypted-private-server-key.pem`, `signed-certificate.pem` et `ca-cert` dans le gestionnaire de certificats DMS.

1. Créez un point de terminaison en utilisant le renvoyé 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
   ```

### Utilisation de l’authentification SASL-SSL pour se connecter à Amazon MSK
<a name="CHAP_Target.Kafka.TLS.SSL-SASL"></a>

La méthode SASL (Simple Authentication and Security Layer) utilise un nom d’utilisateur et un mot de passe pour valider l’identité d’un client et établit une connexion chiffrée entre le serveur et le client.

Pour utiliser SASL, vous devez commencer par créer un nom d’utilisateur et un mot de passe sécurisés lorsque vous configurez votre cluster Amazon MSK. Pour savoir comment configurer un nom d'utilisateur et un mot de passe sécurisés pour un cluster Amazon MSK, consultez la section [Configuration de l' SASL/SCRAM authentification pour un cluster Amazon MSK dans le guide du développeur](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) *Amazon Managed Streaming for Apache Kafka*.

Ensuite, lorsque vous créez votre point de terminaison cible Kafka, définissez le paramètre de point de terminaison du protocole de sécurité (`SecurityProtocol`) à l’aide de l’option `sasl-ssl`. Vous définissez également les options `SaslUsername` et `SaslPassword`. Assurez-vous qu’elles sont cohérentes avec le nom d’utilisateur et le mot de passe sécurisés que vous avez créés lorsque vous avez configuré votre cluster Amazon MSK pour la première fois, comme illustré dans l’exemple JSON suivant.

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

**Note**  
Actuellement, ne AWS DMS prend en charge que le protocole SASL-SSL public soutenu par une autorité de certification. DMS ne prend pas en charge le protocole SASL-SSL pour une utilisation avec Kafka autogéré soutenu par une autorité de certification privée.
Pour l'authentification SASL-SSL, AWS DMS prend en charge le mécanisme SCRAM-SHA-512 par défaut. AWS DMS les versions 3.5.0 et supérieures prennent également en charge le mécanisme Plain. Pour prendre en charge le mécanisme Plain, définissez le paramètre `SaslMechanism` du type de données d’API `KafkaSettings` sur `PLAIN`. Le type de données `PLAIN` est pris en charge par Kafka, mais pas par Amazon Kafka (MSK).

## Utilisation d'une image antérieure pour afficher les valeurs originales des lignes de la CDC pour Apache Kafka comme cible
<a name="CHAP_Target.Kafka.BeforeImage"></a>

Lorsque vous écrivez des mises à jour de CDC sur une cible de diffusion de données comme Kafka, vous pouvez afficher les valeurs d'origine d'une ligne de base de données source avant de les modifier par une mise à jour. Pour ce faire, AWS DMS remplit une *image antérieure* des événements de mise à jour en fonction des données fournies par le moteur de base de données source. 

Différents moteurs de base de données source fournissent différentes quantités d'informations pour une image antérieure : 
+ Oracle met uniquement à jour des colonnes si elles changent. 
+ PostgreSQL fournit uniquement des données pour les colonnes qui font partie de la clé primaire (modifiée ou non). Si la réplication logique est utilisée et que REPLICA IDENTITY FULL est défini pour la table source, vous pouvez obtenir des informations complètes avant et après sur la ligne écrite dans le WALs et disponibles ici.
+ MySQL fournit généralement des données pour toutes les colonnes (modifiées ou non).

Pour activer avant l'imagerie pour ajouter des valeurs d'origine de la base de données source à la sortie AWS DMS , utilisez le paramètre de tâche `BeforeImageSettings` ou le paramètre `add-before-image-columns`. Ce paramètre applique une règle de transformation de colonne. 

`BeforeImageSettings` ajoute un nouvel attribut JSON à chaque opération de mise à jour avec des valeurs collectées à partir du système de base de données source, comme indiqué ci-dessous.

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

**Note**  
Appliquez les `BeforeImageSettings` à la charge complète et aux tâches CDC (qui migrent les données existantes et répliquent les modifications en cours), ou aux tâches CDC uniquement (qui répliquent les modifications de données uniquement). N’appliquez pas les `BeforeImageSettings` aux tâches à pleine charge uniquement.

Pour les options `BeforeImageSettings`, les conditions suivantes s'appliquent :
+ Définissez l'option `EnableBeforeImage` sur `true` pour activer la génération d’image antérieure. La valeur par défaut est `false`. 
+ Utilisez l'option `FieldName` pour attribuer un nom au nouvel attribut JSON. Quand `EnableBeforeImage` est `true`, `FieldName` est obligatoire et ne peut pas être vide.
+ L'option `ColumnFilter` spécifie une colonne à ajouter en utilisant la génération d’image antérieure. Pour ajouter uniquement des colonnes faisant partie des clés primaires de la table, utilisez la valeur par défaut, `pk-only`. Pour ajouter uniquement des colonnes qui ne sont pas de type LOB, utilisez `non-lob`. Pour ajouter une colonne ayant une valeur d'image antérieure, utilisez `all`. 

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

### Utilisation d'une règle de transformation d'image antérieure
<a name="CHAP_Target.Kafka.BeforeImage.Transform-Rule"></a>

Au lieu des paramètres de tâche, vous pouvez utiliser le paramètre `add-before-image-columns`, qui applique une règle de transformation de colonne. Avec ce paramètre, vous pouvez activer la génération d’image antérieure pendant la CDC sur des cibles de diffusion de données telles que Kafka.

En utilisant `add-before-image-columns` dans une règle de transformation, vous pouvez exercer un contrôle plus précis sur les résultats de l'image antérieure. Les règles de transformation vous permettent d'utiliser un localisateur d'objets qui vous fournit un contrôle sur les tables sélectionnées pour la règle. En outre, vous pouvez enchaîner les règles de transformation, ce qui permet d'appliquer différentes règles à différentes tables. Vous pouvez ensuite manipuler les colonnes produites à l'aide d'autres règles. 

**Note**  
N'utilisez pas le paramètre `add-before-image-columns` avec le paramètre de tâche `BeforeImageSettings` dans la même tâche. N’utilisez pas les deux, pour une seule tâche.

Un type de règle `transformation` avec le paramètre `add-before-image-columns` d'une colonne doit fournir une section `before-image-def`. Vous en trouverez un exemple ci-dessous.

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

La valeur de `column-prefix` est ajoutée à un nom de colonne et la valeur par défaut de `column-prefix` est `BI_`. La valeur de `column-suffix` est ajoutée au nom de la colonne et la valeur par défaut est vide. Ne définissez pas les deux `column-prefix` et `column-suffix` sur des chaînes vides.

Choisissez une valeur pour `column-filter`. Pour ajouter uniquement les colonnes qui font partie des clés primaires de la table, choisissez `pk-only` . Choisissez `non-lob` d'ajouter uniquement des colonnes qui ne sont pas de type LOB. Ou choisissez `all` d'ajouter une colonne qui a une valeur d’image antérieure.

### Exemple de règle de transformation d'image antérieure
<a name="CHAP_Target.Kafka.BeforeImage.Example"></a>

La règle de transformation de l'exemple suivant ajoute une nouvelle colonne appelée `BI_emp_no` dans la cible. Ainsi, une instruction comme `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` remplit le champ `BI_emp_no` avec 1. Lorsque vous écrivez des mises à jour de CDC sur des cibles Amazon S3, la colonne `BI_emp_no` permet de savoir quelle ligne d’origine a été mise à jour.

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

Pour plus d'informations sur l'utilisation de l'action de règle `add-before-image-columns`, consultez [Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Limitations liées à l'utilisation d'Apache Kafka comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Kafka.Limitations"></a>

Les limitations suivantes s'appliquent lorsque vous utilisez apache Kafka comme cible :
+ AWS DMS Les points de terminaison cibles de Kafka ne prennent pas en charge le contrôle d'accès IAM pour Amazon Managed Streaming for Apache Kafka (Amazon MSK).
+ Le Mode LOB complet n'est pas pris en charge.
+ Spécifiez un fichier de configuration Kafka pour votre cluster avec des propriétés permettant AWS DMS de créer automatiquement de nouveaux sujets. Incluez le paramètre, `auto.create.topics.enable = true`. Si vous utilisez Amazon MSK, vous pouvez spécifier la configuration par défaut lorsque vous créez votre cluster Kafka, puis redéfinir le paramètre `auto.create.topics.enable` sur `true`. Pour plus d’informations sur les paramètres de configuration par défaut, consultez [Configuration Amazon MSK par défaut](https://docs.aws.amazon.com/msk/latest/developerguide/msk-default-configuration.html) dans le *Guide du développeur Amazon Managed Streaming for Apache Kafka*. Si vous devez modifier un cluster Kafka existant créé à l'aide d'Amazon MSK, exécutez la AWS CLI commande `aws kafka create-configuration` pour mettre à jour votre configuration Kafka, comme dans l'exemple suivant :

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

  Ici, `//~/kafka_configuration` est le fichier de configuration que vous avez créé avec les paramètres de propriété requis.

  Si vous utilisez votre propre instance Kafka installée sur Amazon EC2, modifiez la configuration du cluster Kafka avec `auto.create.topics.enable = true` le paramètre AWS DMS permettant de créer automatiquement de nouveaux sujets, en utilisant les options fournies avec votre instance.
+ AWS DMS publie chaque mise à jour d'un seul enregistrement de la base de données source sous la forme d'un enregistrement de données (message) dans un sujet Kafka donné, quelles que soient les transactions.
+ AWS DMS prend en charge les quatre formes suivantes pour les clés de partition :
  + `SchemaName.TableName` : une combinaison du nom du schéma et du nom de la table.
  + `${AttributeName}` : la valeur d'un des champs du fichier JSON, ou la clé primaire de la table dans la base de données source.
  + `transaction-id`: ID de transaction CDC. Tous les enregistrements d'une même transaction sont placés sur la même partition.
  + `constant`: valeur littérale fixe pour chaque enregistrement, indépendamment de la table ou des données. Tous les enregistrements sont envoyés à la même valeur de clé de partition « constante », ce qui permet un ordre global strict dans toutes les tables.

  ```
  {
      "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"
      }
  }
  ```
+ Le paramètre du point de `IncludeTransactionDetails` terminaison n'est pris en charge que lorsque le point de terminaison source est Oracle, SQL Server, PostgreSQL ou MySQL. Pour les autres types de point de terminaison source, les détails des transactions ne seront pas inclus.
+ `BatchApply` n’est pas pris en charge pour un point de terminaison Kafka. L’utilisation de l’application par lots (par exemple, le paramètre de tâche de métadonnées cible `BatchApplyEnabled`) pour une cible Kafka peut entraîner une perte de données.
+ AWS DMS ne prend pas en charge la migration de valeurs de type de `BigInt` données comportant plus de 16 chiffres. Pour contourner cette limitation, vous pouvez utiliser la règle de transformation suivante pour convertir la colonne `BigInt` en chaîne. Pour plus d’informations sur les règles de transformation, consultez [Règles et actions de transformation](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 Les points de terminaison cibles de Kafka ne sont pas compatibles avec Amazon MSK servless.
+ Lors de la définition des règles de mappage, il n'est pas possible de disposer à la fois d'une règle de mappage d'objets et d'une règle de transformation. Vous ne devez définir qu'une seule règle. 
+ AWS DMS prend en charge l'authentification SASL pour les versions d'Apache Kafka jusqu'à 3.8. Si vous utilisez Kafka 4.0 ou une version ultérieure, vous ne pouvez vous connecter que sans authentification SASL.
+ AWS DMS ne prend pas en charge les données source contenant des `'\0'` caractères incorporés lors de l'utilisation de Kafka comme point de terminaison cible. Les données contenant des `'\0'` caractères incorporés seront tronquées au premier `'\0'` caractère.

## Utilisation du mappage d’objet pour migrer les données vers une rubrique Kafka
<a name="CHAP_Target.Kafka.ObjectMapping"></a>

AWS DMS utilise des règles de mappage de tables pour mapper les données de la source au sujet Kafka cible. Pour mapper des données à une rubrique cible, vous utilisez un type de règle de mappage de table appelé « mappage d’objet ». Vous utilisez le mappage d'objet pour définir la façon dont les enregistrements de données de la source sont mappés sur les enregistrements de données publiés dans une rubrique Kafka. 

Les rubriques Kafka ne disposent pas d'une structure prédéfinie autre que le fait d'avoir une clé de partition.

**Note**  
Vous n’avez pas besoin d’utiliser le mappage d’objet. Vous pouvez utiliser un mappage de table standard pour différentes transformations. Cependant, le type de clé de partition suivra les comportements par défaut suivants :   
La clé primaire est utilisée comme clé de partition pour le chargement complet.
Si aucun paramètre de tâche parallel-apply n’est utilisé, `schema.table` est utilisé comme clé de partition pour la CDC.
Si des paramètres de tâche parallel-apply sont utilisés, la clé primaire est utilisée comme clé de partition pour la CDC.

Pour créer une règle de mappage d'objet, spécifiez `rule-type` comme `object-mapping`. Cette règle spécifie le type de mappage d'objet que vous souhaitez utiliser. 

La structure de la règle est la suivante.

```
{
    "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 prend actuellement en charge `map-record-to-record` et `map-record-to-document` en tant que seules valeurs valides pour le `rule-action` paramètre. Ces paramètres affectent les valeurs qui ne sont pas exclues de la liste d’attributs `exclude-columns`. Les `map-record-to-document` valeurs `map-record-to-record` et indiquent comment ces AWS DMS enregistrements sont gérés par défaut. Ces valeurs n'affectent en aucune façon les mappages d'attributs. 

Utilisez `map-record-to-record` lors d'une migration d'une base de données relationnelle vers une rubrique Kafka. Ce type de règle utilise la valeur `taskResourceId.schemaName.tableName` de la base de données relationnelle comme clé de partition dans la rubrique Kafka, et crée un attribut pour chaque colonne dans la base de données source. 

Lorsque vous utilisez `map-record-to-record`, notez ce qui suit :
+ Ce paramètre n’affecte que les colonnes exclues par la liste `exclude-columns`.
+ Pour chacune de ces colonnes, AWS DMS crée un attribut correspondant dans le sujet cible.
+ AWS DMS crée cet attribut correspondant, que la colonne source soit utilisée ou non dans un mappage d'attributs. 

Une manière de comprendre `map-record-to-record` est de le voir en action. Dans cet exemple, imaginons que vous commencez avec une ligne de table d'une base de données relationnelle, présentant la structure et les données suivantes :


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

Pour migrer ces informations à partir d'un schéma nommé `Test` vers une rubrique Kafka, vous créez des règles pour mapper les données sur la rubrique cible. La règle suivante illustre ce mappage. 

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

Compte tenu d’une rubrique Kafka et d’une clé de partition (dans ce cas, `taskResourceId.schemaName.tableName`), l’exemple ci-dessous illustre le format d’enregistrement résultant à l’aide de nos exemples de données dans la rubrique cible Kafka : 

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

**Topics**
+ [Restructuration de données avec le mappage d'attribut](#CHAP_Target.Kafka.AttributeMapping)
+ [Réplication à plusieurs rubriques à l’aide du mappage d’objet](#CHAP_Target.Kafka.MultiTopic)
+ [Format de message pour Apache Kafka](#CHAP_Target.Kafka.Messageformat)

### Restructuration de données avec le mappage d'attribut
<a name="CHAP_Target.Kafka.AttributeMapping"></a>

Vous pouvez restructurer les données lors de leur migration vers une rubrique Kafka à l'aide d'un mappage d'attribut. Par exemple, vous pourriez vouloir regrouper plusieurs champs de la source en un seul champ dans la cible. Le mappage d'attribut suivant illustre comment restructurer les données.

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

Pour définir une valeur constante pour`partition-key`, spécifiez`"partition-key-type: "constant"`, cela définit la valeur de partition sur`constant`. Par exemple, vous pouvez le faire pour forcer le stockage de toutes les données dans une seule partition. Le mappage suivant illustre cette approche. 

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

**Note**  
La valeur `partition-key` d'un enregistrement de contrôle correspondant à une table spécifique est `TaskId.SchemaName.TableName`. La valeur `partition-key` d'un enregistrement de contrôle correspondant à une tâche spécifique est le `TaskId` de cet enregistrement. La spécification d'une valeur `partition-key` dans le mappage d'objet n'a aucun impact sur la `partition-key` d'un enregistrement de contrôle.  
 Lorsqu'il `partition-key-type` est défini sur `attribute-name` dans une règle de mappage de table, vous devez spécifier`partition-key-name`, qui doit faire référence soit à une colonne de la table source, soit à une colonne personnalisée définie dans le mappage. En outre, `attribute-mappings` il doit être fourni pour définir la manière dont les colonnes source sont mappées au sujet Kafka cible.

### Réplication à plusieurs rubriques à l’aide du mappage d’objet
<a name="CHAP_Target.Kafka.MultiTopic"></a>

Par défaut, les AWS DMS tâches migrent toutes les données sources vers l'une des rubriques Kafka suivantes :
+ Comme indiqué dans le champ **Rubrique** du point de terminaison AWS DMS cible.
+ Comme indiqué par `kafka-default-topic` si le champ **Rubrique** du point de terminaison cible n’est pas renseigné et que le paramètre `auto.create.topics.enable` Kafka est défini sur `true`.

Avec les versions 3.4.6 et supérieures AWS DMS du moteur, vous pouvez utiliser l'`kafka-target-topic`attribut pour associer chaque table source migrée à une rubrique distincte. Par exemple, les règles de mappage d’objet suivantes migrent les tables sources `Customer` et `Address` vers les rubriques Kafka `customer_topic` et `address_topic`, respectivement. Dans le même temps, AWS DMS migre toutes les autres tables sources, y compris la `Bills` table du `Test` schéma, vers le sujet spécifié dans le point de terminaison cible.

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

En utilisant la réplication à plusieurs rubriques Kafka, vous pouvez regrouper et migrer les tables sources afin de séparer les rubriques Kafka à l’aide d’une seule tâche de réplication.

### Format de message pour Apache Kafka
<a name="CHAP_Target.Kafka.Messageformat"></a>

La sortie JSON est simplement une liste de paires clé-valeur. 

**RecordType**  
Les enregistrements peuvent être de type Données ou Contrôle. *Les enregistrements de données* représentent les lignes réelles de la source. *Les enregistrements de contrôle* sont destinés à des événements importants dans le flux, par exemple un redémarrage de la tâche.

**Opération**  
Pour les enregistrements de données, l'opération peut être `load`,`insert`, `update` ou `delete`.  
Pour les enregistrements de contrôle, l’opération peut être `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` ou `column-type-change`.

**SchemaName**  
Schéma source de l'enregistrement. Ce champ peut être vide pour un enregistrement de contrôle.

**TableName**  
Table source de l'enregistrement. Ce champ peut être vide pour un enregistrement de contrôle.

**Horodatage**  
Horodatage de la construction du message JSON. Le champ est formaté selon le format ISO 8601.

L’exemple de message JSON suivant illustre un message de type de données avec toutes les métadonnées supplémentaires.

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

L’exemple de message JSON suivant illustre un message de type contrôle.

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

# Utilisation d'un cluster Amazon OpenSearch Service comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch"></a>

Vous pouvez l'utiliser AWS DMS pour migrer des données vers Amazon OpenSearch Service (OpenSearch Service). OpenSearch Le service est un service géré qui facilite le déploiement, l'exploitation et le dimensionnement d'un cluster OpenSearch de services. 

Dans OpenSearch Service, vous travaillez avec des index et des documents. Un *index* est un ensemble de documents, et un *document* est un objet JSON contenant des valeurs scalaires, des tableaux et d'autres objets. OpenSearch fournit un langage de requête basé sur JSON, afin que vous puissiez interroger des données dans un index et récupérer les documents correspondants.

Lorsqu'il AWS DMS crée des index pour un point de terminaison cible pour OpenSearch Service, il crée un index pour chaque table à partir du point de terminaison source. Le coût de création d'un indice de OpenSearch service dépend de plusieurs facteurs. Il s'agit du nombre d'index créés, de la quantité totale de données contenues dans ces index et de la petite quantité de métadonnées OpenSearch stockées pour chaque document.

Configurez votre cluster de OpenSearch services avec des ressources de calcul et de stockage adaptées à l'étendue de votre migration. Nous vous recommandons de prendre en compte les facteurs suivants, selon la tâche de réplication que vous souhaitez utiliser :
+ Pour un chargement de données complet, tenez compte du volume total de données à migrer ainsi que de la vitesse du transfert.
+ Pour reproduire les modifications en cours, tenez compte de la fréquence des mises à jour et de vos exigences de end-to-end latence.

Configurez également les paramètres d'index sur votre OpenSearch cluster en portant une attention particulière au nombre de documents.

**Paramètres de tâche de chargement complet multithread**

Pour accélérer le transfert, AWS DMS prend en charge le chargement complet multithread vers un cluster cible de OpenSearch services. AWS DMS prend en charge ce multithreading avec des paramètres de tâche tels que les suivants :
+ `MaxFullLoadSubTasks` : utilisez cette option pour indiquer le nombre maximal de tables sources à charger en parallèle. DMS charge chaque table dans son index cible de OpenSearch service correspondant à l'aide d'une sous-tâche dédiée. La valeur par défaut est 8 ; la valeur maximale 49.
+ `ParallelLoadThreads`— Utilisez cette option pour spécifier le nombre de threads AWS DMS utilisés pour charger chaque table dans son index cible de OpenSearch service. La valeur maximale d'un objectif OpenSearch de service est de 32. Vous pouvez demander une augmentation de cette limite maximale.
**Note**  
Si vous ne modifiez pas la valeur par défaut de `ParallelLoadThreads` (0), AWS DMS transfère un seul enregistrement à la fois. Cette approche impose une charge excessive à votre cluster OpenSearch de services. Veillez à définir cette option sur 1 ou plus.
+ `ParallelLoadBufferSize`— Utilisez cette option pour spécifier le nombre maximum d'enregistrements à stocker dans la mémoire tampon que les threads de chargement parallèle utilisent pour charger les données vers la cible du OpenSearch service. La valeur par défaut est 50. La valeur maximale est 1 000. Utilisez ce paramètre avec `ParallelLoadThreads`. `ParallelLoadBufferSize` est valide uniquement dans le cas de plusieurs threads.

Pour plus d'informations sur la manière dont DMS charge un cluster de OpenSearch services à l'aide du multithreading, consultez le AWS billet de blog 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 

**Paramètres de tâche de chargement CDC multithread**

Vous pouvez améliorer les performances de capture des données de modification (CDC) pour un cluster cible de OpenSearch service en utilisant les paramètres des tâches pour modifier le comportement de l'appel d'`PutRecords`API. Pour ce faire, vous pouvez spécifier le nombre de threads simultanés, les files d'attente par thread et le nombre d'enregistrements à stocker dans un tampon à l'aide de la tâche `ParallelApply*`. Par exemple, supposons que vous souhaitiez effectuer un chargement CDC et appliquer 32 threads en parallèle. Vous souhaitez également accéder à 64 files d'attente par thread, avec 50 enregistrements stockés par tampon. 
**Note**  
Support pour l'utilisation des paramètres des `ParallelApply*` tâches pendant les points de terminaison cibles du CDC vers Amazon OpenSearch Service est disponible dans AWS DMS les versions 3.4.0 et supérieures.

Pour améliorer les performances du CDC, AWS DMS prend en charge les paramètres de tâche suivants :
+ `ParallelApplyThreads`— Spécifie le nombre de threads simultanés AWS DMS utilisés lors d'un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible du OpenSearch service. La valeur par défaut est zéro (0) et la valeur maximale est 32.
+ `ParallelApplyBufferSize`— Spécifie le nombre maximum d'enregistrements à stocker dans chaque file d'attente tampon pour les threads simultanés à envoyer vers un point de terminaison cible du OpenSearch service lors d'un chargement CDC. La valeur par défaut est 100 et la valeur maximale est 1 000. Utilisez cette option lorsque `ParallelApplyThreads` spécifie plusieurs threads. 
+ `ParallelApplyQueuesPerThread`— Spécifie le nombre de files d'attente auxquelles chaque thread accède pour extraire des enregistrements de données des files d'attente et générer un chargement par lots pour un point de terminaison de OpenSearch service pendant le CDC.

Lorsque vous utilisez les paramètres de tâche `ParallelApply*`, la valeur par défaut `partition-key-type` est la valeur `primary-key` de la table, pas `schema-name.table-name`.

## Migration d'une table de base de données relationnelle vers un index de service OpenSearch
<a name="CHAP_Target.Elasticsearch.RDBMS2Elasticsearch"></a>

AWS DMS prend en charge la migration des données vers les OpenSearch types de données scalaires du Service. Lorsque vous migrez d'une base de données relationnelle telle qu'Oracle ou MySQL vers OpenSearch Service, vous souhaiterez peut-être restructurer la façon dont vous stockez ces données.

AWS DMS prend en charge les types de données scalaires de OpenSearch service suivants : 
+ Booléen 
+ Date
+ Float
+ Int
+ String

AWS DMS convertit les données de type Date en type String. Vous pouvez spécifier des mappages personnalisés pour interpréter ces dates.

AWS DMS ne prend pas en charge la migration des types de données LOB.

## Conditions préalables à l'utilisation d'Amazon OpenSearch Service comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Prerequisites"></a>

Avant de commencer à utiliser une base de données de OpenSearch service comme cible AWS DMS, assurez-vous de créer un rôle Gestion des identités et des accès AWS (IAM). Ce rôle doit permettre AWS DMS d'accéder aux index de OpenSearch service sur le point de terminaison cible. L'ensemble d'autorisations d'accès minimum est indiqué dans la stratégie IAM suivante.

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

****  

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

------

Le rôle que vous utilisez pour la migration vers le OpenSearch service doit disposer des autorisations suivantes.

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

****  

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

------

Dans l'exemple précédent, remplacez-le `region` par l'identifiant de AWS région, *`account-id`* par l'identifiant de votre AWS compte et `domain-name` par le nom de votre domaine Amazon OpenSearch Service. Voici un exemple : `arn:aws:es:us-west-2:123456789012:domain/my-es-domain`.

## Paramètres du point de terminaison lors OpenSearch de l'utilisation du service comme cible pour AWS DMS
<a name="CHAP_Target.Elasticsearch.Configuration"></a>

Vous pouvez utiliser les paramètres du point de terminaison pour configurer la base de données cible de votre OpenSearch service de la même manière que vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--elasticsearch-settings '{"EndpointSetting": "value", ...}'` JSON.

Le tableau suivant indique les paramètres de point de terminaison que vous pouvez utiliser avec OpenSearch Service en tant que cible.


| Nom d’attribut | Valeurs valides | Valeur par défaut et description | 
| --- | --- | --- | 
|  `FullLoadErrorPercentage`   |  Un nombre entier positif supérieur à 0, mais ne dépassant pas 100.  |  10 - Pour une tâche de chargement complet, cet attribut détermine le seuil d'erreurs autorisées avant que la tâche échoue. Par exemple, supposons qu'il y a 1 500 lignes au point de terminaison source et que ce paramètre est défini sur 10. La tâche échoue alors si elle AWS DMS rencontre plus de 150 erreurs (10 % du nombre de lignes) lors de l'écriture sur le point de terminaison cible.  | 
|   `ErrorRetryDuration`   |  Un nombre entier positif supérieur à 0.  |  300 — Si une erreur se produit sur le point de terminaison cible, AWS DMS réessayez pendant autant de secondes. Sinon, la tâche échoue.  | 
|  `UseNewMappingType`  | true ou false |  `false`, mais pour fonctionner avec opensearch v2.x, il doit être défini sur. `true`  | 

## Limitations liées à l'utilisation d'Amazon OpenSearch Service comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Limitations"></a>

Les limites suivantes s'appliquent lors de l'utilisation d'Amazon OpenSearch Service comme cible :
+ OpenSearch Le service utilise le mappage dynamique (estimation automatique) pour déterminer les types de données à utiliser pour les données migrées.
+ OpenSearch Le service enregistre chaque document avec un identifiant unique. Voici un exemple d'ID. 

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

  Chaque ID de document compte 64 octets. Tenez-en compte dans les exigences de stockage. Par exemple, si vous migrez 100 000 lignes depuis une AWS DMS source, l'index de OpenSearch service obtenu nécessite un stockage de 6 400 000 octets supplémentaires.
+ Avec OpenSearch Service, vous ne pouvez pas mettre à jour les attributs de la clé primaire. Cette restriction est importante lors de l'utilisation de la réplication continue avec la capture des données modifiées (CDC), car elle peut entraîner des données non souhaitées dans la cible. En mode CDC, les clés primaires sont mappées à SHA256 des valeurs de 32 octets. Elles sont converties en chaînes de 64 octets lisibles par l'homme et sont utilisées comme document de OpenSearch service. IDs
+ Si AWS DMS des éléments ne peuvent pas être migrés, il écrit des messages d'erreur dans Amazon CloudWatch Logs. Ce comportement est différent de celui des autres points de terminaison AWS DMS cibles, qui écrivent des erreurs dans une table d'exceptions.
+ AWS DMS ne prend pas en charge la connexion à un cluster Amazon ES sur lequel le contrôle d'accès détaillé est activé avec un utilisateur principal et un mot de passe.
+ AWS DMS ne prend pas en charge OpenSearch le service sans serveur.
+ OpenSearch Le service ne prend pas en charge l'écriture de données dans des index préexistants.
+ Le paramètre de tâche de réplication n'`TargetTablePrepMode:TRUNCATE_BEFORE_LOAD`est pas pris en charge pour une utilisation avec un point de terminaison OpenSearch cible.
+ Lorsque vous migrez des données vers Amazon Elasticsearch à l'aide de AWS DMS, les données source doivent comporter une clé primaire ou une colonne d'identifiant unique. Si les données source ne possèdent pas de clé primaire ou d'identifiant unique, vous devez en définir un à l'aide de la règle de define-primary-key transformation.

## Types de données cibles pour Amazon OpenSearch Service
<a name="CHAP_Target.Elasticsearch.DataTypes"></a>

Lors de AWS DMS la migration de données à partir de bases de données hétérogènes, le service fait correspondre les types de données de la base de données source à des types de données intermédiaires appelés types de AWS DMS données. Le service mappe ensuite les types de données intermédiaires vers les types de données cibles. Le tableau suivant indique chaque type de AWS DMS données et le type de données auquel il correspond dans OpenSearch Service.


| AWS DMS type de données | OpenSearch Type de données de service | 
| --- | --- | 
|  Booléen  |  boolean  | 
|  Date  |  chaîne  | 
|  Heure  |  date  | 
|  Horodatage  |  date  | 
|  INT4  |  entier  | 
|  Real4  |  float  | 
|  UINT4  |  entier  | 

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).

# Utilisation d'Amazon DocumentDB comme cible pour le service de migration de AWS base de données
<a name="CHAP_Target.DocumentDB"></a>

 Pour plus d'informations sur les versions d'Amazon DocumentDB (compatibles avec MongoDB) prises en charge, consultez. AWS DMS [Objectifs pour AWS DMS](CHAP_Introduction.Targets.md) Vous pouvez utiliser AWS DMS pour migrer des données vers Amazon DocumentDB (compatible avec MongoDB) à partir de tout moteur de données source pris en charge par AWS DMS . Le moteur source peut se trouver sur un service AWS géré tel qu'Amazon RDS, Aurora ou Amazon S3. Le moteur peut également se trouver sur une base de données autogérée, telle que MongoDB, qui s’exécute sur Amazon EC2 ou sur site.

Vous pouvez l'utiliser AWS DMS pour répliquer les données sources vers des bases de données, des collections ou des documents Amazon DocumentDB. 

**Note**  
Si votre point de terminaison source est MongoDB ou Amazon DocumentDB, exécutez la migration en **mode document**.

MongoDB stocke les données au format binaire JSON (BSON). AWS DMS prend en charge tous les types de données BSON pris en charge par Amazon DocumentDB. Pour obtenir la liste de ces types de données, consultez la section [MongoDB APIs, opérations et types de données pris en charge](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html) dans *le manuel Amazon DocumentDB Developer Guide*.

Si le point de terminaison source est une base de données relationnelle, AWS DMS mappe les objets de base de données vers Amazon DocumentDB comme suit :
+ Une base de données relationnelle, ou schéma de base de données, est mappée à une *base de données* Amazon DocumentDB. 
+ Les tables situées dans une base de données relationnelle sont mappées à des *collections* dans Amazon DocumentDB.
+ Les enregistrements situés dans une table relationnelle sont mappés à des *documents* dans Amazon DocumentDB. Chaque document est construit à partir de données de l'enregistrement source.

Si le point de terminaison source est Amazon S3, les objets Amazon DocumentDB résultants correspondent aux règles de mappage AWS DMS pour Amazon S3. Prenons l'exemple de l'URI suivant :

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

Dans ce cas, AWS DMS mappe les objets dans `amzn-s3-demo-bucket` Amazon DocumentDB comme suit :
+ La partie supérieure de l’URI (`hr`) est mappée à une base de données Amazon DocumentDB. 
+ La partie suivante de l’URI (`employee`) est mappée à une collection Amazon DocumentDB.
+ Chaque objet de `employee` est mappé à un document dans Amazon DocumentDB.

Pour plus d’informations sur les règles de mappage pour Amazon S3, consultez [Utilisation d'Amazon S3 comme source pour AWS DMS](CHAP_Source.S3.md).

**Paramètres de point de terminaison Amazon DocumentDB**

Dans AWS DMS les versions 3.5.0 et supérieures, vous pouvez améliorer les performances de capture des données de modification (CDC) pour les points de terminaison Amazon DocumentDB en ajustant les paramètres des tâches pour les threads parallèles et les opérations en masse. Pour ce faire, vous pouvez spécifier le nombre de threads simultanés, les files d'attente par thread et le nombre d'enregistrements à stocker dans un tampon à l'aide de la tâche `ParallelApply*`. Par exemple, supposons que vous souhaitiez effectuer un chargement CDC et appliquer 128 threads en parallèle. Vous souhaitez également accéder à 64 files d'attente par thread, avec 50 enregistrements stockés par tampon. 

Pour améliorer les performances du CDC, AWS DMS prend en charge les paramètres de tâche suivants :
+ `ParallelApplyThreads`— Spécifie le nombre de threads simultanés AWS DMS utilisés lors d'un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible Amazon DocumentDB. La valeur par défaut est zéro (0) et la valeur maximale est 32.
+ `ParallelApplyBufferSize` : spécifie le nombre maximal d’enregistrements à stocker dans chaque file d’attente de mémoire tampon pour que les threads simultanés soient transférés vers un point de terminaison cible Amazon DocumentDB lors d’un chargement CDC. La valeur par défaut est 100 et la valeur maximale est 1 000. Utilisez cette option lorsque `ParallelApplyThreads` spécifie plusieurs threads. 
+ `ParallelApplyQueuesPerThread` : spécifie le nombre de files d’attente auxquelles chaque thread accède pour extraire les enregistrements de données des files d’attente et générer un chargement par lots pour un point de terminaison Amazon DocumentDB pendant la CDC. La valeur par défaut est 1. La valeur maximale est 512.

**Note**  
 Pour les cibles Amazon DocumentDB, l'application CDC parallèle peut provoquer des erreurs clés dupliquées ou bloquer l'application CDC pour les charges de travail qui utilisent des index uniques secondaires ou nécessitent un ordre strict des modifications. Utilisez la configuration d'application CDC à thread unique par défaut pour ces charges de travail. 

Pour plus d'informations sur l'utilisation d'Amazon DocumentDB comme cible pour AWS DMS, consultez les sections suivantes :

**Topics**
+ [Mappage de données d’une source vers une cible Amazon DocumentDB](#CHAP_Target.DocumentDB.data-mapping)
+ [Connexion aux clusters Elastic Amazon DocumentDB en tant que cible](#CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect)
+ [Réplication continue avec Amazon DocumentDB en tant que cible](#CHAP_Target.DocumentDB.data-mapping.ongoing-replication)
+ [Limitations de l’utilisation d’Amazon DocumentDB en tant que cible](#CHAP_Target.DocumentDB.limitations)
+ [Utilisation des paramètres de point de terminaison avec Amazon DocumentDB en tant que cible](#CHAP_Target.DocumentDB.ECAs)
+ [Types de données cibles pour Amazon DocumentDB](#CHAP_Target.DocumentDB.datatypes)

**Note**  
Pour une step-by-step présentation détaillée du processus de migration, consultez la section [Migration de MongoDB vers Amazon DocumentDB](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MongoDB2DocumentDB.html) dans le guide de migration. AWS Database Migration Service Step-by-Step 

## Mappage de données d’une source vers une cible Amazon DocumentDB
<a name="CHAP_Target.DocumentDB.data-mapping"></a>

AWS DMS lit les enregistrements depuis le point de terminaison source et construit des documents JSON en fonction des données qu'il lit. Pour chaque document JSON, vous AWS DMS devez déterminer un `_id` champ qui servira d'identifiant unique. Il écrit ensuite le document JSON dans une collection Amazon DocumentDB en utilisant le champ `_id` comme clé primaire.

### Données source se composant d'une colonne unique
<a name="CHAP_Target.DocumentDB.data-mapping.single-column"></a>

Si les données source se composent d'une seule colonne, elles doivent être de type string (chaîne). (Selon le moteur source, le type de données réel peut être VARCHAR, NVARCHAR, TEXT, LOB, CLOB ou similaire.) AWS DMS suppose que les données sont un document JSON valide et les réplique telles quelles vers Amazon DocumentDB.

Si le document JSON résultant contient un champ nommé `_id`, ce dernier est utilisé comme `_id` unique dans Amazon DocumentDB.

Si le document JSON ne contient pas de champ `_id`, Amazon DocumentDB génère une valeur `_id` automatiquement.

### Données source se composant de plusieurs colonnes
<a name="CHAP_Target.DocumentDB.data-mapping.multiple-columns"></a>

Si les données source se composent de plusieurs colonnes, crée AWS DMS un document JSON à partir de toutes ces colonnes. Pour déterminer le `_id` champ du document, AWS DMS procédez comme suit :
+ Si l'une des colonnes est nommée `_id`, les données de cette colonne sont utilisées comme `_id` cible.
+ S'il n'y a pas de `_id` colonne, mais que les données source possèdent une clé primaire ou un index unique, AWS DMS utilise cette clé ou cette valeur d'index comme `_id` valeur. Les données de la clé primaire ou de l'index unique apparaissent également sous forme de champs explicites dans le document JSON.
+ S’il n’y a pas de colonne `_id` et aucune clé primaire ni aucun index unique, Amazon DocumentDB génère une valeur `_id` automatiquement.

### Imposition d'un type de données au niveau du point de terminaison cible
<a name="CHAP_Target.DocumentDB.coercing-datatype"></a>

AWS DMS peut modifier les structures de données lorsqu'il écrit sur un point de terminaison cible Amazon DocumentDB. Vous pouvez demander ces modifications en renommant des colonnes et des tables au niveau du point de terminaison source ou en fournissant des règles de transformation qui sont appliquées lorsqu'une tâche est en cours d'exécution.

#### Utilisation d'un document JSON imbriqué (préfixe json\$1)
<a name="CHAP_Target.DocumentDB.coercing-datatype.json"></a>

Pour imposer un type de données, vous pouvez préfixer le nom de colonne source avec `json_` (c'est-à-dire, `json_columnName`), manuellement ou à l'aide d'une transformation. Dans ce cas, la colonne est créée sous la forme d'un document JSON imbriqué dans le document cible, plutôt que sous la forme d'un champ de chaîne.

Par exemple, supposons que vous souhaitiez migrer le document suivant à partir d'un point de terminaison source MongoDB.

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

Si vous n'imposez aucun des types de données source, le document `ContactDetails` imbriqué est migré sous la forme d'une chaîne.

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

Toutefois, vous pouvez ajouter une règle de transformation pour contraindre l'insertion de `ContactDetails` dans un objet JSON. Par exemple, supposons que le nom de la colonne source d'origine est `ContactDetails`. Pour forcer le type de données en tant que JSON imbriqué, la colonne du point de terminaison de la source doit être renommée « json\$1 ContactDetails » soit en ajoutant le préfixe « \$1json\$1\$1 » sur la source manuellement, soit par le biais de règles de transformation. Par exemple, vous pouvez utiliser la règle de transformation ci-dessous :

```
{
    "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 réplique le ContactDetails champ en tant que JSON imbriqué, comme suit. 

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

#### Utilisation d'un tableau JSON (préfixe array\$1)
<a name="CHAP_Target.DocumentDB.coercing-datatype.array"></a>

Pour imposer un type de données, vous pouvez préfixer un nom de colonne avec `array_` (c'est-à-dire, `array_columnName`), manuellement ou à l'aide d'une transformation. Dans ce cas, AWS DMS considère la colonne comme un tableau JSON et la crée comme telle dans le document cible.

Supposons que vous souhaitiez migrer le document suivant à partir d'un point de terminaison source MongoDB.

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

Si vous n'imposez aucun des types de données source, le document `ContactDetails` imbriqué est migré sous la forme d'une chaîne.

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

 Toutefois, vous pouvez ajouter des règles de transformation pour forcer l'insertion de `ContactAddress` et de `ContactPhoneNumbers` dans des tableaux JSON, comme illustré dans le tableau suivant.


****  

| Nom de la colonne source d'origine | Colonne source renommée | 
| --- | --- | 
| ContactAddress | array\$1ContactAddress | 
| ContactPhoneNumbers | array\$1ContactPhoneNumbers | 

AWS DMS se reproduit `ContactAddress` et `ContactPhoneNumbers` comme suit.

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

### Connexion à Amazon DocumentDB à l’aide du protocole TLS
<a name="CHAP_Target.DocumentDB.tls"></a>

Par défaut, un cluster Amazon DocumentDB récemment créé n’accepte que les connexions sécurisées qui utilisent le protocole TLS (Transport Layer Security). Lorsque le protocole TLS est activé, chaque connexion à Amazon DocumentDB nécessite une clé publique.

Vous pouvez récupérer la clé publique d'Amazon DocumentDB en téléchargeant le fichier depuis un compartiment Amazon S3 AWS hébergé. `rds-combined-ca-bundle.pem` Pour plus d’informations sur le téléchargement de ce fichier, consultez [Chiffrement des connexions à l’aide de TLS](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) dans le *Guide du développeur Amazon DocumentDB*.

Après avoir téléchargé ce fichier .pem, vous pouvez importer la clé publique qu'il contient AWS DMS comme décrit ci-dessous.

#### AWS Management Console
<a name="CHAP_Target.DocumentDB.tls.con"></a>

**Pour importer le fichier de clé publique (.pem)**

1. Ouvrez la AWS DMS console à l'adresse [https://console.aws.amazon.com/dms](https://console.aws.amazon.com/dms).

1. Dans le volet de navigation, choisissez **Certificates**.

1. Choisissez l'onglet **Import certificate (Importer le certificat)** et effectuez les opérations suivantes :
   + Pour **Certificate identifier (Identifiant de certificat)**, entrez un nom unique pour le certificat, par exemple, `docdb-cert`.
   + Pour **Import file (Importer un fichier)**, accédez à l'emplacement où vous avez enregistré le fichier .pem.

   Lorsque les paramètres vous conviennent, choisissez **Add new CA certificate (Ajouter un nouveau certificat CA)**.

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

Utilisez la commande `aws dms import-certificate`, comme illustré dans l’exemple suivant.

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

Lorsque vous créez un point de terminaison AWS DMS cible, fournissez l'identifiant du certificat (par exemple,`docdb-cert`). Définissez aussi le paramètre de mode SSL sur `verify-full`.

## Connexion aux clusters Elastic Amazon DocumentDB en tant que cible
<a name="CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect"></a>

Dans AWS DMS les versions 3.4.7 et supérieures, vous pouvez créer un point de terminaison cible Amazon DocumentDB en tant que cluster élastique. Si vous créez votre point de terminaison cible en tant que cluster Elastic, vous devez attacher un nouveau certificat SSL au point de terminaison de votre cluster Elastic Amazon DocumentDB, car votre certificat SSL existant ne fonctionnera pas.

**Pour attacher un nouveau certificat SSL au point de terminaison de votre cluster Elastic Amazon DocumentDB**

1. Dans un navigateur, ouvrez [ https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) et enregistrez le contenu dans un `.pem` fichier portant un nom de fichier unique, par exemple. `SFSRootCAG2.pem` Il s’agit du fichier de certificat que vous devrez importer lors des étapes suivantes.

1. Créez le point de terminaison de cluster Elastic et définissez les options suivantes :

   1. Sous **Configuration du point de terminaison**, choisissez **Ajouter un certificat CA**.

   1. Pour **Identifiant de certificat**, entrez **SFSRootCAG2.pem**.

   1. Pour **Importer un fichier de certificat**, choisissez **Choisir un fichier** et accédez au fichier `SFSRootCAG2.pem` que vous avez téléchargé précédemment.

   1. Sélectionnez et ouvrez le fichier `SFSRootCAG2.pem` téléchargé.

   1. Sélectionnez **Importer un certificat**.

   1. Dans le menu déroulant **Choisir un certificat**, sélectionnez **SFSRootCAG2.pem.**

Le nouveau certificat SSL issu du fichier `SFSRootCAG2.pem` téléchargé est désormais attaché au point de terminaison de votre cluster Elastic Amazon DocumentDB.

## Réplication continue avec Amazon DocumentDB en tant que cible
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication"></a>

Si la réplication continue (capture des données de modification, CDC) est activée pour Amazon DocumentDB en tant que cible, AWS DMS versions 3.5.0 et ultérieures fournit une amélioration des performances vingt fois supérieure à celle des versions précédentes. Dans les versions précédentes, AWS DMS qui géraient jusqu'à 250 enregistrements par seconde, AWS DMS traitaient désormais efficacement plus de 5 000 enregistrements par seconde. AWS DMS garantit également que les documents d'Amazon DocumentDB restent synchronisés avec la source. Lorsqu'un enregistrement source est créé ou mis à jour, vous AWS DMS devez d'abord déterminer quel enregistrement Amazon DocumentDB est concerné en procédant comme suit :
+ Si l’enregistrement source comporte une colonne nommée `_id`, la valeur de cette colonne détermine la valeur `_id` correspondante dans la collection Amazon DocumentDB.
+ S'il n'y a pas de `_id` colonne, mais que les données source possèdent une clé primaire ou un index unique, elles AWS DMS utilisent cette clé ou cette valeur d'index `_id` pour la collection Amazon DocumentDB.
+ Si l'enregistrement source ne contient pas de `_id` colonne, de clé primaire ou d'index unique, toutes les colonnes source AWS DMS correspondent aux champs correspondants de la collection Amazon DocumentDB.

Lorsqu'un nouvel enregistrement source est créé, AWS DMS écrit un document correspondant dans Amazon DocumentDB. Si un enregistrement source existant est mis à jour, AWS DMS met à jour les champs correspondants dans le document cible dans Amazon DocumentDB. Tous les champs qui existent dans le document cible, mais pas dans l'enregistrement source, restent intacts.

Lorsqu'un enregistrement source est supprimé, le document correspondant AWS DMS est supprimé d'Amazon DocumentDB.

### Modifications structurelles (DDL) à la source
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication.ddl"></a>

Avec la réplication continue, les modifications des structures de données source (telles que les tables, colonnes, etc.) sont propagées à leurs homologues dans Amazon DocumentDB. Dans les bases de données relationnelles, ces modifications sont lancées à l'aide d'instructions DDL (Data Definition Language). Vous pouvez voir comment ces modifications sont AWS DMS répercutées sur Amazon DocumentDB dans le tableau suivant.


****  

| DDL à la source | Effet sur la cible Amazon DocumentDB | 
| --- | --- | 
| CREATE TABLE | Crée une collection vide. | 
| Déclaration qui renomme une table (RENAME TABLE, ALTER TABLE...RENAME, etc.) | Renomme la collection. | 
| TRUNCATE TABLE | Supprime tous les documents de la collection, mais uniquement si HandleSourceTableTruncated a pour valeur true. Pour de plus amples informations, veuillez consulter [Paramètres de tâche pour la gestion du DDL de traitement des modifications](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| DROP TABLE | Supprime la collection, mais uniquement si HandleSourceTableDropped a pour valeur true. Pour de plus amples informations, veuillez consulter [Paramètres de tâche pour la gestion du DDL de traitement des modifications](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| Instruction qui ajoute une colonne à une table (ALTER TABLE...ADD, etc.) | L'instruction DDL est ignorée et un avertissement est émis. Lorsque la première instruction INSERT est exécutée à la source, le nouveau champ est ajouté au document cible. | 
| ALTER TABLE...RENAME COLUMN | L'instruction DDL est ignorée et un avertissement est émis. Lorsque la première instruction INSERT est exécutée à la source, le nouveau champ est ajouté au document cible. | 
| ALTER TABLE...DROP COLUMN | L'instruction DDL est ignorée et un avertissement est émis. | 
| Déclaration qui modifie le type de données de la colonne (ALTER COLUMN...MODIFY, etc.) | L'instruction DDL est ignorée et un avertissement est émis. Lorsque la première instruction INSERT est exécutée à la source avec le nouveau type de données, le document cible est créé avec un champ ayant ce nouveau type de données. | 

## Limitations de l’utilisation d’Amazon DocumentDB en tant que cible
<a name="CHAP_Target.DocumentDB.limitations"></a>

Les limites suivantes s'appliquent lors de l'utilisation d'Amazon DocumentDB comme cible pour : AWS DMS
+ Dans Amazon DocumentDB, les noms de collection ne peuvent pas contenir le symbole du dollar (\$1). En outre, les noms de base de données ne peuvent pas contenir de caractères Unicode.
+ AWS DMS ne prend pas en charge la fusion de plusieurs tables sources dans une seule collection Amazon DocumentDB.
+ Lorsque AWS DMS des processus sont modifiés à partir d'une table source dépourvue de clé primaire, toutes les colonnes LOB de cette table sont ignorées.
+ Si l'option **Change table (Modifier la table)** est activée et que AWS DMS rencontre une colonne source nommée « *\$1id* », cette colonne apparaît sous la forme « *\$1\$1id* » (deux traits de soulignement) dans la table modifiée.
+ Si vous choisissez Oracle comme point de terminaison source, une journalisation supplémentaire complète doit être activée sur la source Oracle. Dans le cas contraire, s’il existe des colonnes à la source qui n’ont pas été modifiées, les données seront chargées dans Amazon DocumentDB tant que valeurs nulles.
+ Le paramètre de tâche de réplication `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` n’est pas pris en charge pour une utilisation avec un point de terminaison cible DocumentDB. 
+ Les collections plafonnées MongoDB ne sont pas prises en charge dans Amazon DocumentDB. Cependant, migre AWS DMS automatiquement les objets tels que les collections non plafonnées sur la DocumentDB cible.
+ L'application parallèle du CDC aux cibles Amazon DocumentDB peut provoquer des erreurs clés dupliquées ou bloquer l'application CDC pour les charges de travail qui utilisent des index uniques secondaires ou nécessitent un ordre strict des modifications. Pour de telles charges de travail, utilisez la configuration d'application CDC à thread unique par défaut.

## Utilisation des paramètres de point de terminaison avec Amazon DocumentDB en tant que cible
<a name="CHAP_Target.DocumentDB.ECAs"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible Amazon DocumentDB comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--doc-db-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Amazon DocumentDB en tant que cible sont indiqués dans le tableau suivant.


| Nom d’attribut | Valeurs valides | Valeur par défaut et description | 
| --- | --- | --- | 
|   `replicateShardCollections`   |  boolean `true` `false`  |  Lorsque ce paramètre de point de terminaison est défini sur `true`, il a les effets suivants et impose les limitations suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Target.DocumentDB.html)  | 

## Types de données cibles pour Amazon DocumentDB
<a name="CHAP_Target.DocumentDB.datatypes"></a>

Dans le tableau suivant, vous trouverez les types de données cibles Amazon DocumentDB pris en charge lors de l'utilisation de AWS DMS, ainsi que le mappage par défaut à partir des types de données AWS DMS. Pour plus d'informations sur les types de données AWS DMS, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS Type de données DMS  |  Type de données Amazon DocumentDB  | 
| --- | --- | 
|  BOOLEAN  |  Booléen  | 
|  BYTES  |  Données binaires  | 
|  DATE  | Date | 
|  TIME  | Chaîne (UTF8) | 
|  DATETIME  | Date | 
|  INT1  | Entier 32 bits | 
|  INT2  |  Entier 32 bits  | 
|  INT4  | Entier 32 bits | 
|  INT8  |  Entier 64 bits  | 
|  NUMERIC  | Chaîne (UTF8) | 
|  REAL4  |  Double  | 
|  REAL8  | Double | 
|  CHAÎNE  |  Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Sinon, les données sont mappées à String (UTF8).  | 
|  UINT1  | Entier 32 bits | 
|  UINT2  | Entier 32 bits | 
|  UINT4  | Entier 64 bits | 
|  UINT8  |  Chaîne (UTF8)  | 
|  WSTRING  | Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Sinon, les données sont mappées à String (UTF8). | 
|  BLOB  | Binaire | 
|  CLOB  | Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Sinon, les données sont mappées à String (UTF8). | 
|  NCLOB  | Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Sinon, les données sont mappées à String (UTF8). | 

# Utiliser Amazon Neptune comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Neptune"></a>

Amazon Neptune est un service de base de données orientée graphe entièrement géré et fiable, qui facilite la création et l'exécution d'applications fonctionnant avec des jeux de données hautement connectés. Le cœur de Neptune est un moteur de base de données orientée graphe spécialisé et hautes performances. Ce moteur est optimisé pour le stockage de milliards de relations et l’interrogation du graphe avec une latence de l’ordre de quelques millisecondes. Neptune prend en charge les langages de requête graphique populaires Apache TinkerPop Gremlin et le SPARQL du W3C. Pour plus d’informations sur Amazon Neptune, consultez [Qu’est-ce qu’Amazon Neptune ?](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) dans le *Guide de l’utilisateur Amazon Neptune*. 

Sans une base de données orientée graphe telle que Neptune, vous modélisez probablement des données hautement connectées dans une base de données relationnelle. Étant donné que les données ont des connexions potentiellement dynamiques, les applications qui utilisent de telles sources de données doivent modéliser les requêtes de données connectées dans SQL. Cette approche nécessite que vous écriviez une couche supplémentaire pour convertir les requêtes de graphe en SQL. En outre, les bases de données relationnelles sont dotées d'une rigidité de schéma. Toute modification du schéma pour modéliser les connexions changeantes nécessite des temps d'arrêt et une maintenance supplémentaire de la conversion de requête pour prendre en charge le nouveau schéma. Les performances des requêtes sont également une autre contrainte importante à prendre en compte lors de la conception de vos applications.

Les bases de données graphiques peuvent grandement simplifier de telles situations. Libre d'un schéma, une couche de requête graphique enrichie (Gremlin ou SPARQL) et des index optimisés pour les requêtes graphiques augmentent la flexibilité et les performances. La base de données orientée graphe Amazon Neptune comporte également des fonctionnalités d’entreprise telles que le chiffrement au repos, une couche d’autorisation sécurisée, les sauvegardes par défaut, la prise en charge de Multi-AZ, la prise en charge de réplicas en lecture, etc.

Vous pouvez AWS DMS ainsi migrer des données relationnelles modélisant un graphe hautement connecté vers un point de terminaison cible Neptune à partir d'un point de terminaison source DMS pour n'importe quelle base de données SQL prise en charge.

Pour plus de détails, consultez les sections suivantes.

**Topics**
+ [Vue d’ensemble de la migration vers Amazon Neptune en tant que cible](#CHAP_Target.Neptune.MigrationOverview)
+ [Spécification des paramètres de point de terminaison pour Amazon Neptune en tant que cible](#CHAP_Target.Neptune.EndpointSettings)
+ [Création d’une fonction de service IAM pour l’accès à Amazon Neptune en tant que cible](#CHAP_Target.Neptune.ServiceRole)
+ [Spécification de règles de mappage de graphe à l’aide de Gremlin et de R2RML pour Amazon Neptune en tant que cible](#CHAP_Target.Neptune.GraphMapping)
+ [Types de données pour la migration Gremlin et R2RML vers Amazon Neptune en tant que cible](#CHAP_Target.Neptune.DataTypes)
+ [Limitations de l’utilisation d’Amazon Neptune en tant que cible](#CHAP_Target.Neptune.Limitations)

## Vue d’ensemble de la migration vers Amazon Neptune en tant que cible
<a name="CHAP_Target.Neptune.MigrationOverview"></a>

Avant de commencer une migration vers une cible Neptune, créez les ressources suivantes dans votre AWS compte :
+ Un cluster Neptune pour le point de terminaison cible. 
+ Une base de données relationnelle SQL prise en charge par le point AWS DMS de terminaison source. 
+ Un compartiment Amazon S3 pour le point de terminaison cible. Créez ce compartiment S3 dans la même AWS région que votre cluster Neptune. AWS DMS utilise ce compartiment S3 comme stockage de fichiers intermédiaire pour les données cibles qu'il charge en masse dans la base de données Neptune. Pour plus d’informations sur la création d’un compartiment S3, consultez [Créer un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.
+ Un point de terminaison de cloud privé virtuel (VPC) pour S3 dans le même VPC que le cluster Neptune. 
+ Rôle Gestion des identités et des accès AWS (IAM) qui inclut une politique IAM. Cette stratégie doit spécifier les autorisations `GetObject`, `PutObject`, `DeleteObject` et `ListObject` pour le compartiment S3 pour votre point de terminaison cible. Ce rôle est assumé à la fois par Neptune AWS DMS et par Neptune avec un accès IAM au compartiment S3 cible et à la base de données Neptune. Pour de plus amples informations, veuillez consulter [Création d’une fonction de service IAM pour l’accès à Amazon Neptune en tant que cible](#CHAP_Target.Neptune.ServiceRole).

Une fois ces ressources disponibles, la configuration et le démarrage d’une migration vers une cible Neptune sont similaires à toute migration de chargement complet à l’aide de la console ou de l’API DMS. Toutefois, une migration vers une cible Neptune nécessite des étapes uniques.

**Pour migrer une base de données AWS DMS relationnelle vers Neptune**

1. Créez une instance de réplication comme décrit dans [Création d'une instance de réplication](CHAP_ReplicationInstance.Creating.md).

1. Créez et testez une base de données relationnelle SQL prise en charge par le point AWS DMS de terminaison source.

1. Créez et testez le point de terminaison cible pour la base de données Neptune. 

   Pour connecter le point de terminaison cible à la base de données Neptune, spécifiez le nom du serveur pour le point de terminaison du cluster Neptune ou le point de terminaison de l’instance d’écriture Neptune. Spécifiez également le dossier du compartiment S3 AWS DMS pour stocker ses fichiers intermédiaires à charger en bloc dans la base de données Neptune. 

   Pendant la migration, AWS DMS stocke toutes les données cibles migrées dans ce dossier de compartiment S3 jusqu'à la taille de fichier maximale que vous spécifiez. Lorsque ce stockage de fichiers atteint cette taille maximale, charge AWS DMS en bloc les données S3 stockées dans la base de données cible. Il efface le dossier pour permettre le stockage de toutes les données cibles supplémentaires pour le chargement ultérieur dans la base de données cible. Pour de plus amples informations sur la spécification de ces paramètres, veuillez consulter [Spécification des paramètres de point de terminaison pour Amazon Neptune en tant que cible](#CHAP_Target.Neptune.EndpointSettings).

1. Créez une tâche de réplication à chargement complet avec les ressources créées aux étapes 1 à 3 et procédez comme suit : 

   1. Utilisez le mappage de tables de tâches comme d'habitude pour identifier des schémas, tables et vues sources spécifiques à migrer depuis votre base de données relationnelle à l'aide de règles de sélection et de transformation appropriées. Pour de plus amples informations, veuillez consulter [Utilisation du mappage de table pour spécifier des paramètres de tâche](CHAP_Tasks.CustomizingTasks.TableMapping.md). 

   1. Spécifiez les mappages de cible en choisissant l’une des options suivantes pour spécifier les règles de mappage à partir de tables et de vues sources vers votre graphe de base de données cible Neptune :
      + Gremlin JSON : pour en savoir plus sur l’utilisation de Gremlin JSON pour charger une base de données Neptune, consultez [Format des données de chargement Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) dans le *Guide de l’utilisateur Amazon Neptune*.
      + SPARQL RDB to Resource Description Framework Mapping Language (R2RML) : pour en savoir plus sur l’utilisation de SPARQL R2RML, consultez la spécification W3C [R2RML: RDB to RDF mapping language](https://www.w3.org/TR/r2rml/).

   1. Effectuez l’une des actions suivantes :
      + À l'aide de la AWS DMS console, spécifiez les options de mappage de graphes à l'aide des **règles de mappage de graphes** sur la page **Créer une tâche de migration de base de données**. 
      + À l'aide de l' AWS DMS API, spécifiez ces options à l'aide du paramètre de `TaskData` requête de l'appel d'`CreateReplicationTask`API. 

      Pour de plus amples informations et consulter des exemples utilisant Gremlin JSON et SPARQL R2RML afin de spécifier des règles de mappage graphique, veuillez consulter [Spécification de règles de mappage de graphe à l’aide de Gremlin et de R2RML pour Amazon Neptune en tant que cible](#CHAP_Target.Neptune.GraphMapping).

1. Démarrez la réplication de votre tâche de migration.

## Spécification des paramètres de point de terminaison pour Amazon Neptune en tant que cible
<a name="CHAP_Target.Neptune.EndpointSettings"></a>

Pour créer ou modifier un point de terminaison cible, vous pouvez utiliser la console, `CreateEndpoint` ou les opérations d'API `ModifyEndpoint`. 

**Pour une cible Neptune dans la AWS DMS console, spécifiez les **paramètres spécifiques au point de terminaison sur la page Créer un point** **de terminaison ou Modifier un point de terminaison**.** Pour `CreateEndpoint` et `ModifyEndpoint`, spécifiez les paramètres de demande pour l'option `NeptuneSettings`. L’exemple suivant montre comment procéder à l’aide de l’interface de ligne de commande. 

```
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}‘
```

Ici, l’option `--server-name` de l’interface CLI spécifie le nom du serveur pour le point de terminaison d’écriture de cluster Neptune. Vous pouvez également spécifier le nom du serveur pour un point de terminaison d’instance d’écriture Neptune. 

Les paramètres de demande d'option `--neptune-settings` sont les suivants :
+ `ServiceAccessRoleArn` : (Obligatoire) Amazon Resource Name (ARN) de la fonction de service que vous avez créée pour le point de terminaison cible Neptune. Pour de plus amples informations, veuillez consulter [Création d’une fonction de service IAM pour l’accès à Amazon Neptune en tant que cible](#CHAP_Target.Neptune.ServiceRole).
+ `S3BucketName` : (Obligatoire) nom du compartiment S3 dans lequel DMS peut stocker temporairement des données de graphe migrées dans des fichiers .csv avant de les charger en bloc dans la base de données cible Neptune. DMS mappe les données source SQL aux données de graphique avant de les stocker dans ces fichiers .csv.
+ `S3BucketFolder` : (Obligatoire) chemin d’accès au dossier dans lequel vous souhaitez que DMS stocke les données de graphe migrées dans le compartiment S3 spécifié par `S3BucketName`.
+ `ErrorRetryDuration` : (Facultatif) nombre de millisecondes pendant lesquelles DMS doit attendre pour réessayer une charge groupée de données de graphe migrées vers la base de données cible Neptune avant de déclencher une erreur. La valeur par défaut est 250.
+ `MaxFileSize` : (Facultatif) taille maximale en Ko de données de graphe migrées stockées dans un fichier .csv avant que DMS charge en bloc les données dans la base de données cible Neptune. La valeur par défaut est de 1 048 576 Ko (1 Go). En cas de succès, DMS efface le compartiment, prêt à stocker le prochain lot de données de graphique migrées.
+ `MaxRetryCount` : (Facultatif) nombre de fois où DMS peut réessayer une charge en bloc de données de graphe migrées vers la base de données cible Neptune avant de déclencher une erreur. La valeur par défaut est 5.
+ `IAMAuthEnabled` : (Facultatif) si vous souhaitez que l’autorisation IAM soit activée pour ce point de terminaison, définissez ce paramètre sur `true` et attachez le document de politique IAM approprié à votre fonction de service spécifié par `ServiceAccessRoleArn`. La valeur par défaut est `false`.

## Création d’une fonction de service IAM pour l’accès à Amazon Neptune en tant que cible
<a name="CHAP_Target.Neptune.ServiceRole"></a>

Pour accéder à Neptune en tant que cible, créez un rôle de service à l'aide d'IAM. Selon la configuration du point de terminaison Neptune, attachez à ce rôle une partie ou la totalité des documents de politique IAM et d’approbation suivants. Lorsque vous créez le point de terminaison Neptune, vous fournissez l’ARN de cette fonction de service. Cela permet à Amazon Neptune AWS DMS d'obtenir les autorisations nécessaires pour accéder à la fois à Neptune et à son compartiment Amazon S3 associé.

Si vous définissez le paramètre `IAMAuthEnabled` dans `NeptuneSettings` sur `true` dans votre configuration de point de terminaison Neptune, attachez une politique IAM telle que la suivante à votre fonction de service. Si vous définissez `IAMAuthEnabled` sur `false`, vous pouvez ignorer cette stratégie.

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

La politique IAM précédente permet un accès complet au cluster cible Neptune spécifié par `Resource`.

Joignez une stratégie IAM telle que la suivante à votre rôle de service. Cette stratégie permet à DMS de stocker temporairement des données de graphe migrées dans le compartiment S3 que vous avez créé pour le chargement en bloc dans la base de données cible Neptune.

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

La politique IAM précédente permet à votre compte d’interroger le contenu du compartiment S3 (`arn:aws:s3:::amzn-s3-demo-bucket`) créé pour votre cible Neptune. Elle permet également à votre compte de fonctionner pleinement sur le contenu de tous les fichiers et dossiers de compartiment (`arn:aws:s3:::amzn-s3-demo-bucket/`).

Modifiez la relation de confiance et associez le rôle IAM suivant à votre rôle de service pour permettre à la fois au service de base de données Amazon Neptune AWS DMS et Amazon Neptune d'assumer ce rôle.

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

------

Pour en savoir plus sur la spécification de cette fonction de service pour votre point de terminaison cible Neptune, consultez [Spécification des paramètres de point de terminaison pour Amazon Neptune en tant que cible](#CHAP_Target.Neptune.EndpointSettings).

## Spécification de règles de mappage de graphe à l’aide de Gremlin et de R2RML pour Amazon Neptune en tant que cible
<a name="CHAP_Target.Neptune.GraphMapping"></a>

Les règles de mappage de graphe que vous créez spécifient comment les données extraites d’une source de base de données relationnelle SQL sont chargées dans une cible de cluster de base de données Neptune. Le format de ces règles de mappage varie selon qu'elles concernent le chargement de données de graphes de propriétés à l'aide d'Apache TinkerPop Gremlin ou de données du Resource Description Framework (RDF) à l'aide de R2RML. Vous trouverez ci-dessous des informations sur ces formats et sur les autres ressources disponibles.

Vous pouvez spécifier ces règles de mappage lorsque vous créez la tâche de migration à l'aide de la console ou de l'API DMS. 

À l'aide de la console, spécifiez ces règles de mappage à l'aide des **règles de mappage de graphique** sur la page **Créer une tâche de migration de base de données**. Dans **Règles de mappage de graphique**, vous pouvez entrer et modifier les règles de mappage directement à l'aide de l'éditeur fourni. Vous pouvez également rechercher un fichier contenant les règles de mappage dans le format de mappage de graphique approprié. 

À l'aide de l'API, spécifiez ces options à l'aide du paramètre de demande `TaskData` de l'appel d'API `CreateReplicationTask`. Définissez `TaskData` sur le chemin d'accès d'un fichier contenant les règles de mappage dans le format de mappage de graphique approprié.

### Règles de mappage de graphique pour générer des données de graphique de propriétés à l'aide de Gremlin
<a name="CHAP_Target.Neptune.GraphMapping.Gremlin"></a>

À l'aide de Gremlin pour générer les données du graphique de propriétés, spécifiez un objet JSON avec une règle de mappage pour chaque entité de graphique à générer à partir des données source. Le format de ce code JSON est défini spécifiquement pour charger Amazon Neptune en bloc. Le modèle suivant montre à quoi ressemble chaque règle de cet objet.

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

La présence d'une étiquette de sommet implique que le sommet est créé ici. Son absence implique que le sommet est créé par une source différente, et cette définition n'ajoute que des propriétés de sommet. Spécifiez autant de définitions de sommets et de tronçons que nécessaire pour spécifier les mappages pour l'ensemble de la source de base de données relationnelle.

Voici un exemple de règle pour une table `employee`.

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

Ici, les définitions de sommets et de tronçons mappent une relation de reporting à partir d'un nœud `employee` avec l'ID d'employé (`EmpID`) et d'un nœud `employee` avec un ID de responsable (`managerId`).

Pour plus d’informations sur la création de règles de mappage de graphe à l’aide de Gremlin JSON, consultez [Format des données de chargement Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) dans le *Guide de l’utilisateur Amazon Neptune*.

### Règles de mappage graphique pour générer des données RDF/SPARQL
<a name="CHAP_Target.Neptune.GraphMapping.R2RML"></a>

Si vous chargez des données RDF à interroger à l'aide de SPARQL, écrivez les règles de mappage de graphique dans R2RML. R2RML est un langage W3C standard pour mapper des données relationnelles vers RDF. Dans un fichier R2RML, un *mappage de triples* (par exemple, `<#TriplesMap1>` suivant) spécifie une règle pour convertir chaque ligne d'une table logique en zéro ou plusieurs triples RDF. Un *mappage de sujet* (par exemple, tout élément `rr:subjectMap` suivant) spécifie une règle pour générer les sujets des triples RDF générés par un mappage de triples. Un *mappage prédicat-objet* (par exemple, tout élément `rr:predicateObjectMap` suivant) est une fonction qui crée une ou plusieurs paires prédicat-objet pour chaque ligne de table logique d'une table logique.

Voici un exemple simple de table `nodes`.

```
@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" ];
    ]
```

Dans l'exemple précédent, le mappage définit des nœuds de graphique mappés à partir d'une table d'employés.

Voici un autre exemple simple de table `Student`.

```
@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" ]
    ].
```

Dans l'exemple précédent, le mappage définit les nœuds du graphe mappant friend-of-a-friend les relations entre les personnes d'une `Student` table.

Pour de plus amples informations sur la création de règles de mappage de graphique à l'aide de SPARQL R2RML, veuillez consulter la spécification W3C [R2RML : RDB to RDF Mapping Language](https://www.w3.org/TR/r2rml/).

## Types de données pour la migration Gremlin et R2RML vers Amazon Neptune en tant que cible
<a name="CHAP_Target.Neptune.DataTypes"></a>

AWS DMS effectue le mappage des types de données entre votre point de terminaison source SQL et votre cible Neptune de deux manières. La solution choisie dépend du format de mappage de graphe que vous utilisez pour charger la base de données Neptune : 
+ Apache TinkerPop Gremlin, à l'aide d'une représentation JSON des données de migration.
+ SPARQL du W3C, en utilisant une représentation R2RML des données de migration. 

Pour de plus amples informations sur ces deux formats de mappage de graphique, veuillez consulter [Spécification de règles de mappage de graphe à l’aide de Gremlin et de R2RML pour Amazon Neptune en tant que cible](#CHAP_Target.Neptune.GraphMapping).

Vous trouverez ci-dessous des descriptions des mappages de types de données pour chaque format.

### Mappages de type de données cible source SQL vers Gremlin
<a name="CHAP_Target.Neptune.DataTypes.Gremlin"></a>

Le tableau suivant présente les mappages de type de données d'une source SQL vers une cible formatée Gremlin. 

AWS DMS mappe n'importe quel type de données source SQL non répertorié à un `String` Gremlin.



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

Pour plus d’informations sur les types de données Gremlin pour le chargement de Neptune, consultez [Types de données Gremlin](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html#bulk-load-tutorial-format-gremlin-datatypes) dans le *Guide de l’utilisateur Neptune*.

### Mappages de type de données cible Source SQL vers R2RML (RDF)
<a name="CHAP_Target.Neptune.DataTypes.R2RML"></a>

Le tableau suivant présente les mappages de types de données d'une source SQL vers une cible formatée R2RML.

Tous les types de données RDF répertoriés distinguent les majuscules et minuscules, à l'exception du format RDF littéral. AWS DMS mappe tout type de données source SQL non répertorié à un littéral RDF. 

Un *littéral RDF* est l'une des diverses formes lexicales littérales et l'un des différents types de données. Pour de plus amples informations, veuillez consulter [Littéraux RDF](https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-Literal) dans la spécification W3C *Resource Description Framework (RDF) : Concepts and Abstract Syntax*.

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

Pour plus d’informations sur les types de données RDF pour charger Neptune et leurs mappages aux types de données sources SQL, consultez [Datatype conversions](https://www.w3.org/TR/r2rml/#datatype-conversions) dans la spécification W3C *R2RML: RDB to RDF Mapping Language*.

## Limitations de l’utilisation d’Amazon Neptune en tant que cible
<a name="CHAP_Target.Neptune.Limitations"></a>

Les limitations suivantes s’appliquent lorsque vous utilisez Neptune en tant que cible :
+ AWS DMS prend actuellement en charge les tâches de chargement complet uniquement pour la migration vers une cible Neptune. La migration CDC (capture des données de modification) vers une cible Neptune n’est pas prise en charge.
+ Assurez-vous d’effacer manuellement toutes les données de la base de données Neptune cible avant de commencer la tâche de migration, comme dans les exemples suivants.

  Pour supprimer toutes les données (sommets et arêtes) dans le graphe, exécutez la commande Gremlin suivante.

  ```
  gremlin> g.V().drop().iterate()
  ```

  Pour supprimer les sommets portant l’étiquette `'customer'`, exécutez la commande Gremlin suivante.

  ```
  gremlin> g.V().hasLabel('customer').drop()
  ```
**Note**  
La suppression d'un jeu de données volumineux peut prendre un certain temps. Vous pouvez vouloir itérer `drop()` avec une limite, par exemple `limit(1000)`.

  Pour supprimer les arêtes portant l’étiquette `'rated'`, exécutez la commande Gremlin suivante.

  ```
  gremlin> g.E().hasLabel('rated').drop()
  ```
**Note**  
La suppression d'un jeu de données volumineux peut prendre un certain temps. Vous pouvez vouloir itérer `drop()` avec une limite, par exemple `limit(1000)`.
+ L’opération d’API DMS `DescribeTableStatistics` peut renvoyer des résultats inexacts sur une table donnée en raison de la nature des structures de données de graphe Neptune.

  Pendant la migration, AWS DMS analyse chaque table source et utilise le mappage de graphes pour convertir les données sources en un graphe Neptune. Les données converties sont d'abord stockées dans le dossier de compartiment S3 spécifié pour le point de terminaison cible. Si la source est analysée et que ces données S3 intermédiaires sont générées avec succès, `DescribeTableStatistics` suppose que les données ont été chargées avec succès dans la base de données cible Neptune. Mais ce n'est pas toujours vrai. Pour vérifier que les données ont été chargées correctement pour une table donnée, comparez les valeurs `count()` renvoyées aux deux extrémités de la migration pour cette table. 

  Dans l'exemple suivant, AWS DMS a chargé une `customer` table à partir de la base de données source, à laquelle l'étiquette est attribuée `'customer'` dans le graphe de la base de données Neptune cible. Vous pouvez vous assurer que cette étiquette est écrite dans la base de données cible. Pour ce faire, comparez le nombre de lignes `customer` disponibles à partir de la base de données source avec le nombre de lignes étiquetées `'customer'` chargées dans la base de données cible Neptune une fois la tâche terminée.

  Pour obtenir le nombre de lignes client disponibles à partir de la base de données source à l'aide de SQL, exécutez la procédure suivante.

  ```
  select count(*) from customer;
  ```

  Pour obtenir le nombre de lignes étiquetées `'customer'` chargées dans le graphique de base de données cible à l'aide de Gremlin, exécutez la procédure suivante.

  ```
  gremlin> g.V().hasLabel('customer').count()
  ```
+ Actuellement, si une seule table n'est pas chargée, c'est toute la tâche qui échoue. Contrairement à une cible de base de données relationnelle, les données dans Neptune sont hautement connectées, ce qui rend impossible dans de nombreux cas la reprise d’une tâche. Si une tâche ne peut pas être reprise correctement en raison de ce type d'échec de chargement des données, créez une nouvelle tâche pour charger la table qui n'a pas pu être chargée. Avant d’exécuter cette nouvelle tâche, effacez manuellement la table partiellement chargée de la cible Neptune.
**Note**  
Vous pouvez reprendre une tâche dont la migration vers une cible Neptune a échoué si l’échec est récupérable (par exemple, une erreur de transit réseau).
+ AWS DMS prend en charge la plupart des normes pour R2RML. Cependant, il AWS DMS ne prend pas en charge certaines normes R2RML, notamment les expressions inverses, les jointures et les vues. Une solution de contournement pour une vue R2RML consiste à créer une vue SQL personnalisée correspondante dans la base de données source. Dans la tâche de migration, utilisez le mappage de table pour choisir la vue en tant qu'entrée. Mappez ensuite la vue à une table qui est ensuite consommée par R2RML pour générer des données de graphique.
+ Lorsque vous migrez des données sources avec des types de données SQL non pris en charge, les données cibles résultantes peuvent avoir une perte de précision. Pour de plus amples informations, veuillez consulter [Types de données pour la migration Gremlin et R2RML vers Amazon Neptune en tant que cible](#CHAP_Target.Neptune.DataTypes).
+ AWS DMS ne prend pas en charge la migration de données LOB vers une cible Neptune.

# Utilisation de Redis OSS comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Redis"></a>

Redis OSS est un magasin de structure de données en mémoire open source utilisé comme base de données, cache et courtier de messages. La gestion des données en mémoire peut entraîner des opérations de lecture ou d’écriture de moins d’une milliseconde et des centaines de millions d’opérations par seconde. En tant que magasin de données en mémoire, Redis OSS alimente les applications les plus exigeantes nécessitant des temps de réponse inférieurs à la milliseconde.

Vous pouvez AWS DMS ainsi migrer les données de n'importe quelle base de données source prise en charge vers un magasin de données Redis OSS cible avec un temps d'arrêt minimal. Pour plus d'informations sur Redis OSS, consultez la documentation [Redis OSS](https://redis.io/documentation).

Outre Redis OSS sur site, AWS Database Migration Service prend en charge les éléments suivants :
+ [Amazon ElastiCache (Redis OSS)](https://aws.amazon.com/elasticache/redis/) en tant que magasin de données cible. ElastiCache (Redis OSS) fonctionne avec vos clients Redis OSS et utilise le format de données ouvert Redis OSS pour stocker vos données.
+ [Amazon MemoryDB](https://aws.amazon.com/memorydb/) en tant que magasin de données cible. MemoryDB est compatible avec Redis OSS et vous permet de créer des applications en utilisant toutes les structures de données et commandes Redis OSS APIs utilisées aujourd'hui.

Pour plus d'informations sur l'utilisation de Redis OSS comme cible pour AWS DMS, consultez les sections suivantes : 

**Topics**
+ [Conditions préalables à l'utilisation d'un cluster Redis OSS comme cible pour AWS DMS](#CHAP_Target.Redis.Prerequisites)
+ [Limitations liées à l'utilisation de Redis comme cible pour AWS Database Migration Service](#CHAP_Target.Redis.Limitations)
+ [Migration de données d'une base de données relationnelle ou non relationnelle vers une cible Redis OSS](#CHAP_Target.Redis.Migrating)
+ [Spécification des paramètres de point de terminaison pour Redis OSS en tant que cible](#CHAP_Target.Redis.EndpointSettings)

## Conditions préalables à l'utilisation d'un cluster Redis OSS comme cible pour AWS DMS
<a name="CHAP_Target.Redis.Prerequisites"></a>

*DMS prend en charge une cible Redis OSS sur site dans une configuration autonome ou en tant que cluster Redis OSS dans lequel les données sont automatiquement réparties sur plusieurs nœuds.* Le partitionnement est le processus qui consiste à séparer les données en petits fragments appelés « partitions », répartis sur plusieurs serveurs ou nœuds. Une partition contient un sous-ensemble de l’ensemble de données total qui couvre une partie de la charge de travail globale.

**Redis OSS étant un magasin de données NoSQL à valeur clé, la convention de dénomination des clés Redis OSS à utiliser lorsque votre source est une base de données relationnelle est schema-name.table-name.primary-key.** Dans Redis OSS, la clé et la valeur ne doivent pas contenir le caractère spécial %. Dans le cas contraire, DMS ignore l’enregistrement. 

**Note**  
Si vous utilisez ElastiCache (Redis OSS) comme cible, DMS prend uniquement en charge les configurations *activées en mode cluster*. Pour plus d'informations sur l'utilisation de ElastiCache (Redis OSS) version 6.x ou ultérieure pour créer un magasin de données cible compatible avec le mode cluster, consultez [Getting started](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/GettingStarted.html) dans le guide de l'utilisateur *Amazon ElastiCache (Redis OSS)*. 

Avant de commencer une migration de base de données, lancez votre cluster Redis OSS selon les critères suivants.
+ Votre cluster possède une ou plusieurs partitions.
+ Si vous utilisez une cible ElastiCache (Redis OSS), assurez-vous que votre cluster n'utilise pas le contrôle d'accès basé sur les rôles IAM. Utilisez plutôt Redis OSS Auth pour authentifier les utilisateurs.
+ Activez Multi-AZ (zones de disponibilité).
+ Assurez-vous que le cluster dispose de suffisamment de mémoire pour accueillir les données à migrer depuis la base de données. 
+ Assurez-vous que votre cluster Redis OSS cible est exempt de toutes les données avant de commencer la tâche de migration initiale.

Vous devez déterminer vos exigences de sécurité pour la migration des données avant de créer la configuration de votre cluster. DMS prend en charge la migration vers les groupes de réplication cibles, quelle que soit leur configuration de chiffrement. Mais vous ne pouvez activer ou désactiver le chiffrement que lorsque vous créez la configuration de votre cluster.

## Limitations liées à l'utilisation de Redis comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Redis.Limitations"></a>

Les limites suivantes s'appliquent lors de l'utilisation de Redis OSS comme cible :
+ Redis OSS étant un magasin de données no-sql à valeur clé, la convention de dénomination des clés Redis OSS à utiliser lorsque votre source est une base de données relationnelle est la suivante. `schema-name.table-name.primary-key` 
+ Dans Redis OSS, la valeur clé ne peut pas contenir le caractère spécial. `%` Dans le cas contraire, DMS ignore l’enregistrement.
+ DMS ne migrera pas les lignes contenant le `%` caractère.
+ DMS ne migrera pas les champs dont le nom contient le `%` caractère.
+ Le Mode LOB complet n'est pas pris en charge.
+  Une autorité de certification (CA) privée n'est pas prise en charge lors de l'utilisation de ElastiCache (Redis OSS) comme cible.
+ AWS DMS ne prend pas en charge les données source contenant des `'\0'` caractères incorporés lors de l'utilisation de Redis comme point de terminaison cible. Les données contenant des `'\0'` caractères incorporés seront tronquées au premier `'\0'` caractère.

## Migration de données d'une base de données relationnelle ou non relationnelle vers une cible Redis OSS
<a name="CHAP_Target.Redis.Migrating"></a>

Vous pouvez migrer les données de n'importe quel magasin de données SQL ou NoSQL source directement vers une cible Redis OSS. La configuration et le démarrage d'une migration vers une cible Redis OSS sont similaires à toute migration de chargement complet et de capture de données à l'aide de la console ou de l'API DMS. Pour effectuer une migration de base de données vers une cible Redis OSS, procédez comme suit.
+ Créez une instance de réplication pour effectuer tous les processus de la migration. Pour de plus amples informations, veuillez consulter [Création d'une instance de réplication](CHAP_ReplicationInstance.Creating.md).
+ Spécifiez un point de terminaison source. Pour de plus amples informations, veuillez consulter [Création de points de terminaison source et cible](CHAP_Endpoints.Creating.md).
+ Trouvez le numéro de port et le nom DNS de votre cluster.
+ Téléchargez un ensemble de certificats que vous pouvez utiliser pour vérifier les connexions SSL.
+ Spécifiez un point de terminaison cible, comme décrit ci-dessous.
+ Créez une tâche ou un ensemble de tâches pour définir les tables et processus de réplication à utiliser. Pour de plus amples informations, veuillez consulter [Création d’une tâche](CHAP_Tasks.Creating.md).
+ Migrez les données de la base de données source vers votre cluster cible.

Commencez une migration de base de données de l’une des deux manières suivantes :

1. Vous pouvez choisir la AWS DMS console et y effectuer chaque étape.

1. Vous pouvez utiliser le AWS Command Line Interface (AWS CLI). Pour plus d'informations sur l'utilisation de la CLI avec AWS DMS, consultez [AWS CLI pour AWS DMS](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html).

**Pour trouver le numéro de port et le nom DNS de votre cluster**
+ Utilisez la AWS CLI commande suivante pour `replication-group-id` fournir le nom de votre groupe de réplication.

  ```
  aws elasticache describe-replication-groups --replication-group-id myreplgroup
  ```

  Ici, la sortie indique le nom DNS dans l’attribut `Address` et le numéro de port dans l’attribut `Port` du nœud primaire du cluster. 

  ```
   ...
  "ReadEndpoint": {
  "Port": 6379,
  "Address": "myreplgroup-
  111.1abc1d.1111.uuu1.cache.example.com"
  }
  ...
  ```

  Si vous utilisez MemoryDB comme cible, utilisez la AWS CLI commande suivante pour fournir une adresse de point de terminaison à votre cluster Redis OSS. 

  ```
  aws memorydb describe-clusters --clusterid clusterid
  ```

**Téléchargez un ensemble de certificats à utiliser pour vérifier les connexions SSL.**
+ Entrez la commande `wget` suivante sur la ligne de commande. Wget est un utilitaire de ligne de commande GNU gratuit qui permet de télécharger des fichiers à partir d’Internet.

  ```
  wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem
  ```

  Ici, `aws-api-domain` complète le domaine Amazon S3 de votre AWS région requis pour accéder au compartiment S3 spécifié et au rds-combined-ca-bundle fichier .pem qu'il fournit.

**Pour créer un point de terminaison cible à l'aide de la AWS DMS console**

Ce point de terminaison est destiné à votre cible Redis OSS déjà en cours d'exécution. 
+ Dans la console, choisissez **Points de terminaison** dans le volet de navigation, puis **Créer un point de terminaison**. Le tableau suivant décrit les paramètres.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Target.Redis.html)

Lorsque vous avez terminé de fournir toutes les informations pour votre point de terminaison, AWS DMS crée votre point de terminaison cible Redis OSS à utiliser lors de la migration de la base de données.

Pour en savoir plus sur la création d’une tâche de migration et le démarrage de la migration de la base de données, consultez [Création d’une tâche](CHAP_Tasks.Creating.md).

## Spécification des paramètres de point de terminaison pour Redis OSS en tant que cible
<a name="CHAP_Target.Redis.EndpointSettings"></a>

Pour créer ou modifier un point de terminaison cible, vous pouvez utiliser la console, `CreateEndpoint` ou les opérations d'API `ModifyEndpoint`. 

Pour une cible Redis OSS dans la AWS DMS console, spécifiez les **paramètres spécifiques au point de terminaison sur la page Créer un point** **de terminaison ou **Modifier** la console de point de terminaison**.

Lorsque vous utilisez les opérations d’API `CreateEndpoint` et `ModifyEndpoint`, spécifiez les paramètres de demande pour l’option `RedisSettings`. L’exemple suivant montre comment procéder à l’aide d’ AWS CLI.

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

Les paramètres `--redis-settings` sont les suivants :
+ `ServerName`— (Obligatoire) De type`string`, spécifie le cluster Redis OSS vers lequel les données seront migrées et qui se trouve dans votre même VPC.
+ `Port` : (Obligatoire) pour le type `number`, valeur du port utilisé pour accéder au point de terminaison.
+ `SslSecurityProtocol` : (Facultatif) les valeurs valides incluent `plaintext` et `ssl-encryption`. La valeur par défaut est `ssl-encryption`. 

  L'option `plaintext` ne fournit pas le chiffrement du protocole TLS (Transport Layer Security) pour le trafic entre le point de terminaison et la base de données. 

  Utilisez `ssl-encryption` pour établir une connexion chiffrée. `ssl-encryption` ne requiert pas d’ARN d’autorité de certification (CA) SSL pour vérifier le certificat d’un serveur, mais il est possible d’en identifier un à l’aide du paramètre `SslCaCertificateArn`. Si aucun ARN de CA n’est fourni, DMS utilise la CA racine Amazon.

  Lorsque vous utilisez une cible Redis OSS sur site, vous pouvez l'utiliser `SslCaCertificateArn` pour importer une autorité de certification (CA) publique ou privée dans DMS et fournir cet ARN pour l'authentification du serveur. Une autorité de certification privée n'est pas prise en charge lors de l'utilisation de ElastiCache (Redis OSS) comme cible.
+ `AuthType`— (Obligatoire) Indique le type d'authentification à effectuer lors de la connexion à Redis OSS. Les valeurs valides sont `none`, `auth-token` et `auth-role`.

  L'`auth-token`option nécessite que les caractères *AuthPassword* « » soient fournis, tandis que l'`auth-role`option nécessite que *AuthUserName* « » et « *AuthPassword* » soient fournis.

# Utiliser Babelfish comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Babelfish"></a>

Vous pouvez migrer les données d'une base de données source Microsoft SQL Server vers une cible Babelfish à l'aide de. AWS Database Migration Service

Babelfish pour Aurora PostgreSQL étend l’Édition compatible avec PostgreSQL de votre base de données Amazon Aurora et permet d’accepter les connexions de base de données à partir de clients Microsoft SQL Server. Les applications initialement conçues pour SQL Server peuvent ainsi être utilisées avec Aurora PostgreSQL, sans apporter de changements significatifs au code par rapport à une migration traditionnelle et sans modifier les pilotes de base de données. 

Pour plus d'informations sur les versions de Babelfish compatibles AWS DMS en tant que cible, consultez. [Objectifs pour AWS DMS](CHAP_Introduction.Targets.md) Les versions antérieures de Babelfish sur Aurora PostgreSQL nécessitent une mise à niveau avant d’utiliser le point de terminaison Babelfish.

**Note**  
Le point de terminaison cible Aurora PostgreSQL est la méthode privilégiée pour migrer des données vers Babelfish. Pour de plus amples informations, veuillez consulter [Utilisation de Babelfish for Aurora PostgreSQL en tant que cible](CHAP_Target.PostgreSQL.md#CHAP_Target.PostgreSQL.Babelfish). 

Pour en savoir plus sur l’utilisation de Babelfish comme point de terminaison de base de données, consultez [Babelfish for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) dans le *Guide de l’utilisateur Amazon Aurora pour Aurora*. 

## Prérequis pour utiliser Babelfish comme cible pour AWS DMS
<a name="CHAP_Target.Babelfish.Prerequisites"></a>

Vous devez créer vos tables avant de migrer les données afin de vous assurer que celles-ci AWS DMS utilisent les types de données et les métadonnées de table appropriés. Si vous ne créez pas vos tables sur la cible avant d'exécuter la migration, vous AWS DMS risquez de créer les tables avec des types de données et des autorisations incorrects. Par exemple, AWS DMS crée une colonne d'horodatage au format binaire (8) à la place et ne fournit pas les fonctionnalités attendues timestamp/rowversion .

**Pour préparer et créer vos tables avant la migration**

1. Exécutez vos instructions DDL de création de table qui incluent des contraintes uniques, des clés primaires ou des contraintes par défaut. 

   N’incluez pas de contraintes de clé étrangère ni d’instructions DDL pour des objets tels que des vues, des procédures stockées, des fonctions ou des déclencheurs. Vous pouvez les appliquer après avoir migré la base de données source.

1. Identifiez les colonnes d’identité, les colonnes calculées ou les colonnes contenant des types de données rowversion ou timestamp pour vos tables. Créez ensuite les règles de transformation nécessaires pour gérer les problèmes connus lors de l’exécution de la tâche de migration. Pour plus d'informations, voir,[Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

1. Identifiez les colonnes contenant des types de données que Babelfish ne prend pas en charge. Modifiez ensuite les colonnes concernées dans la table cible pour utiliser les types de données pris en charge, ou créez une règle de transformation qui les supprime lors de la tâche de migration. Pour plus d'informations, voir,[Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

   Le tableau suivant répertorie les types de données source non pris en charge par Babelfish, ainsi que le type de données cible recommandé correspondant à utiliser.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Target.Babelfish.html)

**Pour définir le niveau des unités de capacité Aurora (ACUs) pour votre base de données source Aurora PostgreSQL Serverless V2**

Vous pouvez améliorer les performances de votre tâche de AWS DMS migration avant de l'exécuter en définissant la valeur ACU minimale.
+ Dans la fenêtre des **paramètres de capacité de Severless v2**, définissez un niveau **minimum ACUs** de **2** ou un niveau raisonnable pour votre cluster de base de données Aurora.

  Pour plus d’informations sur la définition des unités de capacité Aurora, consultez [Choix de la plage de capacité Aurora sans serveur v2 pour un cluster Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html) dans le *Guide de l’utilisateur Amazon Aurora*. 

Après avoir exécuté votre tâche de AWS DMS migration, vous pouvez rétablir la valeur minimale de votre base ACUs de données source Aurora PostgreSQL Serverless V2 à un niveau raisonnable.

## Exigences de sécurité lors de l'utilisation de Babelfish comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Security"></a>

Ce qui suit décrit les exigences de sécurité pour une utilisation AWS DMS avec une cible Babelfish :
+ Le nom d’utilisateur de l’administrateur (utilisateur Admin) utilisé pour créer la base de données.
+ L’identifiant de connexion PSQL et l’utilisateur disposant des autorisations SELECT, INSERT, UPDATE, DELETE et REFERENCES suffisantes.

## Autorisations utilisateur pour utiliser Babelfish comme cible pour AWS DMS
<a name="CHAP_Target.Babelfish.Permissions"></a>

**Important**  
À des fins de sécurité, le compte d’utilisateur utilisé pour la migration des données doit être un utilisateur enregistré dans une base de données Babelfish que vous utilisez en tant que cible.

Votre point de terminaison cible Babelfish nécessite des autorisations utilisateur minimales pour exécuter une migration AWS DMS .

**Pour créer un identifiant de connexion et un utilisateur Transact-SQL (T-SQL) à faible privilège**

1. Créez un identifiant de connexion et un mot de passe à utiliser lors de la connexion au serveur.

   ```
   CREATE LOGIN dms_user WITH PASSWORD = 'password';
   GO
   ```

1. Créez la base de données virtuelle pour votre cluster Babelfish.

   ```
   CREATE DATABASE my_database;
   GO
   ```

1. Créez l’utilisateur T-SQL pour la base de données cible.

   ```
   USE my_database
   GO
   CREATE USER dms_user FOR LOGIN dms_user;
   GO
   ```

1. Pour chaque table de la base de données Babelfish, accordez (GRANT) des autorisations aux tables.

   ```
   GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;  
   ```

## Limitations relatives à l'utilisation de Babelfish comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Limitations"></a>

Les limitations suivantes s’appliquent lors de l’utilisation d’une base de données Babelfish en tant que cible pour AWS DMS :
+ Seul le mode de préparation de table « **Ne rien faire** » est pris en charge.
+ Le type de données ROWVERSION nécessite une règle de mappage de table qui supprime le nom de colonne de la table pendant la tâche de migration.
+ Le type de données sql\$1variant n’est pas pris en charge.
+ Le mode LOB complet est pris en charge. L'utilisation de SQL Server comme point de terminaison source nécessite que le paramètre `ForceFullLob=True` d'attribut de connexion du point de terminaison SQL Server soit défini afin de LOBs pouvoir être migré vers le point de terminaison cible.
+ Les paramètres de la tâche de réplication présentent les limitations suivantes :

  ```
  {
     "FullLoadSettings": {
        "TargetTablePrepMode": "DO_NOTHING",
        "CreatePkAfterFullLoad": false,
        }.
      
  }
  ```
+ Les types de données TIME DATETIME2 (7), (7) et DATETIMEOFFSET (7) dans Babelfish limitent la valeur de précision pour la partie secondes du temps à 6 chiffres. Envisagez d’utiliser une valeur de précision de 6 pour votre table cible lorsque vous utilisez ces types de données. Pour les versions 2.2.0 et supérieures de Babelfish, lorsque vous utilisez TIME (7) et DATETIME2 (7), le septième chiffre de précision est toujours zéro.
+ En mode DO\$1NOTHING, DMS vérifie si la table existe déjà. Si la table n’existe pas dans le schéma cible, DMS crée la table en fonction de la définition de table source et mappe tous les types de données définis par l’utilisateur à leur type de données de base.
+ Une tâche de AWS DMS migration vers une cible Babelfish ne prend pas en charge les tables dont les colonnes utilisent les types de données ROWVERSION ou TIMESTAMP. Vous pouvez utiliser une règle de mappage de table qui supprime le nom de colonne de la table pendant le processus de transfert. Dans l’exemple de règle de transformation suivant, une table nommée `Actor` dans votre source est transformée pour supprimer toutes les colonnes commençant par les caractères `col` de la table `Actor` dans votre cible.

  ```
  {
   	"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%"
  		}
  	}]
   }
  ```
+ Pour les tables comportant des colonnes d’identité ou calculées, où les tables cibles utilisent des noms en casse mixte tels que Catégories, vous devez créer une action de règle de transformation qui convertit les noms des table en minuscules pour votre tâche DMS. L'exemple suivant montre comment créer l'action de règle de transformation **Make lowercase** à l'aide de la AWS DMS console. Pour de plus amples informations, veuillez consulter [Règles et actions de transformation](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).  
![\[Règle de transformation Babelfish\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/images/datarep-babelfish-transform-1.png)
+ Avant Babelfish version 2.2.0, DMS limitait le nombre de colonnes que vous pouviez répliquer vers un point de terminaison cible Babelfish à vingt (20) colonnes. Avec Babelfish 2.2.0, la limite est passée à 100 colonnes. Mais avec Babelfish versions 2.4.0 et ultérieures, le nombre de colonnes que vous pouvez répliquer augmente à nouveau. Vous pouvez exécuter l’exemple de code suivant sur la base de données SQL Server pour déterminer quelles tables sont trop longues.

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

## Types de données cibles pour Babelfish
<a name="CHAP_Target.Babelfish.DataTypes"></a>

Le tableau suivant indique les types de données cibles de Babelfish pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultez[Types de données pour AWS Database Migration Service](CHAP_Reference.DataTypes.md). 


|  AWS DMS type de données  |  Type de données Babelfish   | 
| --- | --- | 
|  BOOLEAN  |  TINYINT  | 
|  BYTES  |  VARBINARY(Length)  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INT  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  NUMERIC(p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  |  FLOAT  | 
|  CHAÎNE  |  Si la colonne est une colonne de date ou d'heure, effectuez les opérations suivantes :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/dms/latest/userguide/CHAP_Target.Babelfish.html) Si la colonne n'est pas une colonne de date ou d'heure, utilisez VARCHAR (length).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR(length)  | 
|  BLOB  |  VARBINARY(max) Pour utiliser ce type de données avec DMS, vous devez activer l'utilisation de BLOBs pour une tâche spécifique. DMS prend en charge les types de données BLOB uniquement dans les tables qui contiennent une clé primaire.  | 
|  CLOB  |  VARCHAR(max) Pour utiliser ce type de données avec DMS, vous devez activer l'utilisation de CLOBs pour une tâche spécifique.  | 
|  NCLOB  |  NVARCHAR(max) Pour utiliser ce type de données avec DMS, vous devez activer l'utilisation de NCLOBs pour une tâche spécifique. Au cours de la CDC, DMS prend en charge les types de données NCLOB uniquement dans les tables qui contiennent une clé primaire.  | 

# Utiliser Amazon Timestream comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Timestream"></a>

Vous pouvez l'utiliser AWS Database Migration Service pour migrer les données de votre base de données source vers un point de terminaison cible Amazon Timestream, en prenant en charge les migrations de données Full Load et CDC.

Amazon Timestream est un service de base de données de séries temporelles rapide, évolutif et sans serveur, conçu pour l’ingestion de grands volumes de données. Les données de séries temporelles sont une séquence de points de données collectés pendant un intervalle de temps et utilisés pour mesurer des événements qui évoluent au fil du temps. Il est utilisé pour collecter, stocker et analyser les métriques des applications IoT, des DevOps applications et des applications d'analyse. Une fois que vous avez enregistré vos données dans Timestream, vous pouvez visualiser et identifier des tendances et des modèles dans vos données en temps quasi réel. Pour plus d’informations sur Amazon Timestream, consultez [Qu’est-ce qu’Amazon Timestream ?](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) dans le *Guide du développeur Amazon Timestream*.

**Topics**
+ [Conditions préalables à l'utilisation d'Amazon Timestream comme cible pour AWS Database Migration Service](#CHAP_Target.Timestream.Prerequisites)
+ [Paramètres de tâche de chargement complet multithread](#CHAP_Target.Timestream.FLTaskSettings)
+ [Paramètres de tâche de chargement CDC multithread](#CHAP_Target.Timestream.CDCTaskSettings)
+ [Paramètres du point de terminaison lors de l'utilisation de Timestream comme cible pour AWS DMS](#CHAP_Target.Timestream.ConnectionAttrib)
+ [Création et modification d’un point de terminaison Amazon Timestream cible](#CHAP_Target.Timestream.CreateModifyEndpoint)
+ [Utilisation du mappage d’objet pour migrer des données vers une rubrique Timestream](#CHAP_Target.Timestream.ObjectMapping)
+ [Limitations liées à l'utilisation d'Amazon Timestream comme cible pour AWS Database Migration Service](#CHAP_Target.Timestream.Limitations)

## Conditions préalables à l'utilisation d'Amazon Timestream comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Timestream.Prerequisites"></a>

Avant de configurer Amazon Timestream comme cible AWS DMS pour, assurez-vous de créer un rôle IAM. Ce rôle doit permettre AWS DMS d'accéder aux données en cours de migration vers Amazon Timestream. L’ensemble d’autorisations d’accès minimum pour le rôle que vous utilisez pour migrer vers Timestream figure dans la politique IAM suivante.

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

------

Si vous avez l'intention de migrer toutes les tables, utilisez `*` for *TABLE\$1NAME* dans l'exemple ci-dessus.

Notez ce qui suit à propos de l’utilisation de Timestream comme cible :
+ Si vous avez l’intention d’ingérer des données historiques dont l’horodatage remonte à plus d’un an, nous vous recommandons d’utiliser AWS DMS pour écrire les données dans Amazon S3 au format CSV (valeurs séparées par des virgules). Utilisez ensuite le chargement par lots de Timestream pour ingérer les données. Pour plus d’informations, consultez [Utilisation du chargement par lots dans Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/batch-load.html) dans le [Guide du développeur Amazon Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).
+ Pour les migrations de données à chargement complet datant de moins d’un an, nous recommandons de définir une période de conservation de la mémoire de la table Timestream supérieure ou égale à l’horodatage le plus ancien. Ensuite, une fois la migration terminée, modifiez la période de conservation de la mémoire de la table à la valeur souhaitée. Par exemple, pour migrer des données dont l’horodatage le plus ancien date de 2 mois, procédez comme suit :
  + Définissez la période de conservation de la mémoire de la table cible Timestream sur 2 mois.
  + Démarrez la migration des données à l'aide de AWS DMS.
  + Une fois la migration des données terminée, modifiez la période de conservation de la table Timestream cible à la valeur souhaitée. 

   Nous vous recommandons d’estimer le coût de stockage de la mémoire avant la migration en utilisant les informations des pages suivantes :
  + [Tarification d’Amazon Timestream](https://aws.amazon.com/timestream/pricing)
  + [AWS calculateur de prix](https://calculator.aws/#/addService) 
+ Pour les migrations de données CDC, nous recommandons de définir la période de conservation de la mémoire de la table cible de manière à ce que les données ingérées se situent dans les limites de cette période. Pour plus d’informations, consultez [Bonnes pratiques en matière d’écriture](https://docs.aws.amazon.com/timestream/latest/developerguide/data-ingest.html) dans le [Guide du développeur Amazon Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).

## Paramètres de tâche de chargement complet multithread
<a name="CHAP_Target.Timestream.FLTaskSettings"></a>

Pour accélérer le transfert de données, AWS DMS prend en charge une tâche de migration multithread à chargement complet vers un point de terminaison cible Timestream avec les paramètres de tâche suivants :
+ `MaxFullLoadSubTasks` : utilisez cette option pour indiquer le nombre maximal de tables sources à charger en parallèle. DMS charge chaque table dans sa table Amazon Timestream cible correspondante à l’aide d’une sous-tâche dédiée. La valeur par défaut est 8 ; la valeur maximale 49.
+ `ParallelLoadThreads`— Utilisez cette option pour spécifier le nombre de threads AWS DMS utilisés pour charger chaque table dans sa table cible Amazon Timestream. La valeur maximale pour une cible Timestream est 32. Vous pouvez demander une augmentation de cette limite maximale.
+ `ParallelLoadBufferSize` : utilisez cette option pour spécifier le nombre maximal d’enregistrements à stocker dans la mémoire tampon utilisée par les threads de chargement parallèles pour charger les données dans la cible Amazon Timestream. La valeur par défaut est 50. La valeur maximale est 1 000. Utilisez ce paramètre avec `ParallelLoadThreads`. `ParallelLoadBufferSize` est valide uniquement dans le cas de plusieurs threads.
+ `ParallelLoadQueuesPerThread` : utilisez cette option pour spécifier le nombre de files d’attente auxquelles chaque thread simultané accède pour extraire les enregistrements de données des files d’attente et générer un chargement par lots pour la cible. La valeur par défaut est 1. Toutefois, pour les cibles Amazon Timestream de différentes tailles de charge utile, la plage valide est comprise entre 5 et 512 files d’attente par thread.

## Paramètres de tâche de chargement CDC multithread
<a name="CHAP_Target.Timestream.CDCTaskSettings"></a>

Pour améliorer les performances du CDC, AWS DMS prend en charge les paramètres de tâche suivants :
+ `ParallelApplyThreads`— Spécifie le nombre de threads simultanés AWS DMS utilisés lors d'un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible Timestream. La valeur par défaut est 0 et la valeur maximale est 32.
+ `ParallelApplyBufferSize` : spécifie le nombre maximal d’enregistrements à stocker dans chaque file d’attente de la mémoire tampon pour que les threads simultanés soient transférés vers un point de terminaison cible Timestream lors d’un chargement CDC. La valeur par défaut est 100 et la valeur maximale est 1 000. Utilisez cette option lorsque `ParallelApplyThreads` spécifie plusieurs threads. 
+ `ParallelApplyQueuesPerThread` : spécifie le nombre de files d’attente auxquelles chaque thread accède pour extraire les enregistrements de données et générer un chargement par lots pour un point de terminaison Timestream lors d’un chargement CDC. La valeur par défaut est 1 et la valeur maximale est 512.

## Paramètres du point de terminaison lors de l'utilisation de Timestream comme cible pour AWS DMS
<a name="CHAP_Target.Timestream.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer votre base de données Timestream cible comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--timestream-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Timestream comme cible sont indiqués dans le tableau suivant.

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

## Création et modification d’un point de terminaison Amazon Timestream cible
<a name="CHAP_Target.Timestream.CreateModifyEndpoint"></a>

Une fois que vous avez créé un rôle IAM et défini l'ensemble minimal d'autorisations d'accès, vous pouvez créer un point de terminaison cible Amazon Timestream à l'aide de la console ou à l' AWS DMS aide de la commande contenue [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)dans le, `create-endpoint` avec la syntaxe JSON. `--timestream-settings '{"EndpointSetting": "value", ...}'`

Les exemples suivants montrent comment créer et modifier un point de terminaison Timestream cible à l’aide de l’ AWS CLI.

**Commande de création d’un point de terminaison Timestream cible**

```
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,
}
```

**Commande de modification d’un point de terminaison Timestream cible**

```
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,
}
```

## Utilisation du mappage d’objet pour migrer des données vers une rubrique Timestream
<a name="CHAP_Target.Timestream.ObjectMapping"></a>

AWS DMS utilise des règles de mappage de tables pour mapper les données de la source à la rubrique Timestream cible. Pour mapper des données à une rubrique cible, vous utilisez un type de règle de mappage de table appelé « mappage d’objet ». Vous utilisez le mappage d’objet pour définir la façon dont les enregistrements de données de la source sont mappés aux enregistrements de données publiés dans une rubrique Timestream. 

Les rubriques Timestream ne disposent pas d’une structure prédéfinie autre que le fait d’avoir une clé de partition.

**Note**  
Vous n’avez pas besoin d’utiliser le mappage d’objet. Vous pouvez utiliser un mappage de table standard pour différentes transformations. Cependant, le type de clé de partition suivra les comportements par défaut suivants :   
La clé primaire est utilisée comme clé de partition pour le chargement complet.
Si aucun paramètre de tâche parallel-apply n’est utilisé, `schema.table` est utilisé comme clé de partition pour la CDC.
Si des paramètres de tâche parallel-apply sont utilisés, la clé primaire est utilisée comme clé de partition pour la CDC.

Pour créer une règle de mappage d'objet, spécifiez `rule-type` comme `object-mapping`. Cette règle spécifie le type de mappage d'objet que vous souhaitez utiliser. La structure de la règle est la suivante.

```
{
    "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 prend actuellement en charge `map-record-to-record` et `map-record-to-document` en tant que seules valeurs valides pour le `rule-action` paramètre. Les `map-record-to-document` valeurs `map-record-to-record` et spécifient ce qui est AWS DMS fait par défaut aux enregistrements qui ne sont pas exclus de la liste d'`exclude-columns`attributs. Ces valeurs n'affectent en aucune façon les mappages d'attributs. 

Utilisez `map-record-to-record` lorsque vous migrez une base de données relationnelle vers une rubrique Timestream. Ce type de règle utilise la valeur `taskResourceId.schemaName.tableName` de la base de données relationnelle comme clé de partition dans la rubrique Timestream, et crée un attribut pour chaque colonne de la base de données source. Lors de l'utilisation`map-record-to-record`, pour toute colonne de la table source non répertoriée dans la liste d'`exclude-columns`attributs, AWS DMS crée un attribut correspondant dans le sujet cible. Cet attribut correspondant est créé que la colonne source soit ou non utilisée dans un mappage d'attribut. 

Une manière de comprendre `map-record-to-record` est de le voir en action. Dans cet exemple, imaginons que vous commencez avec une ligne de table d'une base de données relationnelle, présentant la structure et les données suivantes :


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

Pour migrer ces informations à partir d’un schéma nommé `Test` vers une rubrique Timestream, vous créez des règles pour mapper les données à la rubrique cible. La règle suivante illustre ce mappage. 

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

L’exemple ci-dessous illustre le format d’enregistrement obtenu avec une rubrique Timestream et une clé de partition (en l’occurrence, `taskResourceId.schemaName.tableName`) à l’aide de notre exemple de données dans la rubrique Timestream cible : 

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

## Limitations liées à l'utilisation d'Amazon Timestream comme cible pour AWS Database Migration Service
<a name="CHAP_Target.Timestream.Limitations"></a>

Les limites suivantes s’appliquent lorsque vous utilisez Amazon Timestream comme cible :
+ **Dimensions et horodatages :** Timestream utilise les dimensions et les horodatages des données sources comme clé primaire composite, et ne vous autorise pas à mettre à jour ces valeurs. Cela signifie que si vous modifiez l’horodatage ou les dimensions d’un enregistrement dans la base de données source, la base de données Timestream essaiera de créer un nouvel enregistrement. Il est donc possible que si vous modifiez la dimension ou l'horodatage d'un enregistrement afin qu'ils correspondent à ceux d'un autre enregistrement existant, vous mettiez AWS DMS à jour les valeurs de l'autre enregistrement au lieu de créer un nouvel enregistrement ou de mettre à jour l'enregistrement correspondant précédent.
+ **Commandes DDL :** La version actuelle AWS DMS ne prend en charge que `CREATE TABLE` les commandes `DROP TABLE` DDL.
+ **Limites des enregistrements :** Timestream impose des limites pour les enregistrements (taille des enregistrements et des mesures, par exemple). Pour plus d’informations, consultez [Quotas](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) dans le [Guide du développeur Amazon Timestream](https://docs.aws.amazon.com/).
+ **Suppression des enregistrements et valeurs nulles :** Timestream ne prend pas en charge la suppression des enregistrements. Pour faciliter la migration des enregistrements supprimés de la source, AWS DMS efface les champs correspondants dans les enregistrements de la base de données cible Timestream. AWS DMS modifie les valeurs des champs de l'enregistrement cible correspondant avec **0** pour les champs numériques, **null** pour les champs de texte et **faux** pour les champs booléens.
+ Timestream en tant que cible ne prend pas en charge les sources qui ne sont pas des bases de données relationnelles (SGBDR).
+ AWS DMS ne prend en charge Timestream en tant que cible que dans les régions suivantes :
  + USA Est (Virginie du Nord)
  + USA Est (Ohio)
  + USA Ouest (Oregon)
  + Europe (Irlande)
  + Europe (Francfort)
  + Asie-Pacifique (Sydney)
  + Asia Pacific (Tokyo)
+ Timestream en tant que cible ne prend pas en charge la valeur `TRUNCATE_BEFORE_LOAD` pour le paramètre `TargetTablePrepMode`. Nous vous recommandons d’utiliser `DROP_AND_CREATE` pour ce paramètre.

# Utilisation d'Amazon RDS pour Db2 et d'IBM Db2 LUW comme cible pour AWS DMS
<a name="CHAP_Target.DB2"></a>

Vous pouvez migrer des données vers une base de données Amazon RDS pour DB2 ou une base de données DB2 locale à partir d'une base de données DB2 LUW en utilisant (). AWS Database Migration Service AWS DMS

Pour plus d'informations sur les versions de DB2 LUW prises AWS DMS en charge en tant que cible, consultez. [Objectifs pour AWS DMS](CHAP_Introduction.Targets.md)

Vous pouvez utiliser le protocole SSL pour chiffrer les connexions entre votre point de terminaison Db2 LUW et l'instance de réplication. Pour plus d’informations sur l’utilisation de SSL avec un point de terminaison Db2 LUW, consultez [Utilisation du protocole SSL avec AWS Database Migration Service](CHAP_Security.SSL.md).

## Limitations liées à l'utilisation de Db2 LUW comme cible pour AWS DMS
<a name="CHAP_Target.DB2.Limitations"></a>

Les limitations suivantes s'appliquent lors de l'utilisation de la base de données DB2 LUW comme cible pour. AWS DMS Pour connaître les limites d’utilisation de Db2 LUW en tant que source, consultez [Limitations liées à l'utilisation de DB2 LUW comme source pour AWS DMS](CHAP_Source.DB2.md#CHAP_Source.DB2.Limitations).
+ AWS DMS prend uniquement en charge Db2 LUW en tant que cible lorsque la source est Db2 LUW ou Db2 for z/OS.
+ L’utilisation de Db2 LUW en tant que cible ne prend pas en charge les réplications en mode LOB complet.
+ L’utilisation de DB2 LUW en tant que cible ne prend pas en charge le type de données XML pendant la phase de chargement complet. Il s’agit d’une limite de l’utilitaire IBM dbload. Pour plus d’informations, consultez [Utilitaire dbload](https://www.ibm.com/docs/en/informix-servers/14.10?topic=utilities-dbload-utility) dans la documentation *Serveurs IBM Informix*.
+ AWS DMS tronque les champs BLOB avec des valeurs correspondant au guillemet double («). Il s’agit d’une limite de l’utilitaire IBM dbload. 
+ AWS DMS ne prend pas en charge l'option de chargement complet en parallèle lors de la migration vers une cible DB2 LUW dans la version 3.5.3 de DMS. Cette option est disponible à partir de la version 3.5.4 ou ultérieure de DMS.

## Paramètres du point de terminaison lors de l'utilisation de DB2 LUW comme cible pour AWS DMS
<a name="CHAP_Target.DB2.ConnectionAttrib"></a>

Vous pouvez utiliser des paramètres de point de terminaison pour configurer votre base de données Db2 LUW cible comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la `create-endpoint` commande dans le [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), avec la syntaxe `--ibm-db2-settings '{"EndpointSetting": "value", ...}'` JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec Db2 LUW en tant que cible sont indiqués dans le tableau suivant.


| Nom | Description | 
| --- | --- | 
|  `KeepCsvFiles`  |  Si c'est vrai, AWS DMS enregistre tous les fichiers .csv sur la cible DB2 LUW qui ont été utilisés pour répliquer les données. DMS utilise ces fichiers à des fins d’analyse et de résolution des problèmes.  | 
|  `LoadTimeout`  |  Durée (en millisecondes) avant l'expiration des opérations effectuées AWS DMS par DMS sur la cible Db2. La valeur par défaut est de 1 200 (20 minutes).  | 
|  `MaxFileSize`  |  Spécifie la taille maximale (en Ko) des fichiers .csv utilisés pour transférer des données vers Db2 LUW.  | 
|  `WriteBufferSize`  |  Taille (en Ko) du tampon d’écriture de fichier en mémoire utilisé lors de la génération des fichiers .csv sur le disque local au niveau de l’instance de réplication DMS. La valeur par défaut est 1 024 (1 Mo).  | 

# Configuration des points de terminaison VPC pour AWS DMS
<a name="CHAP_VPC_Endpoints"></a>

AWS DMS prend en charge les points de terminaison Amazon Virtual Private Cloud (VPC) en tant que sources et cibles. AWS DMS peut se connecter à n'importe quelle base de données AWS source ou cible avec des points de terminaison Amazon VPC, à condition que les routes explicitement définies vers ces bases de données source et cible soient définies dans leur VPC. AWS DMS 

En prenant en charge les points de terminaison Amazon VPC, AWS DMS il est plus facile de maintenir la sécurité end-to-end du réseau pour toutes les tâches de réplication sans configuration ni configuration réseau supplémentaires. L’utilisation de points de terminaison de VPC pour tous les points de terminaison sources et cibles garantit que l’ensemble de votre trafic restera dans votre VPC et sous votre contrôle.

Pour une instance de AWS DMS réplication créée dans un sous-réseau privé ou une réplication AWS DMS sans serveur, pour se connecter à des bases de données AWS gérées, il est nécessaire de configurer un point de terminaison Amazon VPC :
+ Amazon S3
+ Amazon DynamoDB
+ Amazon Kinesis
+ Amazon Redshift
+ Amazon OpenSearch Service

Si vous utilisez AWS Secrets Manager pour stocker les informations de connexion à utiliser par DMS, vous devez également configurer un point de terminaison VPC.

À partir de AWS DMS la version 3.4.7, les points de terminaison VPC sont nécessaires pour établir une connexion entre l'instance de réplication DMS ou la réplication sans serveur et les services Amazon ci-dessus, lorsqu'un réseau privé est utilisé.

## AWS DMS Prérequis courants
<a name="CHAP_VPC_Endpoints.prereq"></a>

Avant de configurer un point de terminaison VPC, vous devez remplir les conditions préalables suivantes :
+ Localisez ou créez le VPC à utiliser avec une instance de réplication ou une AWS DMS réplication AWS DMS sans serveur. Si vous ne fournissez pas ces informations, DMS tente d'utiliser le VPC par défaut dans la région où il est configuré.
+ Assurez-vous de disposer des autorisations IAM pour créer un point de terminaison VPC. Pour vous connecter à Amazon S3 et Amazon DynamoDB, vous pouvez créer des points de terminaison VPC Gateway qui fournissent une connectivité fiable sans nécessiter de passerelle Internet ou de périphérique NAT pour votre VPC. Les points de terminaison de passerelle ne sont pas utilisés AWS PrivateLink, contrairement aux autres types de points de terminaison VPC. Pour plus d'informations, consultez la section [Points de terminaison de la passerelle](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html) dans le *AWS PrivateLinkguide*.
+ Configurez les autorisations IAM pour utiliser DMS :
  + Configurez le `dms-vpc-role` rôle. Pour plus d'informations, consultez la [politique AWS gérée : Amazon DMSVPCManagement Role](https://docs.aws.amazon.com/dms/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonDMSVPCManagementRole).
  + Configurez le `dms-cloudwatch-logs-role` rôle. Pour plus d'informations, consultez [la politique AWS gérée : Amazon DMSCloud WatchLogsRole](https://docs.aws.amazon.com/dms/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonDMSCloudWatchLogsRole).
  + AWS DMS Le mode Serverless nécessite l'existence d'un rôle lié à un service (SLR) dans votre compte. AWS DMS gère la création et l'utilisation de ce rôle. Pour plus d'informations sur la manière de vous assurer que vous disposez du SLR nécessaire, consultez la section [Rôle lié au service](https://docs.aws.amazon.com/dms/latest/userguide/slr-services-sl.html) pour Serverless. AWS DMS Lorsque vous créez une réplication, AWS DMS Serverless crée par programmation un rôle lié à un service Serverless. Vous pouvez afficher ce rôle dans la console IAM.

## Configuration d'un point de terminaison Amazon VPC avec Secrets Manager AWS
<a name="CHAP_VPC_Endpoints.vpcforsecrets"></a>

Vous pouvez configurer un point de terminaison Amazon VPC avec lequel AWS Secrets Manager pourra travailler. AWS DMS En créant ce point de terminaison, vous activez les instances de AWS DMS réplication ou les configurations de réplication sans serveur dans des sous-réseaux privés afin d'accéder en toute sécurité aux informations d'identification de base de données stockées dans Secrets Manager sans avoir besoin d'un accès Internet public.

**Conditions préalables**

Avant de configurer un point de terminaison VPC avec AWS Secrets Manager intégré AWS DMS, vous devez remplir les conditions préalables suivantes :
+ Assurez-vous de configurer tous les[AWS DMS Prérequis courants](#CHAP_VPC_Endpoints.prereq).
+ Créez et configurez [la base de données source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) ou [cible](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html) à laquelle vous souhaitez vous connecter.
+ Créez un secret dans le gestionnaire de AWS secrets avec des informations d'identification pour accéder aux bases de données source et cible. Le secret doit se trouver dans la même région que l'instance de AWS DMS réplication ou la réplication AWS DMS sans serveur. Selon le type de base de données, le schéma du secret peut varier. Pour plus d'informations, consultez la section [Utilisation des AWS DMS points de terminaison.](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html)
**Important**  
AWS DMS l'instance de réplication et la réplication AWS DMS sans serveur ne fonctionnent pas avec des secrets, gérées par Amazon RDS. Ces informations d'identification n'incluent pas les informations sur l'hôte et le port, qui sont nécessaires AWS DMS pour établir des connexions.
+ La configuration des autorisations IAM pour gérer le point de terminaison DMS est requise pour certaines bases de données : Amazon S3, Amazon Kinesis, Amazon DynamoDB, Amazon Redshift, Amazon Service, Amazon Neptune et OpenSearch Amazon Timestream. Pour plus d'informations, consultez la section [Utilisation des AWS DMS points de terminaison.](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html)

**Création d'un point de terminaison VPC pour Secrets Manager AWS**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Dans la barre de menu de la console VPC, choisissez celle qui correspond à votre Région AWS instance de AWS DMS réplication.

1. Dans le volet de navigation du VPC, choisissez **Points de terminaison**.

1. Dans **Points de terminaison**, choisissez **Créer un point de terminaison**.

1. Configurez le point de terminaison VPC comme suit :

   1. Sélectionnez **Type** en tant que **AWS services**.

   1. Dans la zone de texte **Nom du service**, recherchez **secretsmanager** et sélectionnez **com.amazonaws. [région] .secretsmanager.** Assurez-vous que le **type** du service sélectionné est **Interface**.

   1. Sous **Paramètres réseau**, sélectionnez le VPC qui s'exécute dans la même région que votre instance de réplication DMS ou sur lequel vous avez créé la réplication sans serveur.

   1. Dans la section **Sous-réseaux**, sélectionnez les sous-réseaux souhaités sur lesquels vous souhaitez que DMS fonctionne. Assurez-vous de ne sélectionner que des sous-réseaux privés. Vous pouvez identifier un sous-réseau privé à l'aide de l'ID de sous-réseau. Par exemple : `vpc-xxxxxx-subnet-private1-us-west-2a`.

      Si votre instance de réplication DMS est créée sans accès public, vous devez choisir les tables de routage associées aux sous-réseaux privés dans lesquels réside votre instance de réplication.
**Note**  
Assurez-vous de noter les sous-réseaux privés tels que vous êtes tenus de les fournir lors de la création d'un groupe de sous-réseaux de réplication DMS. Pour connecter DMS au gestionnaire de AWS secrets à l'aide des points de terminaison VPC, les sous-réseaux spécifiés pour le point de terminaison VPC doivent être identiques à ceux du groupe de sous-réseaux de réplication DMS.

   1. Sélectionnez les **groupes de sécurité** souhaités. Les règles du groupe de sécurité contrôlent le trafic vers l'interface réseau du point de terminaison à partir des ressources de votre VPC. Si vous ne spécifiez aucun groupe de sécurité, le groupe de sécurité par défaut est sélectionné.

1. Sélectionnez **Accès complet** sous **Politique**. Si vous souhaitez utiliser une politique personnalisée pour spécifier votre propre contrôle d'accès, sélectionnez **Personnalisé**. Vous pouvez utiliser une politique de confiance conforme au document de politique JSON,`dms-vpc-role`. Pour plus d'informations, consultez [la section Création des rôles IAM à utiliser avec AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/security-iam.html#CHAP_Security.APIRole).

1. Sélectionnez **Créer un point de terminaison**.

   Vous devez attendre que le statut soit atteint`Available`. Votre point de terminaison VPC possède désormais un ID commençant par. `vpce-xxxx`

Vous avez maintenant créé avec succès un point de terminaison VPC. Vous devez configurer les AWS DMS points de terminaison et les groupes de sous-réseaux DMS. Selon l'option de migration choisie, configurez l'instance de réplication DMS ou la réplication sans serveur.

## Configuration d'un point de terminaison Amazon VPC avec Amazon S3
<a name="CHAP_VPC_Endpoints.vpcfors3"></a>

Vous pouvez configurer un point de terminaison Amazon VPC avec lequel Amazon S3 pourra fonctionner. AWS DMS En créant ce point de terminaison, vous activez les instances de AWS DMS réplication ou les configurations de réplication sans serveur dans des sous-réseaux privés afin d'accéder en toute sécurité aux informations d'identification de base de données stockées dans des compartiments S3 sans avoir besoin d'un accès Internet public.

**Conditions préalables**

Avant de configurer un point de terminaison VPC avec Amazon S3 intégré AWS DMS, vous devez remplir les conditions préalables suivantes :
+ Assurez-vous de configurer tous les[AWS DMS Prérequis courants](#CHAP_VPC_Endpoints.prereq).
+ Créez un compartiment Amazon S3 à utiliser comme base de données [source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) ou [cible](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html) avec AWS DMS. N'activez pas la gestion des versions pour S3. Si vous avez besoin de la gestion des versions S3, utilisez des politiques de cycle de vie pour supprimer les anciennes versions de manière active. Sinon, vous risquez de rencontrer des échecs de connexion aux tests de point de terminaison en raison d'un délai d'expiration d'un appel d'objet de liste S3.
+ Configurez les autorisations IAM pour gérer le point de terminaison DMS Amazon S3. Si vous utilisez la AWS DMS console, le rôle IAM doté des autorisations nécessaires peut être créé si vous êtes autorisé à créer des rôles IAM.

**Création d’un point de terminaison de VPC pour Amazon S3**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Dans la barre de menu de la console VPC, choisissez celle qui correspond à votre Région AWS instance de AWS DMS réplication.

1. Dans le volet de navigation du VPC, choisissez **Points de terminaison**.

1. Dans **Points de terminaison**, choisissez **Créer un point de terminaison**.

1. Configurez le point de terminaison VPC comme suit :

   1. Sélectionnez **Type** en tant que **AWS services**.

   1. Dans la zone de texte **Nom du service**, recherchez **s3** et sélectionnez **com.amazonaws. [région] .s3.** Assurez-vous que le **type** du service sélectionné est **Gateway**. Vous pouvez créer un point de terminaison VPC Gateway lorsque vous vous connectez à Amazon S3 et DynamoDB. Contrairement à d'autres types de points de terminaison d'un VPC, les points de terminaison de passerelle n'utilisent pas AWS PrivateLink.

   1. Sous **Paramètres réseau**, sélectionnez le VPC qui s'exécute dans la même région que votre instance de réplication DMS ou sur lequel vous avez créé la réplication sans serveur.

   1. Dans la section **Sous-réseaux**, sélectionnez les sous-réseaux souhaités sur lesquels vous souhaitez que DMS fonctionne. Assurez-vous de ne sélectionner que des sous-réseaux privés. Vous pouvez identifier un sous-réseau privé à l'aide de l'ID de sous-réseau. Par exemple : `vpc-xxxxxx-subnet-private1-us-west-2a`.
**Note**  
Si vous avez créé votre instance de réplication DMS sans accès public, vous devez choisir les tables de routage associées aux sous-réseaux privés situés dans la même région que votre instance DMS. Assurez-vous de noter les sous-réseaux privés tels que vous êtes tenus de les fournir lors de la création d'un groupe de sous-réseaux de réplication DMS. Pour connecter DMS à Amazon S3 à l'aide des points de terminaison VPC, les sous-réseaux spécifiés pour le point de terminaison VPC doivent être identiques à ceux du groupe de sous-réseaux de réplication DMS.

1. Sélectionnez **Accès complet** sous **Politique**. Si vous souhaitez utiliser une politique personnalisée pour spécifier votre propre contrôle d'accès, sélectionnez **Personnalisé**. Vous pouvez utiliser une politique de confiance conforme au document de politique JSON,`dms-vpc-role`. Pour plus d'informations, consultez [la section Création des rôles IAM à utiliser avec AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/security-iam.html#CHAP_Security.APIRole).

1. Sélectionnez **Créer un point de terminaison**.

   Vous devez attendre que le statut soit atteint`Available`. Votre point de terminaison VPC possède désormais un ID commençant par. `vpce-xxxx`

Vous avez maintenant créé avec succès un point de terminaison VPC. Vous devez configurer les AWS DMS points de terminaison et les groupes de sous-réseaux DMS. Selon l'option de migration choisie, configurez l'instance de réplication DMS ou la réplication sans serveur.

## Configuration d'un point de terminaison Amazon VPC pour Amazon DynamoDB
<a name="CHAP_VPC_Endpoints.vpcfordynamoDB"></a>

Lorsque vous utilisez des instances de AWS DMS réplication dans des sous-réseaux privés ou une réplication AWS DMS sans serveur, vous devez créer un point de terminaison VPC pour établir une connectivité sécurisée avec Amazon DynamoDB. Sans configuration de point de terminaison VPC, AWS DMS risque des erreurs de connexion.

Lors de la création du point de terminaison VPC, vous devez sélectionner le **type de point de terminaison** comme **passerelle** ou **interface** dans la console DMS. Pour en savoir plus, consultez :
+ [AWS DMS Prérequis courants](#CHAP_VPC_Endpoints.prereq)
+ [Points de terminaison de passerelle pour Amazon DynamoDB](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-ddb.html)
+ [Comment résoudre les problèmes de connectivité avec les points de terminaison Amazon VPC de ma passerelle ?](https://repost.aws/knowledge-center/connect-s3-vpc-endpoint)

## Configuration d'un point de terminaison Amazon VPC pour Amazon Kinesis
<a name="CHAP_VPC_Endpoints.vpcforkinesis"></a>

Lorsque vous utilisez des instances de AWS DMS réplication dans des sous-réseaux privés ou une réplication AWS DMS sans serveur, vous devez créer un point de terminaison VPC pour établir une connectivité sécurisée avec Amazon Kinesis. Sans configuration de point de terminaison VPC, AWS DMS risque des erreurs de connexion. Pour en savoir plus, consultez :
+ [AWS DMS Prérequis courants](#CHAP_VPC_Endpoints.prereq)
+ [Utilisation d'Amazon Kinesis Data Streams comme cible pour AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html)

## Configuration d'un point de terminaison Amazon VPC pour Amazon Redshift
<a name="CHAP_VPC_Endpoints.vpcforredshift"></a>

Lorsque vous utilisez des instances de AWS DMS réplication dans des sous-réseaux privés ou une réplication AWS DMS sans serveur, vous devez créer un point de terminaison VPC pour établir une connectivité sécurisée avec Amazon Redshift. Sans configuration de point de terminaison VPC, AWS DMS risque des erreurs de connexion. Pour en savoir plus, consultez :
+ [AWS DMS Prérequis courants](#CHAP_VPC_Endpoints.prereq)
+ [Points de terminaison VPC gérés par Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-cluster-cross-vpc.html)

## Configuration d'un point de terminaison Amazon VPC pour Amazon Service OpenSearch
<a name="CHAP_VPC_Endpoints.vpcforos"></a>

Lorsque vous utilisez des instances de AWS DMS réplication dans des sous-réseaux privés ou une réplication AWS DMS sans serveur, vous devez créer un point de terminaison VPC pour établir une connectivité sécurisée avec Amazon Service. OpenSearch Sans configuration de point de terminaison VPC, AWS DMS risque des erreurs de connexion. Pour en savoir plus, consultez :
+ [AWS DMS Prérequis courants](#CHAP_VPC_Endpoints.prereq)
+ [Configuration de l'accès VPC pour les pipelines Amazon Ingestion OpenSearch ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-security.html)

## Configuration des instances de réplication, des groupes de sous-réseaux DMS et des points de terminaison DMS
<a name="CHAP_VPC_Endpoints.option.123"></a>

Vous devez configurer les ressources de AWS DMS réplication après avoir créé les points de terminaison VPC. Vous pouvez configurer des groupes de sous-réseaux de réplication pour l'isolation du réseau, des instances de réplication ou des réplications sans serveur pour le traitement, et des points de terminaison pour la connexion aux bases de données source et cible afin de permettre une migration sécurisée des bases de données au sein de votre VPC.

### Configuration d'une instance AWS DMS de réplication
<a name="CHAP_VPC_Endpoints.option.123.provisioned"></a>

Pour configurer une instance de réplication AWS DMS provisionnée, vous devez configurer des groupes de sous-réseaux de réplication DMS.

**Création de groupes de sous-réseaux de réplication DMS**

1. Connectez-vous à la console DMS AWS Management Console et ouvrez-la.

1. Dans le volet de navigation de gauche, ouvrez la section **Groupes de sous-réseaux** et sélectionnez **Créer un groupe de sous-réseaux**.

1. Entrez le **nom** et **la description**.

1. Dans le menu déroulant **VPC**, sélectionnez le VPC qui s'exécute dans la même région que celle où vous souhaitez créer votre instance de réplication DMS.

1. Dans le menu déroulant **Ajouter des sous-réseaux**, ajoutez les sous-réseaux privés que vous avez spécifiés lors de la création de votre point de terminaison VPC. Vous pouvez identifier un sous-réseau privé à l'aide de l'ID de sous-réseau. Par exemple : `vpc-xxxxxx-subnet-private1-us-west-2a`.

1. Cliquez sur **Créer un groupe de sous-réseaux**.

**Création d'une instance de réplication DMS (provisionnée)**

1. Accédez au pour AWS Management Console créer une instance de réplication. Pour plus d'informations, consultez la section [Création d'une instance de réplication](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html). Pour en savoir plus sur le choix, le dimensionnement et la configuration des instances de réplication, consultez la section [Utilisation d'une instance de AWS DMS réplication](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html).

1. Dans la section **Connectivité et sécurité**, sélectionnez le VPC dans le **cloud privé virtuel (VPC) IPv4 ou en **mode Dual-stack** pour** lequel vous souhaitez créer l'instance de réplication. AWS DMS Pour plus d'informations, consultez [Configuration d'un réseau pour une instance de réplication](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html).

1. Dans le menu déroulant **Groupe de sous-réseaux de réplication**, choisissez le groupe de sous-réseaux que vous avez créé pour votre instance de réplication.
**Note**  
Assurez-vous que les sous-réseaux spécifiés pour le point de terminaison VPC sont identiques aux sous-réseaux du groupe de sous-réseaux d'instances de réplication DMS. Vous devez supprimer de votre groupe de sous-réseaux tous les sous-réseaux qui ne sont pas associés au point de terminaison VPC.

1. Décochez la case **Accessible au public** pour désactiver l'accès public.

1. Dans la section **Paramètres avancés**, dans le menu déroulant des **groupes de sécurité VPC**, sélectionnez tous les groupes de sous-réseaux VPC associés à votre instance de réplication. Ces groupes doivent inclure le groupe de sous-réseaux qui inclut les sous-réseaux que vous avez spécifiés lors de la création du point de terminaison VPC.

   Si vous ne spécifiez pas les groupes de sous-réseaux, DMS choisit le **groupe de sous-réseaux de réplication** par défaut ou le crée s'il n'existe pas. Pour plus d'informations, consultez [la section Configuration du groupe de sécurité pour AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Advanced.Endpoints.securitygroup.html).

1. Terminez la configuration de l'instance de réplication et sélectionnez **Créer une instance de réplication**.

   Vous devez attendre que le statut soit atteint`Available`.

**Création de AWS DMS points de terminaison source et cible**

1. Connectez-vous à la console DMS.

1. Accédez aux **AWS DMS points de terminaison** et sélectionnez **Créer un point de terminaison**.

1. Créez et configurez les points de terminaison [source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) et [cible](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html).

1. Dans la console DMS, vous pouvez choisir un rôle IAM existant ou créer un nouveau rôle IAM pour accéder à vos informations d'identification de base de données stockées dans le AWS gestionnaire de secrets.

1. Cliquez sur **Exécuter le test** pour tester la connexion du point de terminaison dans votre instance de réplication DMS. Votre instance de réplication doit avoir `Available` le statut requis pour exécuter le test avec elle.

1. Sélectionnez **Créer un point de terminaison**.

### Configuration d'une AWS DMS réplication sans serveur
<a name="CHAP_VPC_Endpoints.option.123.serverless"></a>

Pour configurer une réplication AWS DMS sans serveur, vous devez configurer des groupes de sous-réseaux de réplication DMS.

**Création de AWS DMS points de terminaison source et cible**

1. Connectez-vous à la console DMS.

1. Accédez aux **AWS DMS points de terminaison** et sélectionnez **Créer un point de terminaison**.

1. Créez et configurez les points de terminaison [source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) et [cible](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html).

1. Dans la console DMS, vous pouvez choisir un rôle IAM existant ou créer un nouveau rôle IAM pour accéder à vos informations d'identification de base de données stockées dans le AWS gestionnaire de secrets.
**Note**  
Pour la réplication AWS DMS sans serveur, vous ne pouvez pas tester la connexion pour le point de terminaison DMS ni utiliser l'`TestConnection`API. Le test de connexion est effectué lors du lancement de la réplication sans serveur entre l'instance DMS et vos source/target bases de données. Pour plus d'informations, consultez la section [Composants AWS DMS sans serveur](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.Components.html).

1. Sélectionnez **Créer un point de terminaison**.

**Création de groupes de sous-réseaux de réplication DMS**

1. Connectez-vous à la console DMS AWS Management Console et ouvrez-la.

1. Dans le volet de navigation de gauche, ouvrez la section **Groupes de sous-réseaux** et sélectionnez **Créer un groupe de sous-réseaux**.

1. Entrez le **nom** et **la description**.

1. Dans le menu déroulant **VPC**, sélectionnez le VPC qui s'exécute dans la même région que votre instance sans serveur DMS.

1. Dans le menu déroulant **Ajouter des sous-réseaux**, ajoutez les sous-réseaux privés que vous avez spécifiés lors de la création de votre point de terminaison VPC. Vous pouvez identifier un sous-réseau privé à l'aide de l'ID de sous-réseau. Par exemple : `vpc-xxxxxx-subnet-private1-us-west-2a`.

1. Cliquez sur **Créer un groupe de sous-réseaux**.

**Création d'une réplication DMS sans serveur**

1. Accédez à la console DMS pour créer une instance sans serveur. Pour plus d'informations, consultez la section [Création d'une réplication sans serveur](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.Components.html#CHAP_Serverless.create). Pour en savoir plus sur le choix, le dimensionnement et la configuration des instances sans serveur, consultez la section [Utilisation](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.html) des instances sans serveur. AWS DMS 

1. Dans la section **Connectivité et sécurité**, sélectionnez le VPC dans le menu déroulant **Virtual Private Cloud (VPC)** dans lequel vous souhaitez créer l'instance sans serveur. AWS DMS Pour plus d'informations, consultez [Configuration d'un réseau pour une instance de réplication](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html).

1. Dans le menu déroulant **Groupe de sous-réseaux**, choisissez le groupe de sous-réseaux que vous avez créé pour votre instance sans serveur.
**Note**  
Assurez-vous que les sous-réseaux spécifiés pour le point de terminaison VPC sont identiques aux sous-réseaux du groupe de sous-réseaux d'instances sans serveur DMS. Vous devez supprimer de votre groupe de sous-réseaux tous les sous-réseaux qui ne sont pas associés à votre instance sans serveur.

1. Sélectionnez **Zone de disponibilité**.

1. Dans le menu déroulant **Unités de capacité maximale du DMS (DCU)**, sélectionnez la capacité DCU souhaitée.

1. Sélectionnez **Créer une tâche**. Cela crée une configuration de réplication sans serveur DMS qui apparaît dans la liste des tâches avec le statut. `Start required`

1. Pour démarrer la réplication sans serveur, choisissez votre tâche et sélectionnez **Démarrer** dans le menu **Actions**.

## Qui est concerné lors de la migration vers AWS DMS les versions 3.4.7 et supérieures ?
<a name="CHAP_VPC_Endpoints.Users_Impacted"></a>

Vous êtes concerné si vous utilisez un ou plusieurs des points de AWS DMS terminaison répertoriés précédemment, et que ces points de terminaison ne sont pas routables publiquement ou qu'aucun point de terminaison VPC ne leur est déjà associé.

## Qui n'est pas concerné par la migration vers AWS DMS les versions 3.4.7 et supérieures ?
<a name="CHAP_VPC_Endpoints.Users_Not_Impacted"></a>

Vous n’êtes pas affecté si :
+ Vous n'utilisez pas un ou plusieurs des AWS DMS points de terminaison répertoriés précédemment.
+ Vous utilisez l'un des points de terminaison répertoriés précédemment et ils sont routables publiquement.
+ vous utilisez un ou plusieurs des points de terminaison répertoriés précédemment et que des points de terminaison de VPC leur sont associés.

## Préparation d'une migration vers les versions 3.4.7 et supérieures de AWS DMS
<a name="CHAP_VPC_Endpoints.User_Mitigation"></a>

Pour éviter l'échec des tâches AWS DMS lorsque vous utilisez l'un des points de terminaison décrits précédemment, effectuez l'une des étapes suivantes avant de mettre à niveau AWS DMS vers la version 3.4.7 ou supérieure :
+ Rendez les points de terminaison AWS DMS concernés routables publiquement. Par exemple, ajoutez une route Internet Gateway (IGW) à n'importe quel VPC déjà utilisé par AWS votre instance de réplication DMS pour rendre tous ses points de terminaison source et cible routables publiquement.
+ Créez des points de terminaison de VPC pour accéder à tous les points de terminaison sources et cibles utilisés par AWS DMS, comme décrit ci-dessous.

Pour tous les points de terminaison VPC existants que vous utilisez pour les points de terminaison source et cible de votre AWS DMS, assurez-vous qu'ils utilisent une politique de confiance conforme au document de politique XML. `dms-vpc-role` Pour plus d’informations sur ce document de politique XML, consultez [Création des rôles IAM à utiliser avec AWS DMS](security-iam.md#CHAP_Security.APIRole).

Sinon, configurez vos instances de réplication en tant que points de terminaison de VPC en ajoutant un point de terminaison de VPC au VPC où elles se trouvent. Si vous avez configuré vos instances de réplication sans points de terminaison publics, l'ajout d'un point de terminaison VPC accessible au public au VPC qui contient vos instances de réplication les rend accessibles au public. Vous n’avez rien d’autre à faire pour associer spécifiquement vos instances de réplication au point de terminaison de VPC.

**Note**  
Des services différents peuvent avoir des configurations de point de terminaison de VPC uniques. Par exemple, lors de l’utilisation d’ AWS Secrets Manager, vous n’avez généralement pas besoin d’ajuster la table de routage. Vérifiez toujours les exigences spécifiques à chaque service.

Pour plus d'informations sur la configuration des points de terminaison VPC pour une instance de réplication AWS DMS, consultez. [Configurations réseau pour la migration de base de données](CHAP_ReplicationInstance.VPC.md#CHAP_ReplicationInstance.VPC.Configurations) *Pour plus d'informations sur la création de points de terminaison VPC d'interface pour accéder aux AWS services en général, consultez la section [Accès à un AWS service à l'aide d'un point de terminaison VPC d'interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) dans le Guide.AWS PrivateLink * [Pour plus d'informations sur la disponibilité régionale du AWS DMS pour les points de terminaison VPC, consultez AWS le tableau des régions.](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

# Déclarations DDL prises en charge par AWS DMS
<a name="CHAP_Introduction.SupportedDDL"></a>

Vous pouvez exécuter des instructions de langage de définition de données (Data Definition Language, DDL) sur la base de données source au cours du processus de migration des données. Ces instructions sont répliquées dans la base de données cible par le serveur de réplication. 

Les instructions DDL prises en charge sont les suivantes : 
+ Create table
+ Drop table
+ Rename table
+ Truncate table
+ Add column
+ Drop column
+ Rename column
+ Modifier le type de données d'une colonne

DMS ne capture pas toutes les instructions DDL prises en charge pour certains types de moteurs sources. De plus, DMS gère différemment les instructions DDL lorsqu’il les applique à des moteurs cibles spécifiques. Pour en savoir plus sur les instructions DDL prises en charge pour une source spécifique et sur la manière dont elles sont appliquées à une cible, consultez la rubrique de documentation spécifique à ce point de terminaison source et cible.

Vous pouvez utiliser les paramètres de tâche pour configurer la façon dont DMS gère le comportement DDL lors de la capture des données de modification (CDC). Pour de plus amples informations, veuillez consulter [Paramètres de tâche pour la gestion du DDL de traitement des modifications](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).

## Limites et considérations
<a name="CHAP_Introduction.SupportedDDL.Limitations"></a>

Des séquences rapides d'opérations DDL dans la base de données source (telles que DDL>DML>DDL) peuvent entraîner une analyse incorrecte du journal, entraînant une AWS DMS perte de données ou un comportement inattendu. Pour maintenir la cohérence des données, attendez AWS DMS d'appliquer chaque modification à la cible avant d'effectuer les opérations suivantes.

Par exemple, lors de la capture des données de modification (CDC), plusieurs opérations rapides de renommage de table sur une table source peuvent déclencher des erreurs. Si vous renommez une table, puis que vous lui redonnez rapidement son nom d'origine, cela AWS DMS peut indiquer que la table existe déjà dans la base de données cible.

# Configuration avancée des terminaux
<a name="CHAP_Advanced.Endpoints"></a>

Vous pouvez configurer les paramètres avancés de vos points de terminaison dans AWS Database Migration Service (AWS DMS) afin de contrôler le comportement des points de terminaison source et cible pendant le processus de migration. Dans le cadre de la configuration avancée, vous pouvez configurer le peering AWS DMS VPC pour permettre une communication sécurisée entre les groupes de sécurité DMS pour contrôler le trafic entrant et sortant VPCs, les listes de contrôle d'accès au réseau (NACLs) comme couche de sécurité supplémentaire et les points de terminaison VPC pour Secrets Manager. AWS 

Vous pouvez définir ces configurations lors de la création du point de terminaison ou les modifier ultérieurement via la AWS DMS console ou l'API, afin d'affiner les processus de migration en fonction des exigences spécifiques du moteur de base de données et des besoins de performance.

Vous trouverez ci-dessous plus de détails sur la configuration avancée des terminaux.

**Topics**
+ [Configuration de peering VPC pour. AWS DMS](CHAP_Advanced.Endpoints.vpc.peering.md)
+ [Configuration du groupe de sécurité pour AWS DMS](CHAP_Advanced.Endpoints.securitygroup.md)
+ [Configuration de la liste de contrôle d'accès réseau (NACL) pour AWS DMS](CHAP_Advanced.Ednpoints.NACL.md)
+ [Configuration du point de AWS DMS terminaison VPC du gestionnaire de secrets](CHAP_Advanced.Endpoints.secretsmanager.md)
+ [Considérations supplémentaires](#CHAP_secretsmanager.additionalconsiderations)

# Configuration de peering VPC pour. AWS DMS
<a name="CHAP_Advanced.Endpoints.vpc.peering"></a>

L'appairage VPC permet la connectivité entre deux réseaux privés VPCs, ce qui permet aux instances de AWS DMS réplication et aux points de terminaison de base de données de communiquer entre différents réseaux VPCs comme s'ils se trouvaient sur le même réseau. Cela est crucial lorsque votre instance de réplication DMS réside dans un VPC alors que les bases de données source et cible existent VPCs séparément, ce qui permet une migration de données directe et sécurisée sans passer par l'Internet public.

Lorsque vous utilisez Amazon RDS, vous devez configurer le peering VPC entre DMS et RDS si vos instances sont situées dans des lieux différents. VPCs

Vous devez suivre les étapes suivantes :

**Création d'une connexion d'appairage de VPC**

1. Accédez à la [console Amazon VPC.](https://console.aws.amazon.com/vpc/)

1. Dans le volet de navigation, sélectionnez **Peering Connections** sous **Virtual Private Cloud**.

1. Cliquez sur **Créer une connexion d'appairage.**

1. Configurez les connexions d'appairage :
   + Tag (facultatif) : entrez le nom de la connexion d'appairage (exemple :`DMS-RDS-Peering`).

     **Demandeur VPC : sélectionnez** le VPC qui contient votre instance DMS.
   + Accepteur **VPC :** sélectionnez le VPC qui contient votre instance RDS.
**Note**  
Si le VPC accepteur est associé à un autre AWS compte, vous devez disposer de l'ID de compte et de l'ID VPC de ce compte.

1. Cliquez sur **Créer la connexion d'appairage**.

**Acceptation de la connexion d'appairage VPC**

1. Dans la liste des **connexions d'appairage**, recherchez la nouvelle connexion d'appairage dont le statut est **En attente d'acceptation**.

1. Sélectionnez la connexion d'appairage appropriée, cliquez sur **Actions** et sélectionnez **Accepter la demande**.

   L'état de la connexion d'appairage passe à **Actif**.

**Mise à jour des tables de routage**

Pour activer le trafic entre les VPCs, vous devez mettre à jour la table de routage dans les deux VPCs. Pour mettre à jour les tables de routage dans le VPC DMS :

1. Identifiez le bloc CIDR du VPC RDS :

   1. Accédez à votre VPC RDS VPCs et sélectionnez-le.

   1. Copiez la valeur IPv4 CIDR dans **CIDRs**l'onglet.

1. Identifiez les tables de routage DMS pertinentes à l'aide de la carte des ressources :

   1. Accédez à votre VPC DMS VPCs et sélectionnez-le.

   1. Cliquez sur l'onglet **Carte des ressources** et notez les tables de routage associées aux sous-réseaux où se trouve votre instance DMS.

1. Mettez à jour toutes les tables de routage dans le VPC DMS :

   1. Accédez aux tables de routage dans la console [Amazon VPC.](https://console.aws.amazon.com/vpc/)

   1. Sélectionnez les identifiants des tables de routage pour le VPC DMS. Vous pouvez les ouvrir depuis l'onglet **Carte des ressources** du VPC.

   1. Cliquez sur **Modifier les itinéraires**.

   1. Cliquez sur Ajouter un itinéraire et entrez les informations suivantes :
      + **Destination** : entrez le bloc IPv4 CIDR du VPC RDS (exemple :). `10.1.0.0/16`
      + **Cible** : sélectionnez l'ID de configuration d'appairage (exemple :`pcx-1234567890abcdef`).

   1. Cliquez sur **Enregistrer les itinéraires**.

      Vos routes VPC sont enregistrées pour le VPC DMS. Procédez de la même manière pour votre VPC RDS.

**Mise à jour des groupes de sécurité**

1. Vérifiez le groupe de sécurité de l'instance DMS :

   1. Vous devez vous assurer que les règles de sortie autorisent le trafic vers l'instance RDS :
     + **Type** : TCP personnalisé ou port de base de données spécifique (exemple : 3306 pour MySQL).
     + **Destination** : le bloc CIDR du VPC RDS ou le groupe de sécurité de l'instance RDS.

1. Vérifiez le groupe de sécurité de l'instance RDS :

   1. Vous devez vous assurer que les règles entrantes autorisent le trafic provenant de l'instance DMS :
     + **Type** : port de base de données spécifique.
     + Source : Le bloc CIDR du VPC DMS ou le groupe de sécurité de l'instance RDS.

**Note**  
Vous devez également vous assurer que :  
**Connexion d'appairage active : assurez-vous que la connexion** d'appairage VPC est à **l'état actif avant de continuer**.
**Carte des ressources** : utilisez l'onglet **Carte des ressources** de la [console Amazon VPC](https://console.aws.amazon.com/vpc/) pour identifier les tables de routage qui doivent être mises à jour.
**Aucun chevauchement de blocs d'adresse CIDR : les blocs** d'adresse CIDR ne VPCs doivent pas se chevaucher.
**Meilleures pratiques en matière de sécurité** : limitez les règles du groupe de sécurité aux ports et aux sources nécessaires.  
Pour plus d'informations, consultez la section [Connexions de peering VPC](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html) dans le guide de l'utilisateur *d'Amazon Virtual Private Cloud*.

# Configuration du groupe de sécurité pour AWS DMS
<a name="CHAP_Advanced.Endpoints.securitygroup"></a>

Le groupe de sécurité entrant AWS DMS doit autoriser les connexions entrantes et sortantes pour vos instances de réplication sur le port de base de données approprié. Si vous utilisez Amazon RDS, vous devez configurer le groupe de sécurité entre DMS et RDS pour vos instances.

Vous devez suivre les étapes suivantes :

**Configuration du groupe de sécurité de l'instance RDS**

1. Accédez à la [console Amazon VPC.](https://console.aws.amazon.com/vpc/)

1. Dans le volet de navigation de gauche, sous **Sécurité**, sélectionnez **Groupes de sécurité**.

1. Sélectionnez le groupe de sécurité RDS associé à votre instance RDS.

1. Modifiez les règles de trafic entrant :

   1. Cliquez sur **Actions** et sélectionnez **Modifier les règles entrantes**.

   1. Cliquez sur **Ajouter une règle** pour créer une nouvelle règle.

   1. Configurez la règle comme suit :
      + **Type** : Sélectionnez votre type de base de données (exemple : MySQL/Aurora pour le port 3306, PostgreSQL pour le port 5432).
      + **Protocole** : Ce protocole est automatiquement renseigné en fonction de votre type de base de données.
      + **Plage de ports** : cette plage est automatiquement renseignée en fonction de votre type de base de données.
      + **Source** : choisissez **Personnalisé** et collez l'ID du groupe de sécurité associé à votre instance DMS. Cela autorise le trafic provenant de n'importe quelle ressource au sein de ce groupe de sécurité. Vous pouvez également spécifier la plage d'adresses IP (bloc CIDR) de votre instance DMS.

   1. Cliquez sur **Enregistrer les règles**.

**Configuration du groupe de sécurité de l'instance de réplication DMS**

1. Accédez à la [console Amazon VPC.](https://console.aws.amazon.com/vpc/)

1. Dans le volet de navigation de gauche, sous **Sécurité**, sélectionnez **Groupes de sécurité**.

1. Dans la liste des **groupes de sécurité**, recherchez et sélectionnez le groupe de sécurité associé à votre instance de réplication DMS.

1. Modifiez les règles de sortie :

   1. Cliquez sur **Actions** et sélectionnez **Modifier les règles sortantes**.

   1. Cliquez sur **Ajouter une règle** pour créer une nouvelle règle.

   1. Configurez la règle comme suit :
      + Type : Sélectionnez votre type de base de données (exemple : MySQL/Aurora, PostgreSQL).
      + Protocole : Ce protocole est automatiquement renseigné en fonction de votre type de base de données.
      + Plage de ports : cette plage est automatiquement renseignée en fonction de votre type de base de données.
      + Source : choisissez **Personnalisé** et collez l'ID du groupe de sécurité associé à votre instance RDS. Cela autorise le trafic provenant de n'importe quelle ressource au sein de ce groupe de sécurité. Vous pouvez également spécifier la plage d'adresses IP (bloc CIDR) de votre instance RDS.

   1. Cliquez sur **Enregistrer les règles**.

## Considérations supplémentaires
<a name="CHAP_securitygroup_additional_considerations"></a>

Vous devez prendre en compte les informations de configuration supplémentaires suivantes :
+ **Utiliser les références aux groupes** de sécurité : Le référencement des groupes de sécurité dans les instances source ou de destination permet une gestion dynamique et est plus sûr que l'utilisation d'adresses IP, car il inclut automatiquement toutes les ressources du groupe.
+ **Ports de base** de données : assurez-vous d'utiliser le port approprié pour votre base de données.
+ **Meilleures pratiques en matière de sécurité** : n'ouvrez que les ports nécessaires pour minimiser les risques de sécurité. Vous devez également revoir régulièrement les règles de votre groupe de sécurité pour vous assurer qu'elles répondent à vos normes et exigences de sécurité.

# Configuration de la liste de contrôle d'accès réseau (NACL) pour AWS DMS
<a name="CHAP_Advanced.Ednpoints.NACL"></a>

Lorsque vous utilisez Amazon RDS comme source de réplication, vous devez mettre à jour les listes de contrôle d'accès réseau (NACLs) pour votre instance DMS et RDS. Assurez-vous qu' NACLs ils sont associés aux sous-réseaux où résident ces instances. Cela autorise le trafic entrant et sortant sur le port de base de données spécifique.

Pour mettre à jour les listes de contrôle d'accès réseau, vous devez effectuer les étapes suivantes :

**Note**  
Si vos instances DMS et RDS se trouvent dans le même sous-réseau, il vous suffit de mettre à jour le NACL de ce sous-réseau.

**Identifiez les éléments pertinents NACLs**

1. Accédez à la [console Amazon VPC.](https://console.aws.amazon.com/vpc/)

1. Dans le volet de navigation de gauche, sous **Sécurité**, sélectionnez **Réseau ACLs**.

1. Sélectionnez le sous-réseau pertinent NACLs associé aux sous-réseaux dans lesquels résident vos instances DMS et RDS.

**Mettez à jour NACLs le sous-réseau de l'instance DMS**

1. Identifiez le NACL associé au sous-réseau de votre instance DMS. Pour ce faire, vous pouvez parcourir les sous-réseaux de la console [Amazon VPC](https://console.aws.amazon.com/vpc/), rechercher le sous-réseau DMS et noter l'ID NACL associé.

1. Modifiez les règles de trafic entrant :

   1. Cliquez sur l'onglet **Règles d'entrée** pour le NACL sélectionné.

   1. Sélectionnez **Modifier les règles entrantes**.

   1. Ajoutez une nouvelle règle :
      + **Règle numéro** 1 : Choisissez un numéro unique (exemple : 100).
      + **Type** : Sélectionnez une **règle TCP personnalisée**.
      + **Protocole** : TCP
      + **Plage de ports** : entrez le port de votre base de données (exemple : 3306 pour MySQL).
      + **Source** : Entrez le bloc CIDR du sous-réseau RDS (exemple : 10.1.0.0/16).
      + **Autoriser/Refuser** **: sélectionnez Autoriser.**

1. Modifiez les règles de sortie :

   1. Cliquez sur l'onglet **Règles sortantes** pour le NACL sélectionné.

   1. Cliquez sur **Modifier les règles de trafic sortant**.

   1. Ajoutez une nouvelle règle :
      + **Règle no** : utilisez le même numéro que celui utilisé dans les règles de trafic entrant.
      + **Type** : Tout le trafic.
      + **Destination** : 0.0.0.0/0
      + **Autoriser/Refuser** **: sélectionnez Autoriser.**

1. Cliquez sur **Save changes** (Enregistrer les modifications).

1. Procédez de la même manière pour mettre à jour le sous-réseau NACLs associé à l'instance RDS.

## Vérifiez les règles de la NACL
<a name="CHAP_NACL.verify.NACL.Rules"></a>

Vous devez vous assurer que les critères suivants sont respectés pour respecter les règles de la NACL. :
+ **Ordre des règles** : NACLs traite les règles dans l'ordre croissant en fonction du numéro de règle. Assurez-vous que le numéro de toutes les règles définies comme « **Autoriser** » est inférieur à celui de toutes les règles définies comme « **Refuser** », car cela pourrait bloquer le trafic.
+ **Nature apatride** : NACLs êtes apatride. Vous devez autoriser explicitement le trafic entrant et sortant.
+ **Blocs d'adresse CIDR** : vous devez vous assurer que les blocs d'adresse CIDR que vous utilisez représentent correctement les sous-réseaux de vos instances DMS et RDS.

# Configuration du point de AWS DMS terminaison VPC du gestionnaire de secrets
<a name="CHAP_Advanced.Endpoints.secretsmanager"></a>

Vous devez créer un point de terminaison VPC pour accéder au AWS Secrets Manager à partir d'une instance de réplication dans un sous-réseau privé. Cela permet à l'instance de réplication d'accéder au Secrets Manager directement via le réseau privé sans envoyer de trafic sur l'Internet public.

Pour configurer, vous devez suivre les étapes suivantes :

**Créez un groupe de sécurité pour le point de terminaison VPC.**

1. Accédez à la [console Amazon VPC.](https://console.aws.amazon.com/vpc/)

1. Dans le volet de navigation de gauche, sélectionnez **Groupes de sécurité**, puis choisissez **Créer un groupe de sécurité**.

1. Configurez les détails du groupe de sécurité :
   + **Nom du groupe de sécurité** : Exemple : `SecretsManagerEndpointSG`
   + **Description** : Entrez une description appropriée. (Exemple : groupe de sécurité pour le point de terminaison VPC du gestionnaire de secrets).
   + **VPC : sélectionnez le VPC** où résident votre instance de réplication et vos points de terminaison.

1. Cliquez sur **Ajouter une règle** pour définir les règles entrantes et configurer les éléments suivants :
   + Type : HTTPS (car le gestionnaire de secrets utilise le protocole HTTPS sur le port 443).
   + Source : choisissez **Personnalisé** et entrez l'ID du groupe de sécurité de votre instance de réplication. Cela garantit que toute instance associée à ce groupe de sécurité peut accéder au point de terminaison VPC.

1. Passez en revue les modifications et cliquez sur **Créer un groupe de sécurité**.

**Création d'un point de terminaison VPC pour le gestionnaire de secrets**
**Note**  
Créez un point de terminaison VPC d'interface comme indiqué dans la rubrique de [documentation Creating an Interface Endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) du guide de l'*utilisateur d'Amazon Virtual Private Cloud*. Lorsque vous suivez cette procédure, assurez-vous de ce qui suit :  
Pour la **catégorie de service**, vous devez sélectionner **AWS les services.**
Pour le **nom du service**, recherchez `seretsmanager` et sélectionnez le service Secretes Manager.

1. Sélectionnez le **VPC et les sous-réseaux**, puis configurez les éléments suivants :
   + **VPC** : assurez-vous qu'il s'agit du même VPC que votre instance de réplication.
   + **Sous-réseaux** : sélectionnez les sous-réseaux dans lesquels réside votre instance de réplication.

1. Dans **Paramètres supplémentaires**, assurez-vous que le **nom Enable DNS** est activé par défaut pour les points de terminaison de l'interface

1. Sous **Groupe de sécurité**, sélectionnez le nom du groupe de sécurité approprié. Exemple : `SecretsManagerEndpointSG` tel que créé précédemment).

1. Vérifiez tous les paramètres et cliquez sur **Créer un point de terminaison**.

**Récupérez le nom DNS du point de terminaison VPC**

1. Accédez aux détails du point de terminaison VPC :

   1. **Accédez à la [console Amazon VPC](https://console.aws.amazon.com/vpc/) et choisissez Endpoints.**

   1. Sélectionnez le point de terminaison approprié que vous avez créé.

1. Copiez le nom DNS :

   1. Sous l'onglet **Détails**, accédez à la section **Noms DNS**.

   1. Copiez le premier nom DNS répertorié. (Exemple : `vpce-0abc123def456789g-secretsmanager.us-east-1.vpce.amazonaws.com`). Il s'agit du nom DNS régional.

**Mettez à jour votre point de terminaison DMS**

1. Accédez à la console [AWS DMS](https://console.aws.amazon.com/dms/v2).

1. Modifiez le point de terminaison DMS :

   1. Dans le volet de navigation de gauche, sélectionnez **Endpoints**.

   1. Choisissez le point de terminaison approprié que vous souhaitez configurer.

   1. Cliquez sur **Actions**, puis sélectionnez **Modifier**.

1. Configurer les paramètres du point de terminaison :

   1. Accédez aux **paramètres du point de terminaison** et cochez la case **Utiliser les attributs de connexion du point de terminaison**.

   1. Dans le champ **Attributs de connexion**, ajoutez :`secretsManagerEndpointOverride=<copied DNS name>`.
**Note**  
Si vous avez plusieurs attributs de connexion, vous pouvez les séparer par un point-virgule « ; ». Par exemple : `datePartitionEnabled=false;secretsManagerEndpointOverride=vpce-0abc123def456789g-secretsmanager.us-east-1.vpce.amazonaws.com`

1. Cliquez sur **Modifier le point de terminaison** pour enregistrer vos modifications.

## Considérations supplémentaires
<a name="CHAP_secretsmanager.additionalconsiderations"></a>

Vous devez prendre en compte les informations de configuration supplémentaires suivantes :

**Groupe de sécurité de l'instance de réplication :**
+ Assurez-vous que le groupe de sécurité associé à votre instance de réplication autorise le trafic sortant vers le point de terminaison VPC sur le port 443 (HTTPS).

**Paramètres DNS VPC :**
+ Vérifiez que la **résolution DNS** et les **noms d'accès DNS** sont activés dans votre VPC. Cela permet à vos instances de résoudre les noms DNS des points de terminaison VPC. **Vous pouvez le confirmer en accédant à la console [Amazon VPC et VPCs en sélectionnant votre VPC](https://console.aws.amazon.com/vpc/) pour vérifier **que la résolution DNS et les noms d'accès DNS** sont **définis** sur « Oui ».**

**Tester la connectivité :**
+ À partir de votre instance de réplication, vous pouvez effectuer une recherche DNS pour vous assurer qu'elle résout le point de terminaison VPC :. `nslookup secretsmanager.<region>amazonaws.com` Il doit renvoyer l'adresse IP associée à votre point de terminaison VPC