Ma tâche AWS DMS est réussie, mais aucune donnée n'est migrée depuis mon point de terminaison source Amazon S3. Pourquoi ?

Date de la dernière mise à jour : 04/09/2020

Ma tâche AWS Database Migration Service (AWS DMS) est réussie, mais aucune donnée n'est migrée depuis mon point de terminaison source Amazon Simple Storage Service (Amazon S3). Pourquoi les données ne migrent-elles pas et comment résoudre ce problème ?

Brève description

Voici les raisons les plus courantes expliquant pourquoi une tâche AWS DMS est réussie, mais aucune donnée n'est migrée :

  1. Le statut de la tâche est Chargement terminé, réplication en cours, mais aucune donnée n'est chargée sur la cible.
  2. Le statut de la tâche est Chargement terminé, réplication en cours, mais aucune table ne figure dans la section Statistiques de table.
  3. Le statut de la tâche est En cours d'exécution et la table est créée dans le point de terminaison cible, mais aucune donnée n'est chargée. En outre, vous recevez une erreur Aucun corps de réponse dans le journal de réplication.

Résolution

1. Le statut de la tâche affiche Chargement terminé, réplication en cours, mais aucune donnée n'est chargée sur la cible.

Vérifiez que le chemin Amazon S3 défini pour le point de terminaison source est correct. Dans le journal de réplication, vérifiez les entrées du journal. Vérifiez les entrées indiquant qu'AWS DMS ne trouve pas les fichiers de données dans le chemin Amazon S3 défini pour le point de terminaison source. Consultez l'exemple d'entrée de journal de réplication suivant :

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

Dans Amazon S3, 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) sont stockés comme suit :

  • 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 que le point de terminaison source Amazon S3 recherche les fichiers de données, trois champs sont importants :

  • Dossier du compartiment
  • Chemin de capture des données modifiées (CDC)
  • Structure de table

Dans les exemples de chemins de fichiers répertoriés précédemment, dms-folder/sub-folder est le dossier du compartiment. Le chemin CDC que vous saisissez lors de la création du point de terminaison source Amazon S3 est dms-cdc-path/dms-cdc-sub-path. L'exemple suivant de structure de table utilise le même exemple de chemin de fichier répertorié précédemment :

{
  "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 du compartiment (dms-folder/sub-folder) dans le chemin TablePath de la structure de table.

Lorsque vous spécifiez votre Configuration de point de terminaison, tenez compte des éléments suivants :

  • Le dossier du compartiment est facultatif. Si un dossier du compartiment est spécifié, le chemin CDC et le chemin de table (le champ TablePath pour un chargement complet) doivent se trouver dans le même dossier dans Amazon S3. Si le dossier du compartiment n'est pas spécifié, les chemins TablePath et CDC se trouvent directement sous le compartiment S3. 
  • Le champ Dossier du compartiment du point de terminaison source Amazon S3 peut correspondre à n'importe quel répertoire de dossier entre le nom du compartiment S3 et le nom du schéma de la structure de table. Dans l'exemple ci-dessus, il s'agit de dms-schema. Si vous n'avez pas de hiérarchie de dossiers sous le compartiment S3, vous pouvez laisser les champs vides.
  • Les dossiers de compartiment ou 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 Amazon S3 comme point de terminaison source, vous devez inclure le schéma et la table dans le mappage de table. Ceci est nécessaire pour réussir la migration des données vers la cible. Pour plus d'informations, consultez la section Types de données sources pour Amazon S3.

Si vous utilisez Supprimer les tables sur la cible comme mode de préparation de table pour la tâche, DMS crée alors la table cible dms_schema.dms_table. Voir l'exemple suivant :

CREATE TABLE 'dms_schema'.'dms_table' (…);

Remarque : les noms de dossiers et d'objets dans Amazon S3 sont sensibles à la casse. Veillez à spécifier à la fois les noms de dossier et d'objet avec la bonne casse dans le point de terminaison S3.

2. Le statut de la tâche est Chargement terminé, réplication en cours, mais aucune table ne figure dans la section Statistiques de la table.

Vous pouvez constater qu'aucune table n'a été créée dans le point de terminaison cible lorsque Supprimer les tables sur la cible a été utilisé. Cela signifie que le problème peut être causé par la structure de table spécifiée pour le point de terminaison source Amazon S3.

Vérifiez que le chemin Amazon S3 pour le point de terminaison source est correct, comme décrit précédemment. Ensuite, vérifiez que votre type de données est pris en charge par le point de terminaison Amazon S3.

Après avoir confirmé que le chemin Amazon S3 est correct et que votre type de données est pris en charge, vérifiez le filtre défini par le mappage de table de votre tâche DMS. Vérifiez si le filtre est à l'origine de l'absence des tables. Vérifiez la table nécessaire dans le mappage de table de tâches et assurez-vous que la table est définie dans la structure de table du point de terminaison source Amazon S3.

3. Le statut de la tâche est En cours d'exécution et la table est créée dans la destination cible, mais aucune donnée n'est chargée.

Si AWS DMS ne parvient pas à obtenir le contenu à partir du chemin Amazon S3, vous pouvez trouver des erreurs dans le journal de réplication. Reportez-vous aux exemples suivants :
[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)

Cette erreur se produit lorsque le rôle IAM (AWS Identity and Access Management) pour le point de terminaison source Amazon S3 ne dispose pas des autorisations appropriées : s3:GetObject. Pour résoudre cette erreur, vérifiez que le fichier de données existe dans le chemin Amazon S3 qui se trouve dans le message d'erreur. Ensuite, vérifiez que l'utilisateur IAM dispose des autorisations pour s3:GetObject.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?