Utilisation d'une base de données Amazon Redshift en tant que cible pour AWS Database Migration Service - AWS Database Migration Service

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 d'une base de données Amazon Redshift en tant que cible pour AWS Database Migration Service

Vous pouvez migrer des données vers des bases de données Amazon Redshift à l'aide d'AWS Database Migration Service. Amazon Redshift est un service d'entreposage de 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 sans serveur en tant que cible pour AWS DMS. Pour plus d'informations, consultez Utilisation d'AWS DMS avec Amazon Redshift sans serveur en tant que cible, ci-après.

Le cluster Amazon Redshift doit se trouver dans le même compte AWS et la même région AWS que l'instance de réplication.

Lors d'une migration de base de données vers Amazon Redshift, AWS DMS déplace d'abord les données dans un compartiment Amazon S3. Une fois que les fichiers se trouvent dans un compartiment Amazon S3, AWS DMS les transfère vers les tables appropriés dans l'entrepôt des données Amazon Redshift. AWS DMS crée le compartiment S3 dans la même région AWS que la base de données Amazon Redshift. L'instance de réplication AWS DMS doit se trouver dans cette même région AWS.

Si vous utilisez AWS CLI ou l'API DMS pour migrer les données vers Amazon Redshift, configurez un rôle AWS Identity and Access Management (IAM) pour autoriser l'accès à S3. Pour plus d'informations sur la création de ce rôle IAM, consultez Création des IAM rôles à utiliser avec AWS CLI and AWS DMS API.

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 les opérations de chargement complet et 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 chaque table dans un dossier distinct dans Amazon S3. Lorsque les fichiers sont chargés dans Amazon S3, AWS DMS envoie une commande de copie et les données des 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 charge ensuite les fichiers de modifications nettes sur Amazon S3 et copie les données dans Amazon Redshift.

Pour plus de détails sur l'utilisation d'Amazon Redshift en tant que cible pour AWS DMS, consultez les sections suivantes :

Conditions requises pour l'utilisation d'une base de données Amazon Redshift en tant que cible pour AWS Database Migration Service

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 AWS Management Console pour lancer un cluster Amazon Redshift. Notez les informations de base concernant votre compte AWS et votre cluster Amazon Redshift, telles que votre mot de passe, nom d'utilisateur et le nom de 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 compte AWS et la même région AWS que l'instance de réplication.

  • L'instance de réplication AWS DMS a besoin d'une connectivité réseau au point de terminaison Amazon Redshift (nom d'hôte et port) que votre cluster utilise.

  • AWS DMS utilise un compartiment Amazon S3 pour transférer les 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 AWS CLI ou l'API DMS pour créer une migration de base de données avec Amazon Redshift en tant que 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 IAM rôles à utiliser avec AWS CLI and AWS DMS API.

  • AWS DMS convertit les objets BLOB, CLOB et NCLOB en VARCHAR sur l'instance Amazon Redshift cible. Amazon Redshift ne prend pas en charge les types de données VARCHAR supérieurs à 64 Ko. Par conséquent, vous ne pouvez pas stocker les objets binaires volumineux (LOB) traditionnels sur Amazon Redshift.

  • Définissez le paramètre de tâche de métadonnées cible BatchApplyEnabled sur true pour que AWS DMS gère les modifications apportées aux tables cibles Amazon Redshift pendant la 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.

Privilèges requis pour utiliser Redshift en tant que cible

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 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 de l'utilisation d'Amazon Redshift en tant que cible pour AWS Database Migration Service

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. Pour supprimer une version d'un objet S3, consultez Suppression des versions d'objet d'un compartiment activé pour la gestion des versions.

  • La commande DDL suivante n'est pas prise en charge :

    ALTER TABLE table name MODIFY COLUMN column name data type;
  • AWS DMS ne peut pas migrer ou répliquer des modifications apportées à un schéma avec un nom qui commence par un caractère de soulignement (_). 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 les VARCHAR supérieurs à 64 Ko. Les objets binaires volumineux (LOB) provenant de bases de données traditionnelles ne peuvent pas être stockés 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.

  • 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 compte AWS 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 dans le Guide du développeur de base de données Amazon Redshift.

  • Lorsqu'AWS DMS réplique des données de la table source sans clé primaire ou unique, la latence de la CDC peut être élevée, ce qui se traduit par un niveau de performance inacceptable.

Configuration d'une base de données Amazon Redshift en tant que cible pour AWS Database Migration Service

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.

username

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 de point de terminaison lors de l'utilisation d'Amazon Redshift en tant que cible pour AWS DMS.

Utilisation du routage VPC amélioré avec Amazon Redshift en tant que cible pour AWS Database Migration Service

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 exécutées par 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.

  2. AWS DMS utilise le kit SDK AWS pour copier les fichiers .csv dans un compartiment S3 sur votre compte.

  3. AWS DMS utilise ensuite la commande COPY dans Amazon Redshift pour copier les données depuis les fichiers .csv dans S3 vers une table appropriée dans Amazon Redshift.

Si le routage VPC amélioré n'est pas activé, Amazon Redshift route le trafic via Internet, y compris le trafic vers d'autres services au sein 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é dans la documentation d'Amazon Redshift.

Création et utilisation de clés AWS KMS pour chiffrer les données cibles Amazon Redshift

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 clés AWS KMS 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 :

Pour chiffrer des données cibles Amazon Redshift à l'aide d'une clé KMS, vous avez besoin d'un rôle AWS Identity and Access Management (IAM) qui dispose des autorisations pour 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 stratégie gérée par AWS.

  • 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 stratégie gérée par AWS requise
  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, sélectionnez Rôles. La page Rôles s'ouvre.

  3. Sélectionnez Create role (Créer un rôle). La page Créer un rôle s'ouvre.

  4. Choisissez Service AWS en tant qu'entité de confiance, puis DMS en tant que service utilisant le rôle.

  5. Sélectionnez Next: Permissions (Étape suivante : autorisations). La page Attach permissions policies (Attacher des stratégies d'autorisation) s'affiche.

  6. Recherchez et sélectionnez la stratégie AmazonDMSRedshiftS3Role.

  7. Choisissez Suivant : Balises. La page Ajouter des balises s'affiche. Ici, vous pouvez ajouter toutes les balises souhaitées.

  8. Choisissez Next: Review (Suivant : Vérification) et vérifiez vos résultats.

  9. 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 chiffrement AWS KMS avec une stratégie de clé qui fait référence à votre rôle IAM.
Note

Pour plus d'informations sur le fonctionnement d'AWS DMS avec les clés de chiffrement AWS KMS, consultez Configuration d'une clé de chiffrement et spécification AWS KMS des autorisations.

  1. Connectez-vous à AWS Management Console et ouvrez la console AWS Key Management Service (AWS KMS) à l'adresse https://console.aws.amazon.com/kms.

  2. Pour changer le paramètre Région AWS, utilisez le sélecteur de région dans l'angle supérieur droit de la page.

  3. Dans le volet de navigation, choisissez Clés gérées par le client.

  4. Choisissez Create key. La page Configurer la clé s'ouvre.

  5. Pour Type de clé, choisissez Symétrique.

    Note

    Vous ne pouvez créer qu'une clé symétrique, car tous les services AWS, tels qu'Amazon Redshift, ne fonctionnent qu'avec des clés de chiffrement symétriques.

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

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

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

  9. 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é.

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

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

  12. Si vous souhaitez ajouter d'autres comptes non répertoriés pour avoir ce même accès, pour Autres comptes AWS, choisissez Ajouter un autre compte AWS, puis 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.

    { "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 } } } ]
  13. Choisissez Finish (Terminer). La page Clés de chiffrement s'ouvre et affiche un message indiquant que votre AWS KMS key a été créée.

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 de point de terminaison lors de l'utilisation d'Amazon Redshift en tant que cible pour AWS DMS

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 console AWS DMS ou à l'aide de la commande create-endpoint dans AWS CLI, avec la syntaxe JSON --redshift-settings '{"EndpointSetting": "value", ...}'.

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.

Name (Nom) Description

MaxFileSize

Spécifie la taille maximale (en ko) de tout fichier .csv utilisé pour transférer des données vers Amazon Redshift.

Valeur par défaut : 32 768 Ko (32 Mo)

Valeurs valides : 1 à 1 048 576

Exemple : --redshift-settings '{"MaxFileSize": 512}'

FileTransferUploadStreams

Spécifie le nombre de threads utilisés pour télécharger un seul fichier.

Valeur par défaut : 10

Valeurs valides : 1 à 64

Exemple : --redshift-settings '{"FileTransferUploadStreams": 20}'

Acceptanydate

Spécifie si un format de date quelconque est accepté, y compris les formats de dates non valides tels que 0000-00-00. Valeur booléenne.

Valeur par défaut : false

Valeurs valides : true | false

Exemple : --redshift-settings '{"Acceptanydate": true}'

Dateformat

Spécifie le format de date. Il s'agit d'une entrée de chaîne qui est vide par défaut. Le format par défaut est JJ-MM-DD, mais vous pouvez le remplacer par AAAA-MM-JJ, par exemple. Si vos valeurs de date ou d'heure utilisent des formats différents, utilisez l'argument auto avec le paramètre Dateformat. L'argument auto reconnaît plusieurs formats qui ne sont pas pris en charge quand une chaîne Dateformat est utilisée. Le mot clé auto est sensible à la casse.

Valeur par défaut : vide

Valeurs valides : "dateformat_string" ou auto

Exemple : --redshift-settings '{"Dateformat": "auto"}'

Timeformat

Spécifie le format de l'heure. Il s'agit d'une entrée de chaîne qui est vide par défaut. L'argument auto reconnaît plusieurs formats qui ne sont pas pris en charge quand une chaîne Timeformat est utilisée. Si vos valeurs de date et d'heure utilisent des formats différents les uns des autres, utilisez l'argument auto avec le paramètre Timeformat.

Valeur par défaut : 10

Valeurs valides : "Timeformat_string" | "auto" | "epochsecs" | "epochmillisecs"

Exemple : --redshift-settings '{"Timeformat": "auto"}'

Emptyasnull

Spécifie si AWS DMS doit migrer les champs CHAR et VARCHAR vides en tant que valeurs NULL. La valeur true définit les champs CHAR et VARCHAR vides comme étant null.

Valeur par défaut : false

Valeurs valides : true | false

Exemple : --redshift-settings '{"Emptyasnull": true}'

TruncateColumns

Tronque les données des colonnes avec le nombre de caractères donné afin qu'il corresponde à la spécification de la colonne. S'applique uniquement aux colonnes avec un type de données VARCHAR ou CHAR et des lignes de 4 Mo ou moins.

Valeur par défaut : false

Valeurs valides : true | false

Exemple : --redshift-settings '{"TruncateColumns": true}'

RemoveQuotes

Supprime les guillemets des chaînes dans les données entrantes. Tous les caractères compris entre les guillemets, y compris les délimiteurs, sont conservés. Pour plus d'informations sur la suppression des guillemets pour une cible Amazon Redshift, consultez le Manuel du développeur de base de données Amazon Redshift.

Valeur par défaut : false

Valeurs valides : true | false

Exemple : --redshift-settings '{"RemoveQuotes": true}'

TrimBlanks

Supprime les caractères d'espace vide de fin d'une chaîne VARCHAR. Ce paramètre s'applique uniquement aux colonnes avec un type de données VARCHAR.

Valeur par défaut : false

Valeurs valides : true | false

Exemple : --redshift-settings '{"TrimBlanks": true}'

EncryptionMode Le mode de chiffrement côté serveur que vous souhaitez utiliser pour transférer vos données vers S3 avant qu'elles ne soient copiées vers Amazon Redshift. 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.
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.

Valeur par défaut : SSE_S3

Valeurs valides : SSE_S3 ou SSE_KMS

Exemple : --redshift-settings '{"EncryptionMode": "SSE_S3"}'

ServerSideEncryptionKmsKeyId Si vous définissez EncryptionMode sur SSE_KMS, définissez ce paramètre sur l'ARN de la clé KMS. Vous pouvez rechercher cet ARN en sélectionnant l'alias de clé dans la liste des clés AWS KMS créées pour votre compte. Lorsque vous créez la clé, vous devez lui associer des stratégies et des rôles spécifiques. Pour de plus amples informations, veuillez consulter Création et utilisation de clés AWS KMS pour chiffrer les données cibles Amazon Redshift.

Exemple : --redshift-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

EnableParallelBatchInMemoryCSVFiles Le paramètre EnableParallelBatchInMemoryCSVFiles 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 false.
CompressCsvFiles Utilisez cet attribut pour compresser les données envoyées à une cible Amazon Redshift pendant la migration. La valeur par défaut est true et la compression est activée par défaut.

Utilisation d'une clé de chiffrement des données et d'un compartiment Amazon S3 comme stockage intermédiaire

Vous pouvez utiliser les paramètres de point de terminaison cible Amazon Redshift pour configurer les éléments suivants :

  • Une clé de chiffrement de données AWS KMS 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

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

Lorsque vous migrez des données vers un point de terminaison cible Amazon Redshift, AWS DMS utilise un compartiment Amazon S3 par défaut comme stockage de tâche intermédiaire avant de copier les données migrées dans 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).

Vous pouvez plutôt spécifier un compartiment S3 pour ce stockage intermédiaire en incluant les paramètres suivants dans la valeur de votre option --redshift-settings dans la commande create-endpoint de l’AWS CLI :

  • 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 clés AWS KMS pour chiffrer les données cibles Amazon Redshift.

    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

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

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.

    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

La prise en charge de l'utilisation des paramètres de tâche ParallelLoad* pendant la tâche FULL LOAD vers des points de terminaison cibles Amazon Redshift est disponible dans AWS DMS versions 3.4.5 et ulté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, consultez RedShiftSettings dans la Référence des API AWS Database Migration Service.

Paramètres de tâche de CDC multithread pour Amazon Redshift

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 utilisés par AWS DMS pendant 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

La prise en charge de l'utilisation des paramètres de tâche ParallelApply* pendant la CDC vers des points de terminaison cibles Amazon Redshift est disponible dans AWS DMS versions 3.4.3 et ulté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.

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

Le point de terminaison Amazon Redshift pour AWS DMS prend en charge la plupart des types de données Amazon Redshift. Le tableau suivant présente les types de données cibles Amazon Redshift qui sont pris en charge lorsque vous utilisez AWS DMS et le mappage par défaut à partir des types de données AWS DMS.

Pour de plus amples informations sur les types de données AWS DMS, veuillez consulter Types de données pour AWS Database Migration Service.

Types de données AWS DMS

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 *2)

La taille de LOB maximale ne peut pas dépasser 31 Ko. Amazon Redshift ne prend pas en charge les VARCHAR supérieurs à 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 les VARCHAR supérieurs à 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 les VARCHAR supérieurs à 64 Ko.

Utilisation d'AWS DMS avec Amazon Redshift sans serveur en tant que cible

AWS DMS prend en charge l'utilisation d'Amazon Redshift sans serveur en tant que point de terminaison cible. Pour en savoir plus sur l'utilisation d'Amazon Redshift sans serveur, consultez Amazon Redshift sans serveur dans le Guide de gestion Amazon Redshift.

Cette rubrique explique comment utiliser un point de terminaison Amazon Redshift sans serveur avec AWS DMS.

Note

Lorsque vous créez un point de terminaison Amazon Redshift sans serveur, pour le champ DatabaseName de la configuration du point de terminaison RedshiftSettings, utilisez soit le nom de l'entrepôt des données Amazon Redshift, soit le nom du point de terminaison de groupe de travail. Pour le champ ServerName, utilisez la valeur du point de terminaison affichée sur la page 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. Pour en savoir plus sur le point de terminaison de groupe de travail, consultez Connexion à Amazon Redshift sans serveur.

Politique d'approbation avec Amazon Redshift sans serveur en tant que cible

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.

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "IsDefaultVersion": true } }

Pour plus d'informations sur l'utilisation d'une politique d'approbation avec AWS DMS, consultez Création des IAM rôles à utiliser avec AWS CLI and AWS DMS API.

Limitations lors de l'utilisation d'Amazon Redshift sans serveur en tant que cible

L'utilisation de Redshift sans serveur en tant que cible présente les limitations suivantes :