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'Amazon S3 comme source pour AWS DMS
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
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,
est le schéma source et schemaName
est le nom d'une table dans ce schéma.tableName
/
schemaName
/tableName
/LOAD001.csv /schemaName
/tableName
/LOAD002.csv /schemaName
/tableName
/LOAD003.csv ...
Par exemple, supposons que vos fichiers de données se trouvent dans mybucket
au chemin Amazon S3 suivant.
s3://mybucket/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 estemployee
.
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
sursourcedata
, AWS DMS lit les fichiers de données dans le chemin suivant.
s3://mybucket/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 plus d’informations, consultez Paramètres du point de terminaison pour Amazon S3 en tant que source pour AWS DMS.
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"}'
Rubriques
- Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS
- Utilisation de la CDC avec Amazon S3 en tant que source pour AWS DMS
- Conditions préalables à l'utilisation d'Amazon S3 comme source pour AWS DMS
- Limitations liées à l'utilisation d'Amazon S3 comme source pour AWS DMS
- Paramètres du point de terminaison pour Amazon S3 en tant que source pour AWS DMS
- Types de données source pour Amazon S3
- Utilisation de fichiers au format Parquet dans Amazon S3 comme source pour AWS DMS
Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS
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 valeurbucketFolder
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. -
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 tableauTableColumns
.
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.
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 que ColumnScale
c'est zéro et tronque les fractions de secondes.
Utilisation de la CDC avec Amazon S3 en tant que source pour AWS DMS
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. Dans le cas contraire, si vous chargez le fichier CDC00002.csv après le fichier CDC00003.csv, le premier est ignoré et n’est pas répliqué. Mais le fichier CDC00004.csv est répliqué avec succès s'il est chargé après CDC00003.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
, AWS DMS lit les fichiers CDC correspondant au chemin suivant.changedata
s3://
mybucket
/changedata
Si vous définissez cdcPath
sur
et changedata
bucketFolder
sur
, AWS DMS lit les fichiers CDC au chemin suivant.myFolder
s3://
mybucket
/myFolder
/changedata
Les enregistrements figurant dans un fichier CDC sont formatés comme suit :
-
Opération : opération de modification à effectuer :
INSERT
ouI
,UPDATE
ouU
,DELETE
ouD
. 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
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 de points de terminaison de VPC en tant que points de terminaison sources et cibles AWS DMS
Le rôle AWS Identity and Access Management (IAM) attribué au compte utilisateur utilisé pour créer la tâche de migration doit disposer des autorisations suivantes.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }
Le rôle AWS Identity and Access Management (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.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "S3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }
Limitations liées à l'utilisation d'Amazon S3 comme source pour AWS DMS
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. Pour supprimer une version d’un objet S3, consultez Suppression des versions d’objet d’un compartiment activé pour la gestion des versions. -
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 valeurstime
des types de données dans MySQL, définissez la colonne de la table cible commestring
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 deBYTES
donnéesBYTE
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 neDDMMYYYY
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
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, avec la syntaxe --s3-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
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
|
BucketName |
Le nom du compartiment S3.
|
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 plus d’informations, consultez Utilisation de la CDC avec Amazon S3 en tant que source pour AWS DMS.
|
CsvDelimiter |
Le délimiteur utilisé pour séparer les colonnes des fichiers sources. La valeur par défaut est une virgule. Un exemple suit.
|
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 « \ 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 (
|
DataFormat |
Définissez cette valeur sur
|
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.
|
Rfc4180 |
Lorsque cette valeur est définie sur L’argument par défaut est Valeurs valides :
|
Types de données source pour Amazon S3
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 plus d’informations, consultez Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS.
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, consultezTypes de données pour AWS Database Migration Service.
Les types de AWS DMS données suivants sont utilisés avec Amazon S3 comme source :
-
BYTE : requiert
ColumnLength
. Pour plus d’informations, consultez Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS. -
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.
-
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.
-
REAL4
-
REAL8
-
STRING : requiert
ColumnLength
. Pour plus d’informations, consultez Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS. -
UINT1
-
UINT2
-
UINT4
-
UINT8
-
BLOB
-
CLOB
-
BOOLEAN
Utilisation de fichiers au format Parquet dans Amazon S3 comme source pour AWS DMS
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
surParquet
.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 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
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 | Type de données cible |
---|---|
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 |