Transfert de fichiers ou d'objets spécifiques à l'aide d'un manifeste - AWS DataSync

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.

Transfert de fichiers ou d'objets spécifiques à l'aide d'un manifeste

Un manifeste est une liste de fichiers ou d'objets que vous AWS DataSync souhaitez transférer. Par exemple, au lieu de tout transférer dans un compartiment S3 contenant potentiellement des millions d'objets, il ne DataSync transfère que les objets que vous listez dans votre manifeste.

Les manifestes sont similaires aux filtres, mais ils vous permettent d'identifier exactement les fichiers ou les objets à transférer plutôt que les données correspondant à un modèle de filtre.

Création de votre manifeste

Un manifeste est un fichier au format CSV (valeurs séparées par des virgules) qui répertorie les fichiers ou les objets que vous souhaitez transférer dans votre emplacement source. DataSync Si votre source est un compartiment S3, vous pouvez également indiquer la version d'un objet à transférer.

Consignes

Utilisez ces directives pour vous aider à créer un manifeste compatible avec DataSync.

Do
  • Spécifiez le chemin complet de chaque fichier ou objet que vous souhaitez transférer.

    Vous ne pouvez pas spécifier uniquement un répertoire ou un dossier dans le but de transférer tout son contenu. Dans ces situations, pensez à utiliser un filtre d'inclusion au lieu d'un manifeste.

  • Assurez-vous que le chemin de chaque fichier ou objet est relatif au chemin de montage, au dossier, au répertoire ou au préfixe que vous avez spécifié lors de la configuration de votre emplacement DataSync source.

    Supposons, par exemple, que vous configurez un emplacement S3 avec un préfixe nomméphotos. Ce préfixe inclut un objet my-picture.png que vous souhaitez transférer. Dans le manifeste, il suffit alors de spécifier l'objet (my-picture.png) au lieu du préfixe et de l'objet (photos/my-picture.png).

  • Pour spécifier la version de l'objet Amazon S3 IDs, séparez le chemin et l'ID de version de l'objet à l'aide d'une virgule.

    L'exemple suivant montre une entrée de manifeste comportant deux champs. Le premier champ inclut un objet nommépicture1.png. Le deuxième champ est séparé par une virgule et inclut un ID de version de 111111 :

    picture1.png,111111
  • Utilisez des guillemets dans les situations suivantes :

    • Lorsqu'un chemin contient des caractères spéciaux (virgules, guillemets et fins de ligne) :

      "filename,with,commas.txt"

    • Lorsqu'un chemin s'étend sur plusieurs lignes :

      "this
      is
      a
      filename.txt"
    • Lorsqu'un chemin inclut des guillemets :

      filename""with""quotes.txt

      Cela représente un chemin nomméfilename"with"quotes.txt.

    Ces règles de devis s'appliquent également aux champs d'ID de version. En général, si un champ de manifeste contient un guillemet, vous devez y échapper par un autre guillemet.

  • Séparez chaque entrée de fichier ou d'objet par une nouvelle ligne.

    Vous pouvez séparer les lignes en utilisant des sauts de ligne de style Linux (alimentation en ligne ou retour en chariot) ou Windows (retour en chariot suivi d'une alimentation en ligne).

  • Enregistrez votre manifeste (par exemple, my-manifest.csv oumy-manifest.txt).

  • Téléchargez le manifeste dans un compartiment S3 auquel il est DataSync possible d'accéder.

    Il n'est pas nécessaire que ce compartiment se trouve dans le même compte Région AWS ou dans le même compte que celui que vous utilisez DataSync.

Don't
  • Spécifiez uniquement un répertoire ou un dossier dans le but de transférer tout son contenu.

    Un manifeste ne peut inclure que les chemins complets vers les fichiers ou les objets que vous souhaitez transférer. Si vous configurez votre emplacement source pour utiliser un chemin de montage, un dossier, un répertoire ou un préfixe spécifique, vous n'êtes pas obligé de l'inclure dans votre manifeste.

  • Spécifiez un chemin de fichier ou d'objet de plus de 4 096 caractères.

  • Spécifiez un chemin de fichier, un chemin d'objet ou un ID de version d'objet Amazon S3 supérieur à 1 024 octets.

  • Spécifiez les chemins de fichiers ou d'objets dupliqués.

  • Incluez un ID de version d'objet si votre emplacement source n'est pas un compartiment S3.

  • Incluez plus de deux champs dans une entrée de manifeste.

    Une entrée ne peut inclure qu'un chemin de fichier ou d'objet et (le cas échéant) un ID de version d'objet Amazon S3.

  • Incluez des caractères non conformes au codage UTF-8.

  • Incluez des espaces involontaires dans vos champs de saisie en dehors des guillemets.

Exemples de manifestes

Utilisez ces exemples pour vous aider à créer un manifeste qui fonctionne avec DataSync.

Manifeste avec chemins complets de fichiers ou d'objets

L'exemple suivant montre un manifeste avec les chemins complets des fichiers ou des objets à transférer.

photos/picture1.png photos/picture2.png photos/picture3.png
Manifeste avec uniquement des clés d'objet

L'exemple suivant montre un manifeste contenant des objets à transférer depuis un emplacement source Amazon S3. L'emplacement étant configuré avec le préfixephotos, seules les clés de l'objet sont spécifiées.

picture1.png picture2.png picture3.png
Manifeste avec chemins d'objets et version IDs

Les deux premières entrées de l'exemple de manifeste suivant incluent des versions d'objets Amazon S3 spécifiques à transférer.

photos/picture1.png,111111 photos/picture2.png,121212 photos/picture3.png
Manifeste avec caractères UTF-8

L'exemple suivant montre un manifeste contenant des fichiers contenant des caractères UTF-8.

documents/résumé1.pdf documents/résumé2.pdf documents/résumé3.pdf

Fournir DataSync l'accès à votre manifeste

Vous avez besoin d'un rôle AWS Identity and Access Management (IAM) qui donne DataSync accès à votre manifeste dans son compartiment S3. Ce rôle doit inclure les autorisations suivantes :

  • s3:GetObject

  • s3:GetObjectVersion

Vous pouvez générer ce rôle automatiquement dans la DataSync console ou le créer vous-même.

Note

Si votre manifeste se trouve dans un autre Compte AWS format, vous devez créer ce rôle manuellement.

Lorsque vous créez ou lancez une tâche de transfert dans la console, vous DataSync pouvez créer un rôle IAM avec les s3:GetObjectVersion autorisations s3:GetObject et les autorisations dont vous avez besoin pour accéder à votre manifeste.

Autorisations requises pour créer automatiquement le rôle

Pour créer automatiquement le rôle, assurez-vous que le rôle que vous utilisez pour accéder à la DataSync console dispose des autorisations suivantes :

  • iam:CreateRole

  • iam:CreatePolicy

  • iam:AttachRolePolicy

Vous pouvez créer manuellement le rôle IAM qui DataSync doit accéder à votre manifeste. Les instructions suivantes supposent que vous vous trouvez dans le même Compte AWS emplacement que celui que vous utilisez DataSync et que le compartiment S3 de votre manifeste se trouve.

  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation de gauche, sous Gestion des accès, sélectionnez Rôles, puis sélectionnez Créer un rôle.

  3. Sur la page Sélectionner une entité de confiance, pour Type d'entité de confiance, sélectionnez Service AWS.

  4. Pour Cas d'utilisation, choisissez DataSyncdans la liste déroulante et sélectionnez DataSync. Choisissez Suivant.

  5. Sur la page Add permissions (Ajouter des autorisations), sélectionnez Next (Suivant). Donnez un nom à votre rôle et choisissez Créer un rôle.

  6. Sur la page Rôles, recherchez le rôle que vous venez de créer et choisissez son nom.

  7. Sur la page de détails du rôle, choisissez l'onglet Autorisations. Choisissez Ajouter des autorisations, puis Créer une politique en ligne.

  8. Choisissez l'onglet JSON et collez l'exemple de politique suivant dans l'éditeur de politiques :

    { "Version": "2012-10-17", "Statement": [{ "Sid": "DataSyncAccessManifest", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/my-manifest.csv" }] }
  9. Dans l'exemple de politique que vous venez de coller, remplacez les valeurs suivantes par les vôtres :

    1. amzn-s3-demo-bucketRemplacez-le par le nom du compartiment S3 qui héberge votre manifeste.

    2. my-manifest.csvRemplacez-le par le nom de fichier de votre manifeste.

  10. Choisissez Suivant. Donnez un nom à votre politique et choisissez Create policy.

  11. (Recommandé) Pour éviter le problème de confusion entre les services adjoints, procédez comme suit :

    1. Sur la page de détails du rôle, choisissez l'onglet Relations de confiance. Choisissez Edit trust policy (Modifier la politique d’approbation).

    2. Mettez à jour la politique de confiance en utilisant l'exemple suivant, qui inclut les clés de contexte de condition aws:SourceAccount globale aws:SourceArn et globale :

      { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "StringLike": { "aws:SourceArn": "arn:aws:datasync:region:account-id:*" } } }] }
      • Remplacez chaque instance account-id par l' Compte AWS ID que vous utilisez DataSync.

      • regionRemplacez-le Région AWS par celui que vous utilisez DataSync.

    3. Choisissez Mettre à jour une politique.

Vous avez créé un rôle IAM qui permet d'accéder DataSync à votre manifeste. Spécifiez ce rôle lors de la création ou du démarrage de votre tâche.

Si votre manifeste se trouve dans un compartiment S3 appartenant à un autre compartiment Compte AWS, vous devez créer manuellement le rôle IAM qui permet DataSync d'accéder au manifeste. Ensuite, dans l' Compte AWS endroit où se trouve votre manifeste, vous devez inclure le rôle dans la politique du compartiment S3.

Création du rôle

  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation de gauche, sous Gestion des accès, sélectionnez Rôles, puis sélectionnez Créer un rôle.

  3. Sur la page Sélectionner une entité de confiance, pour Type d'entité de confiance, sélectionnez Service AWS.

  4. Pour Cas d'utilisation, choisissez DataSyncdans la liste déroulante et sélectionnez DataSync. Choisissez Suivant.

  5. Sur la page Add permissions (Ajouter des autorisations), sélectionnez Next (Suivant). Donnez un nom à votre rôle et choisissez Créer un rôle.

  6. Sur la page Rôles, recherchez le rôle que vous venez de créer et choisissez son nom.

  7. Sur la page de détails du rôle, choisissez l'onglet Autorisations. Choisissez Ajouter des autorisations, puis Créer une politique en ligne.

  8. Choisissez l'onglet JSON et collez l'exemple de politique suivant dans l'éditeur de politiques :

    { "Version": "2012-10-17", "Statement": [{ "Sid": "DataSyncAccessManifest", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/my-manifest.csv" }] }
  9. Dans l'exemple de politique que vous venez de coller, remplacez les valeurs suivantes par les vôtres :

    1. amzn-s3-demo-bucketRemplacez-le par le nom du compartiment S3 qui héberge votre manifeste.

    2. my-manifest.csvRemplacez-le par le nom de fichier de votre manifeste.

  10. Choisissez Suivant. Donnez un nom à votre politique et choisissez Create policy.

  11. (Recommandé) Pour éviter le problème de confusion entre les services adjoints, procédez comme suit :

    1. Sur la page de détails du rôle, choisissez l'onglet Relations de confiance. Choisissez Edit trust policy (Modifier la politique d’approbation).

    2. Mettez à jour la politique de confiance en utilisant l'exemple suivant, qui inclut les clés de contexte de condition aws:SourceAccount globale aws:SourceArn et globale :

      { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "StringLike": { "aws:SourceArn": "arn:aws:datasync:region:account-id:*" } } }] }
      • Remplacez chaque instance account-id de par l' Compte AWS ID que vous utilisez DataSync.

      • regionRemplacez-le Région AWS par celui que vous utilisez DataSync.

    3. Choisissez Mettre à jour une politique.

Vous avez créé le rôle IAM que vous pouvez inclure dans votre politique de compartiment S3.

Mettre à jour votre politique de compartiment S3 avec le rôle

Une fois que vous avez créé le rôle IAM, vous devez l'ajouter à la politique du compartiment S3 dans l'autre Compte AWS endroit où se trouve votre manifeste.

  1. Dans le AWS Management Console, passez au compte contenant le compartiment S3 de votre manifeste.

  2. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  3. Sur la page détaillée du bucket, choisissez l'onglet Permissions.

  4. Sous Politique de compartiment, choisissez Modifier et procédez comme suit pour modifier votre politique de compartiment S3 :

    1. Mettez à jour le contenu de l'éditeur pour inclure les déclarations de politique suivantes :

      { "Version": "2008-10-17", "Statement": [ { "Sid": "DataSyncAccessManifestBucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/datasync-role" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }
    2. account-idRemplacez-le par l' Compte AWS identifiant du compte que vous utilisez DataSync .

    3. datasync-roleRemplacez-le par le rôle IAM que vous venez de créer et qui permet d'accéder DataSync à votre manifeste.

    4. amzn-s3-demo-bucketRemplacez-le par le nom du compartiment S3 qui héberge votre manifeste dans l'autre Compte AWS.

  5. Sélectionnez Enregistrer les modifications.

Vous avez créé un rôle IAM qui permet d'accéder DataSync à votre manifeste dans l'autre compte. Spécifiez ce rôle lors de la création ou du démarrage de votre tâche.

Spécification de votre manifeste lors de la création d'une tâche

Vous pouvez spécifier le manifeste que vous DataSync souhaitez utiliser lors de la création d'une tâche.

  1. Ouvrez la AWS DataSync console à l'adresse https://console.aws.amazon.com/datasync/.

  2. Dans le volet de navigation de gauche, choisissez Tâches, puis sélectionnez Créer une tâche.

  3. Configurez les emplacements source et de destination de votre tâche.

    Pour plus d’informations, consultez Où puis-je transférer mes données AWS DataSync ?.

  4. Pour le contenu à analyser, sélectionnez Fichiers, objets et dossiers spécifiques, puis sélectionnez Utiliser un manifeste.

  5. Pour l'URI S3, choisissez votre manifeste hébergé sur un compartiment S3.

    Vous pouvez également saisir l'URI (par exemple,s3://bucket/prefix/my-manifest.csv).

  6. Pour la version de l'objet, choisissez la version du manifeste que vous DataSync souhaitez utiliser.

    Par défaut, DataSync utilise la dernière version de l'objet.

  7. Pour le rôle d'accès au manifeste, effectuez l'une des opérations suivantes :

    • Choisissez Autogenerate pour DataSync créer automatiquement un rôle IAM doté des autorisations requises pour accéder à votre manifeste dans son compartiment S3.

    • Choisissez un rôle IAM existant qui peut accéder à votre manifeste.

    Pour de plus amples informations, veuillez consulter Fournir DataSync l'accès à votre manifeste.

  8. Configurez les autres paramètres de tâche dont vous avez besoin, puis choisissez Next.

  9. Choisissez Créer tâche.

  1. Copiez la create-task commande suivante :

    aws datasync create-task \ --source-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh \ --destination-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-abcdefgh12345678 \ --manifest-config { "Source": { "S3": { "ManifestObjectPath": "s3-object-key-of-manifest", "BucketAccessRoleArn": "bucket-iam-role", "S3BucketArn": "amzn-s3-demo-bucket-arn", "ManifestObjectVersionId": "manifest-version-to-use" } } }
  2. Pour le --source-location-arn paramètre, spécifiez l'Amazon Resource Name (ARN) de l'emplacement à partir duquel vous transférez les données.

  3. Pour le --destination-location-arn paramètre, spécifiez l'ARN de l'emplacement vers lequel vous transférez les données.

  4. Pour le --manifest-config paramètre, procédez comme suit :

    • ManifestObjectPath— Spécifiez la clé d'objet S3 de votre manifeste.

    • BucketAccessRoleArn— Spécifiez le rôle IAM qui permet d'accéder DataSync à votre manifeste dans son compartiment S3.

      Pour de plus amples informations, veuillez consulter Fournir DataSync l'accès à votre manifeste.

    • S3BucketArn— Spécifiez l'ARN du compartiment S3 qui héberge votre manifeste.

    • ManifestObjectVersionId— Spécifiez la version du manifeste que vous DataSync souhaitez utiliser.

      Par défaut, DataSync utilise la dernière version de l'objet.

  5. Exécutez la create-task commande pour créer votre tâche.

Lorsque vous êtes prêt, vous pouvez commencer votre tâche de transfert.

Spécification de votre manifeste lors du démarrage d'une tâche

Vous pouvez spécifier le manifeste que vous DataSync souhaitez utiliser lors de l'exécution d'une tâche.

  1. Ouvrez la AWS DataSync console à l'adresse https://console.aws.amazon.com/datasync/.

  2. Dans le volet de navigation de gauche, choisissez Tâches, puis choisissez la tâche que vous souhaitez démarrer.

  3. Sur la page d'aperçu des tâches, choisissez Démarrer, puis sélectionnez Démarrer avec des options de remplacement.

  4. Pour le contenu à analyser, sélectionnez Fichiers, objets et dossiers spécifiques, puis sélectionnez Utiliser un manifeste.

  5. Pour l'URI S3, choisissez votre manifeste hébergé sur un compartiment S3.

    Vous pouvez également saisir l'URI (par exemple,s3://bucket/prefix/my-manifest.csv).

  6. Pour la version de l'objet, choisissez la version du manifeste que vous DataSync souhaitez utiliser.

    Par défaut, DataSync utilise la dernière version de l'objet.

  7. Pour le rôle d'accès au manifeste, effectuez l'une des opérations suivantes :

    • Choisissez Autogenerate pour DataSync créer automatiquement un rôle IAM afin d'accéder à votre manifeste dans son compartiment S3.

    • Choisissez un rôle IAM existant qui peut accéder à votre manifeste.

    Pour de plus amples informations, veuillez consulter Fournir DataSync l'accès à votre manifeste.

  8. Choisissez Démarrer pour commencer votre transfert.

  1. Copiez la start-task-execution commande suivante :

    aws datasync start-task-execution \ --task-arn arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh \ --manifest-config { "Source": { "S3": { "ManifestObjectPath": "s3-object-key-of-manifest", "BucketAccessRoleArn": "bucket-iam-role", "S3BucketArn": "amzn-s3-demo-bucket-arn", "ManifestObjectVersionId": "manifest-version-to-use" } } }
  2. Pour le --task-arn paramètre, spécifiez l'Amazon Resource Name (ARN) de la tâche que vous lancez.

  3. Pour le --manifest-config paramètre, procédez comme suit :

    • ManifestObjectPath— Spécifiez la clé d'objet S3 de votre manifeste.

    • BucketAccessRoleArn— Spécifiez le rôle IAM qui permet d'accéder DataSync à votre manifeste dans son compartiment S3.

      Pour de plus amples informations, veuillez consulter Fournir DataSync l'accès à votre manifeste.

    • S3BucketArn— Spécifiez l'ARN du compartiment S3 qui héberge votre manifeste.

    • ManifestObjectVersionId— Spécifiez la version du manifeste que vous DataSync souhaitez utiliser.

      Par défaut, DataSync utilise la dernière version de l'objet.

  4. Exécutez la start-task-execution commande pour commencer le transfert.

Limites

Résolution des problèmes

Si vous transférez des objets dotés d'une version spécifique IDs depuis un compartiment S3, il se peut qu'une erreur liée à HeadObject ou s'afficheGetObjectTagging. Par exemple, voici une erreur liée à GetObjectTagging :

[WARN] Failed to read metadata for file /picture1.png (versionId: 111111): S3 Get Object Tagging Failed [ERROR] S3 Exception: op=GetObjectTagging photos/picture1.png, code=403, type=15, exception=AccessDenied, msg=Access Denied req-hdrs: content-type=application/xml, x-amz-api-version=2006-03-01 rsp-hdrs: content-type=application/xml, date=Wed, 07 Feb 2024 20:16:14 GMT, server=AmazonS3, transfer-encoding=chunked, x-amz-id-2=IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km, x-amz-request-id=79104EXAMPLEB723

Si l'une de ces erreurs s'affiche, vérifiez que le rôle IAM DataSync utilisé pour accéder à votre emplacement source S3 dispose des autorisations suivantes :

  • s3:GetObjectVersion

  • s3:GetObjectVersionTagging

Si vous devez mettre à jour votre rôle avec ces autorisations, consultezCréation d'un rôle IAM pour accéder DataSync à votre position Amazon S3.

Étapes suivantes

Si ce n'est pas déjà fait, commencez votre tâche. Sinon, surveillez l'activité de votre tâche.