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

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 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 cible, 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 AWS Identity and Access Management 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 IAM rôles à utiliser avec AWS DMS.

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 :

Conditions préalables à l'utilisation d'une base de données Amazon Redshift comme 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 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 IAM rôles à utiliser avec AWS DMS.

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

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 relatives à l'utilisation d'Amazon Redshift comme 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 Impossible de migrer ou de répliquer les modifications apportées à un schéma dont le nom commence par un trait 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 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.

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

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

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.

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.

Utilisation d'un routage VPC amélioré avec Amazon Redshift comme 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 à 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.

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

  3. 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é dans la documentation d’Amazon Redshift.

Création et utilisation de AWS KMS clés 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 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 :

Pour chiffrer les données cibles Amazon Redshift à l'aide d'une clé KMS, vous avez besoin AWS Identity and Access Management 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/.

  2. Dans le panneau de navigation, choisissez Roles (Rôles). La page Rôles s'ouvre.

  3. Sélectionnez 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. Choisissez Suivant : 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 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, consultezConfiguration d'une clé de chiffrement et spécification AWS KMS des autorisations.

  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.

  2. Pour modifier le Région AWS, utilisez le sélecteur de région dans le coin supérieur droit de la page.

  3. Dans le volet de navigation, sélectionnez 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

    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.

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

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

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

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 YYYY-MM-DD, mais vous pouvez le modifier en, par exemple, DD-MM-YYYY. 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 les champs CHAR et VARCHAR vides AWS DMS doivent être migrés comme nuls. 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 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 lui associer des stratégies et des rôles spécifiques. Pour de plus amples informations, veuillez consulter Création et utilisation de AWS KMS clés 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 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

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

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

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 RedshiftSettingsGuide de référence de l'AWS Database Migration Service API

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

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 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, consultezTypes de données pour AWS Database Migration Service.

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

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

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 dans le Guide de gestion Amazon Redshift.

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 DatabaseNamechamp de configuration de votre RedshiftSettingspoint 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 ServerNamechamp, 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. 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 de confiance avec AWS DMS, consultezCréation des IAM rôles à utiliser avec AWS DMS.

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 :