Ma tâche AWS Database Migration Service (AWS DMS) est réussie mais ne migre pas les données depuis mon point de terminaison source Amazon Simple Storage Service (Amazon S3). Je souhaite résoudre ce problème.
Résolution
Il existe plusieurs raisons pour lesquelles une tâche AWS DMS réussit mais ne permet pas de migrer les données. Effectuez la résolution correspondant à votre cas d'utilisation.
L'état de la tâche est « Chargement terminé, réplication en cours », mais la tâche AWS DMS ne charge pas les données sur la cible
Vérifiez que le chemin S3 que vous avez défini pour le point de terminaison source est correct. Dans le journal de réplication, identifiez les entrées qui indiquent qu'AWS DMS ne trouve pas les fichiers de données dans le chemin S3.
Exemple d'entrée dans le journal de réplication :
[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 0. (streamcomponent.c:3667)
Amazon S3 stocke le fichier de données pour la phase de chargement complet (data.csv) et le fichier de données pour les modifications en cours (change_data.csv) au format suivant :
- S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
- S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv
Pour rechercher les fichiers de données, le point de terminaison source S3 utilise le dossier de compartiment, le chemin de capture de données modifiées (CDC) et les champs de structure de table.
Dans les exemples de chemin de fichier précédents, dms-folder/sub-folder est le dossier de compartiment. Le chemin CDC que vous entrez lorsque vous créez le point de terminaison source S3 est dms-cdc-path/dms-cdc-sub-path.
Exemple de structure de table utilisant l'exemple de chemin de fichier :
{
"TableCount": 1,
"Tables": [
{
"TableColumns": […],
"TableColumnsTotal": "1",
"TableName": "dms_table",
"TableOwner": "dms_schema",
"TablePath": "dms_schema/dms_table/"
}
]
}
Important : N'incluez pas le chemin du dossier de compartiment dms-folder/sub-folder dans le TablePath de la structure de table.
Lorsque vous spécifiez la configuration de votre point de terminaison, le dossier de compartiment est facultatif. Si vous spécifiez un dossier de compartiment, le chemin CDC et le TablePath doivent se trouver dans le même dossier dans Amazon S3. Si vous ne spécifiez pas le dossier de compartiment, le TablePath et le chemin CDC se trouvent directement sous le compartiment S3.
Le dossier de compartiment pour le point de terminaison source S3 peut être n'importe quel répertoire de dossiers compris entre le nom du compartiment et le nom de schéma de la structure de table. Dans l'exemple de structure de table précédent, le répertoire de dossiers est dms-schema. Si le compartiment,n’inclut pas une hiérarchie de dossiers, laissez le champ vide.
Remarque : Les dossiers de compartiment et les chemins CDC peuvent être des dossiers individuels ou inclure des sous-dossiers, tels que dms-folder ou dms-folder/sub-folder.
Si votre paramètre de tâche DMS utilise un point de terminaison source S3, vous devez inclure le schéma et la table dans le mappage de tables. Le schéma et la table sont nécessaires pour réussir la migration des données vers la cible. Pour plus d'informations, consultez la section Définition de tables externes pour Amazon S3 en tant que source pour AWS DMS.
Si vous utilisez Supprimer les tables sur la cible comme mode de préparation de table pour la tâche, DMS crée la table cible dms_schema.dms_table.
Exemple de commande de création de table cible :
CREATE TABLE 'dms_schema'.'dms_table' (...);
Remarque : Les noms de dossiers et d'objets dans Amazon S3 sont sensibles à la casse. Utilisez la majuscule appropriée lorsque vous spécifiez les noms de dossiers et d’objets dans le point de terminaison S3.
L'état de la tâche est « Chargement terminé, réplication en cours », mais aucune table ne figure dans la section Statistiques de la table
Lorsque vous utilisez Supprimer les tables sur la cible, AWS DMS peut ne pas créer de table dans le point de terminaison cible. Un chemin S3 incorrect ou un type de données non pris en charge peuvent provoquer ce problème.
Vérifiez que le chemin S3 pour le point de terminaison source est correct. Puis, vérifiez que votre point de terminaison S3 prend en charge le type de données.
Vérifiez si le filtre défini par le mappage de tables de votre tâche DMS est à l'origine des tables manquantes. Assurez-vous d'avoir défini la table requise dans le mappage de tables de tâches dans la structure de table du point de terminaison source S3.
L'état de la tâche est « En cours » et la tâche DMS a créé la table dans le point de terminaison cible mais n'a pas chargé de données
Si AWS DMS ne parvient pas à obtenir les données à partir du chemin S3, utilisez le journal de réplication pour rechercher les erreurs. Pour obtenir des journaux détaillés, modifiez le niveau de journalisation SOURCE_CAPTURE de Par défaut à Débogage détaillé.
Exemple de journal :
[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>,
status = 4 (FAILED) [1001730] (transfer_client.cpp:592)
** Le message d'erreur « Aucun corps de réponse » s'affiche dans le journal de réplication**
L'erreur Aucun corps de réponse se produit lorsque le rôle AWS Identity and Access Management (IAM) pour le point de terminaison source S3 ne dispose pas des autorisations appropriées. Pour résoudre ce problème, vérifiez que le fichier de données existe dans le chemin S3 indiqué dans le message d'erreur. Vérifiez ensuite que l'utilisateur IAM dispose d’autorisations pour s3:GetObject.
Remarque : Si vous avez activé la gestion des versions sur le compartiment source, vous devez également accorder l'autorisation s3:GetObjectVersion.
Informations connexes
Utilisation d'Amazon S3 comme source pour AWS DMS