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 : 22/02/2022

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 :

  • Le statut de la tâche est Chargement terminé, réplication en cours, mais aucune donnée n'est chargée sur la cible.
  • Le statut de la tâche est Chargement terminé, réplication en cours, mais aucune table ne figure dans la section Statistiques de table.
  • Le statut de la tâche est Running (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.

Solution

Le statut de la tâche affiche Load complete, replication ongoing (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

Le point de terminaison source Amazon S3 utilise trois champs importants pour trouver les fichiers de données :

  • 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 Endpoint configuration (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 Bucket folder (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 précédent, 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 Types de données sources pour Amazon S3.

Si vous utilisez Drop tables on target (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. Consultez 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.

Le statut de la tâche est Load complete, replication ongoing (Chargement terminé, réplication en cours), mais aucune table ne figure dans la section Table statistics (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. Examinez 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.

Le statut de la tâche est Running (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 No response body (Aucun corps de réponse) dans le journal de réplication

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, confirmez que l'utilisateur IAM dispose des autorisations pour s3:GetObject.
Remarque : si la gestion des versions est activée dans le compartiment Amazon S3 source, des autorisations supplémentaires s3:GetObjectVersion sont requises.


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


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