Création d'une tâche d'opérations par lot S3 - Amazon Simple Storage Service

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.

Création d'une tâche d'opérations par lot S3

Les opérations par lots Amazon S3 vous permettent d’effectuer des opérations par lots à grande échelle sur une liste d’objets Amazon S3 spécifiques. Cette section décrit les informations dont vous avez besoin pour créer une tâche d’opérations par lot S3 ainsi que les résultats d’une demande CreateJob. Il fournit également des instructions pour créer une tâche Batch Operations à l'aide de la console Amazon S3, AWS Command Line Interface (AWS CLI) et AWS SDK for Java.

Lorsque vous créez une tâche d'opérations par lot S3, vous pouvez demander un rapport de fin de tâche pour toutes les tâches ou uniquement pour les tâches qui ont échoué. Tant qu’au moins une tâche a été invoquée avec succès, les opérations par lots S3 génèrent un rapport pour les tâches qui ont été achevées, qui ont échoué ou qui ont été annulées. Pour plus d’informations, consultez Exemples : Rapports de fin de tâche d'opérations par lot S3.

La vidéo suivante fournit une brève démonstration de la manière de créer une tâche d’opérations par lots à l’aide de la console Amazon S3.

Éléments d'une demande de tâche d'opération par lot

Pour créer une tâche d'opérations par lot S3, vous devez fournir les informations suivantes :

Opération

Spécifiez l'opération que la tâche d'opérations par lot S3 doit exécuter sur les objets du manifeste. Chaque type d'opération accepte des paramètres spécifiques à cette opération. Avec Batch Operations, vous pouvez effectuer une opération en bloc, avec les mêmes résultats que si vous aviez effectué cette opération one-by-one sur chaque objet.

Manifeste

Le manifeste est la liste de tous les objets sur lesquels vous voulez que les opérations par lots S3 exécutent l’opération spécifiée. Vous pouvez utiliser les méthodes suivantes pour spécifier un manifeste pour une tâche d’opérations par lot :

  • Créez manuellement votre propre liste d'objets personnalisée et CSV formatée.

  • Choisissez un rapport CSV formaté Catalogage et analyse de vos données avec S3 Inventory existant.

  • Indiquez aux opérations par lots de générer automatiquement un manifeste en fonction des critères de filtre d’objet que vous spécifiez lors de la création de votre tâche. Cette option est disponible pour les tâches de réplication par lots que vous créez dans la console Amazon S3, ou pour tout type de tâche que vous créez à l'aide de AWS CLI AWS SDKs, ou Amazon S3 RESTAPI.

Note
  • Quelle que soit la manière dont vous spécifiez votre manifeste, la liste elle-même doit être stockée dans un compartiment à usage général. Les opérations par lots ne peuvent pas importer de manifestes existants ni enregistrer les manifestes générés dans des compartiments de répertoires. Toutefois, les objets décrits dans le manifeste peuvent être stockés dans des compartiments de répertoires. Pour plus d’informations, consultez Compartiments de répertoires.

  • Si les objets de votre manifeste se trouvent dans un compartiment versionné, la spécification de la version IDs des objets indique à Batch Operations d'effectuer l'opération sur une version spécifique. Si aucune version IDs n'est spécifiée, Batch Operations exécute l'opération sur la dernière version des objets. Si votre manifeste comprend un champ d'identification de version, vous devez fournir un identifiant de version pour tous les objets du manifeste.

Pour plus d’informations, consultez Spécification d'un manifeste.

Priority

Utilisez les priorités pour indiquer la priorité relative de cette tâche par rapport aux autres s'exécutant dans votre compte. Un nombre plus élevé indique une priorité plus élevée.

Les priorités n'ont de sens que par rapport aux priorités établies pour d'autres tâches dans le même compte et la même Région. Ainsi, vous pouvez choisir le système de numérotation qui vous convient. Par exemple, vous souhaiterez peut-être attribuer à toutes les tâches Restore (RestoreObject) une priorité de 1, à toutes les tâches Copy (CopyObject) une priorité de 2 et à toutes les tâches Replace des listes de contrôle d'accès (ACLsPutObjectAcl) () une priorité de 3.

Les opérations par lots S3 traitent les tâches en fonction de leur numéro de priorité, mais un ordre strict n’est pas garanti. Par conséquent, n’utilisez pas les priorités de tâche pour vous assurer qu’une tâche commence ou finit avant une autre. Si vous devez garantir un ordre strict, attendez qu’une tâche se termine avant de démarrer la suivante.

RoleArn

Spécifiez un rôle AWS Identity and Access Management (IAM) pour exécuter la tâche. Le IAM rôle que vous utilisez doit disposer d'autorisations suffisantes pour effectuer l'opération spécifiée dans la tâche. Par exemple, pour exécuter une CopyObject tâche, le IAM rôle doit disposer de l's3:GetObjectautorisation pour le compartiment source et de l's3:PutObjectautorisation pour le compartiment de destination. Le rôle a également besoin des autorisations pour lire le manifeste et écrire le rapport de fin de tâche.

Pour plus d'informations sur IAM les rôles, voir IAMles rôles dans le Guide de IAM l'utilisateur.

Pour plus d’informations sur les autorisations Amazon S3, consultez Actions politiques pour Amazon S3.

Note

Les tâches d’opérations par lots qui effectuent des actions sur des compartiments de répertoires nécessitent des autorisations spécifiques. Pour plus d'informations, consultez AWS Identity and Access Management (IAM) pour S3 Express One Zone.

Rapport

Indiquez si vous souhaitez que la fonctionnalité d'opérations par lot S3 génère un rapport d'achèvement. Si vous demandez un rapport de fin de tâche, vous devez également fournir les paramètres du rapport dans cet élément. Les informations nécessaires sont les suivantes :

  • Le compartiment dans lequel vous souhaitez stocker le rapport

    Note

    Le rapport doit être stocké dans un compartiment à usage général. Les opérations par lots ne peuvent pas enregistrer les rapports dans des compartiments de répertoires. Pour plus d’informations, consultez Compartiments de répertoires.

  • Le format du rapport

  • Si vous souhaitez que le rapport comprenne les détails de toutes les tâches ou uniquement de celles ayant échoué

  • Une chaîne de préfixe facultative

Note

Les rapports d'achèvement sont toujours chiffrés par chiffrement côté serveur à l'aide de clés gérées par Amazon S3 (SSE-S3).

Les balises (facultatif)

Vous pouvez étiqueter et contrôler l'accès à vos tâches d'opérations par lot S3 en ajoutant des étiquettes. Vous pouvez utiliser des balises pour identifier qui est responsable d’une tâche d’opérations par lots ou pour contrôler comment les utilisateurs interagissent avec les tâches d’opérations par lot. La présence d'étiquettes de tâche peut octroyer ou limiter la capacité d'un utilisateur à annuler une tâche, activer une tâche dans l'état de confirmation ou modifier le niveau de priorité d'une tâche. Par exemple, vous pouvez accorder à un utilisateur l’autorisation d’invoquer l’opération CreateJob, à condition que la tâche soit créée avec la balise "Department=Finance".

Vous pouvez créer des tâches avec des étiquettes qui leur sont attachées et ajouter des étiquettes aux travaux après les avoir créés.

Pour plus d’informations, consultez Contrôle de l'accès et étiquetage des tâches à l'aide d'étiquettes.

Description (facultative)

Pour suivre et surveiller votre tâche, vous pouvez également fournir une description de 256 caractères maximum. Amazon S3 inclut cette description chaque fois qu'il renvoie des informations sur une tâche ou affiche les détails de la tâche sur la console Amazon S3. Cela vous permet de trier et filtrer facilement les tâches en fonction des descriptions que vous avez allouées. Comme les descriptions n'ont pas à être uniques, vous pouvez utiliser les descriptions comme catégories (par exemple, « Tâches hebdomadaires de copie des journaux ») pour vous aider à suivre les groupes de tâches similaires.

Spécification d'un manifeste

Un manifeste est un objet Amazon S3 qui contient les clés d’objet sur lesquelles Amazon S3 doit agir. Vous pouvez fournir un manifeste de différentes manières :

  • Créez manuellement un nouveau fichier manifeste.

  • Utilisez un manifeste existant.

  • Indiquez aux opérations par lots de générer automatiquement un manifeste en fonction des critères de filtre d’objet que vous spécifiez lors de la création de votre tâche. Cette option est disponible pour les tâches de réplication par lots que vous créez dans la console Amazon S3, ou pour tout type de tâche que vous créez à l'aide de AWS CLI AWS SDKs, ou Amazon S3 RESTAPI.

Note
  • Amazon S3 Batch Operations ne prend pas en charge la génération de manifestes entre régions.

  • Quelle que soit la manière dont vous spécifiez votre manifeste, la liste elle-même doit être stockée dans un compartiment à usage général. Les opérations par lots ne peuvent pas importer de manifestes existants ni enregistrer les manifestes générés dans des compartiments de répertoires. Toutefois, les objets décrits dans le manifeste peuvent être stockés dans des compartiments de répertoires. Pour plus d’informations, consultez Compartiments de répertoires.

Création d’un fichier manifeste

Pour créer un fichier manifeste manuellement, vous devez spécifier la clé de l'objet manifeste, ETag (balise d'entité) et l'ID de version facultatif dans une liste au CSV format -formaté. Le contenu du manifeste doit être URL codé.

Par défaut, Amazon S3 utilise automatiquement le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3) pour chiffrer un manifeste chargé dans un compartiment Amazon S3. Les manifestes qui utilisent le chiffrement côté serveur avec des clés fournies par le client (SSE-C) ne sont pas pris en charge. Les manifestes qui utilisent le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS) ne sont pris en charge que lorsque vous utilisez des rapports d'inventaire CSV au format -. L'utilisation d'un manifeste créé manuellement avec n' AWS KMS est pas prise en charge.

Votre manifeste doit contenir le nom du compartiment, la clé d'objet et, facultativement, la version de chaque objet. Les autres champs du manifeste ne sont pas utilisés lors des opérations par lot S3.

Note

Si les objets de votre manifeste se trouvent dans un compartiment versionné, la spécification de la version IDs des objets indique à Batch Operations d'effectuer l'opération sur une version spécifique. Si aucune version IDs n'est spécifiée, Batch Operations exécute l'opération sur la dernière version des objets. Si votre manifeste comprend un champ d'identification de version, vous devez fournir un identifiant de version pour tous les objets du manifeste.

Voici un exemple de manifeste au CSV format sans versionIDs.

amzn-s3-demo-bucket1,objectkey1 amzn-s3-demo-bucket1,objectkey2 amzn-s3-demo-bucket1,objectkey3 amzn-s3-demo-bucket1,photos/jpgs/objectkey4 amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5 amzn-s3-demo-bucket1,object%20key%20with%20spaces

Voici un exemple de manifeste dont le CSV format inclut la versionIDs.

amzn-s3-demo-bucket1,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p amzn-s3-demo-bucket1,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF amzn-s3-demo-bucket1,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI amzn-s3-demo-bucket1,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4 amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs amzn-s3-demo-bucket1,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w

Spécification d’un fichier manifeste existant

Vous pouvez spécifier un fichier manifeste pour une demande de création de tâche dans l’un des deux formats suivants :

  • Rapport d'inventaire Amazon S3 — Il doit s'agir d'un rapport d'inventaire Amazon S3 CSV au format. Vous devez spécifier le fichier manifest.json associé au rapport d'inventaire. Pour plus d’informations sur les rapports d’inventaire, consultez Catalogage et analyse de vos données avec S3 Inventory. Si le rapport d'inventaire inclut la versionIDs, S3 Batch Operations fonctionne sur les versions d'objets spécifiques.

    Note
    • S3 Batch Operations prend en charge les rapports d'CSVinventaire chiffrés avec SSE -KMS.

    • Si vous soumettez un manifeste de rapport d'inventaire chiffré avec SSE -KMS, votre IAM politique doit inclure les autorisations relatives "kms:Decrypt" à l'manifest.jsonobjet et à tous les fichiers de CSV données associés. "kms:GenerateDataKey"

  • CSVfichier — Chaque ligne du fichier doit inclure le nom du compartiment, la clé de l'objet et, éventuellement, la version de l'objet. Les clés d'objet doivent être URL codées, comme indiqué dans les exemples suivants. Le manifeste doit inclure la version IDs pour tous les objets ou omettre la version IDs pour tous les objets. Pour plus d'informations sur le format du CSV manifeste, voir JobManifestSpecdans le Amazon Simple Storage Service API Reference.

    Note

    S3 Batch Operations ne prend pas en charge les fichiers CSV manifestes chiffrés avec SSE -KMS.

Important

Lorsque vous utilisez un manifeste créé manuellement et un compartiment versionné, nous vous recommandons de spécifier la version IDs des objets. Lorsque vous créez une tâche, les opérations par lot S3 analysent l’intégralité du manifeste avant d’exécuter la tâche. Cependant, cela ne crée pas d'instantané de l'état de ce compartiment.

Les manifestes pouvant contenir des milliards d’objets, l’exécution des tâches peut prendre beaucoup de temps, ce qui peut avoir une incidence sur la version d’un objet sur laquelle la tâche agit. Supposons que vous remplaciez un objet par une nouvelle version pendant qu’une tâche s’exécute et que vous n’avez pas spécifié d’ID de version pour cet objet. Dans ce cas, Amazon S3 effectue l’opération sur la dernière version de l’objet, et non pas sur la version qui existait lorsque vous avez créé la tâche. Le seul moyen d'éviter ce comportement est de spécifier IDs la version des objets répertoriés dans le manifeste.

Génération automatique d’un manifeste

Vous pouvez indiquer à Amazon S3 de générer automatiquement un manifeste en fonction des critères de filtre d’objet que vous spécifiez lors de la création de la tâche. Cette option est disponible pour les tâches de réplication par lots que vous créez dans la console Amazon S3, ou pour tout type de tâche que vous créez à l'aide de AWS CLI AWS SDKs, ou Amazon S3 RESTAPI. Pour en savoir plus sur la réplication par lot, consultez Réplication d'objets existants avec Batch Replication.

Pour générer automatiquement un manifeste, vous devez spécifier les éléments suivants dans le cadre de votre demande de création de tâche :

  • Informations sur le bucket qui contient vos objets source, y compris le propriétaire du bucket et le nom de ressource Amazon (ARN)

  • Informations sur la sortie du manifeste, y compris un indicateur permettant de créer un fichier manifeste, le propriétaire du compartiment de sortieARN, le préfixe, le format de fichier et le type de cryptage

  • Critères facultatifs pour filtrer les objets en fonction de leur date de création, de leur nom de clé, de leur taille et de leur classe de stockage. Dans le cas des tâches de réplication, vous pouvez également utiliser des balises pour filtrer les objets.

Critères de filtre d’objet

Pour filtrer la liste des objets à inclure dans un manifeste généré automatiquement, vous pouvez spécifier les critères suivants. Pour plus d’informations, consultez .JobManifestGeneratorFilterdans le Amazon S3 API Reference.

CreatedAfter

Si ce critère est fourni, le manifeste généré inclut uniquement les objets du compartiment source créés après cet instant.

CreatedBefore

Si ce critère est fourni, le manifeste généré inclut uniquement les objets du compartiment source créés avant cet instant.

EligibleForReplication

Si ce critère est fourni, le manifeste généré inclut les objets uniquement s’ils sont éligibles à la réplication conformément à la configuration de réplication du compartiment source.

KeyNameConstraint

S'il est fourni, le manifeste généré inclut uniquement les objets du compartiment source dont les clés d'objet correspondent aux contraintes de chaîne spécifiées pour MatchAnySubstringMatchAnyPrefix, et MatchAnySuffix.

MatchAnySubstring— S'il est fourni, le manifeste généré inclut des objets si la chaîne spécifiée apparaît n'importe où dans la chaîne clé de l'objet.

MatchAnyPrefix— S'il est fourni, le manifeste généré inclut des objets si la chaîne spécifiée apparaît au début de la chaîne clé de l'objet.

MatchAnySuffix— S'il est fourni, le manifeste généré inclut des objets si la chaîne spécifiée apparaît à la fin de la chaîne clé de l'objet.

MatchAnyStorageClass

Si ce critère est fourni, le manifeste généré inclut uniquement les objets du compartiment source stockés avec la classe de stockage spécifiée.

ObjectReplicationStatuses

Si ce critère est fourni, le manifeste généré inclut uniquement les objets du compartiment source présentant l’un des statuts de réplication spécifiés.

ObjectSizeGreaterThanBytes

Si ce critère est fourni, le manifeste généré inclut uniquement les objets du compartiment source dont la taille de fichier est supérieure au nombre d’octets spécifié.

ObjectSizeLessThanBytes

Si ce critère est fourni, le manifeste généré inclut uniquement les objets du compartiment source dont la taille de fichier est inférieure au nombre d’octets spécifié.

Note

Vous ne pouvez pas cloner la plupart des tâches qui ont généré automatiquement des manifestes. Les tâches de réplication par lot peuvent être clonées, sauf lorsqu’elles utilisent les critères de filtre de manifeste KeyNameConstraint, MatchAnyStorageClass, ObjectSizeGreaterThanBytes ou ObjectSizeLessThanBytes.

La syntaxe permettant de spécifier les critères du manifeste varie en fonction de la méthode que vous utilisez pour créer votre tâche. Pour obtenir des exemples, consultez Création d'une tâche.

Création d'une tâche

Vous pouvez créer des tâches S3 Batch Operations à l'aide de la console Amazon S3 ou d'Amazon S3 RESTAPI. AWS CLI AWS SDKs

Pour plus d’informations sur la création d’une demande de tâche, consultez Éléments d'une demande de tâche d'opération par lot.

Prérequis

Avant de créer une tâche d’opérations par lot, vérifiez que vous avez configuré les autorisations pertinentes. Pour plus d’informations, consultez Octroi d'autorisations pour les opérations par lots.

Pour créer une tâche par lot
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la barre de navigation en haut de la page, choisissez le nom du fichier actuellement affiché Région AWS. Choisissez ensuite la région dans laquelle vous souhaitez créer votre emploi.

    Note

    Pour les opérations de copie, vous devez créer la tâche dans la même région que le compartiment de destination. Pour toutes les autres opérations, vous devez créer la tâche dans la même région que les objets du manifeste.

  3. Choisissez Batch Operations dans le volet de navigation de gauche de la console Amazon S3.

  4. Choisissez Créer une tâche.

  5. Consultez l'Région AWSendroit où vous souhaitez créer votre emploi.

  6. Sous Format du manifeste, choisissez le type d'objet manifeste à utiliser.

    • Si vous choisissez le rapport d'inventaire S3, entrez le chemin d'accès à l'objet manifest.json généré par Amazon S3 dans le cadre du rapport d'inventaire au CSV format, et éventuellement l'ID de version de l'objet manifeste si vous souhaitez utiliser une version autre que la plus récente.

    • Si vous le souhaitez CSV, entrez le chemin d'accès à un CSV objet manifeste formaté. L'objet manifeste doit respecter le format décrit dans la console. Vous pouvez éventuellement inclure l'ID de version de l'objet manifeste si vous souhaitez utiliser une version autre que la plus récente.

    Note

    La console Amazon S3 prend en charge la génération automatique de manifeste uniquement pour les tâches de réplication par lot. Pour tous les autres types de tâches, si vous souhaitez qu'Amazon S3 génère automatiquement un manifeste en fonction des critères de filtre que vous spécifiez, vous devez configurer votre tâche à l'aide de AWS CLI AWS SDKs, ou Amazon S3 RESTAPI.

  7. Choisissez Suivant.

  8. Sous Operation (Opération), choisissez l'opération que vous souhaitez effectuer sur tous les objets répertoriés dans le manifeste. Remplissez les informations relatives à l'opération choisie, puis sélectionnez Suivant.

  9. Remplissez les informations relatives à l'option Configure additional options (Configurer les options supplémentaires), puis sélectionnez Suivant.

  10. Sous Vérification, vérifiez les paramètres. Si vous devez apporter des modifications, choisissez Précédent. Sinon, choisissez Créer une tâche.

Pour créer votre tâche Batch Operations avec le AWS CLI, choisissez l'un des exemples suivants, selon que vous spécifiez un manifeste existant ou que vous générez un manifeste automatiquement.

Specify manifest

L'exemple suivant montre comment utiliser le AWS CLI pour créer une S3PutObjectTagging tâche S3 Batch Operations qui agit sur des objets répertoriés dans un fichier manifeste existant.

Pour créer une S3PutObjectTagging tâche Batch Operations en spécifiant un manifeste
  1. Utilisez les commandes suivantes pour créer un rôle AWS Identity and Access Management (IAM), puis créez une IAM politique pour attribuer les autorisations appropriées. Le rôle et la politique suivants accordent à Amazon S3 l’autorisation d’ajouter des balises d’objet, dont vous aurez besoin lors de la création de la tâche dans une étape ultérieure.

    1. Utilisez l'exemple de commande suivant pour créer un IAM rôle à utiliser par Batch Operations. Pour utiliser cet exemple de commande, remplacez S3BatchJobRole par le nom que vous souhaitez donner à ce rôle.

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      Enregistrez le nom de la ressource Amazon du rôle (ARN). Vous en aurez besoin ARN lorsque vous créerez un emploi.

    2. Utilisez l'exemple de commande suivant pour créer une IAM politique avec les autorisations nécessaires et l'associer au IAM rôle que vous avez créé à l'étape précédente. Pour plus d’informations sur les autorisations nécessaires, consultez Octroi d'autorisations pour les opérations par lots.

      Note

      Les tâches d’opérations par lots qui effectuent des actions sur des compartiments de répertoires nécessitent des autorisations spécifiques. Pour plus d'informations, consultez AWS Identity and Access Management (IAM) pour S3 Express One Zone.

      Pour utiliser cet exemple de commande, remplacez les user input placeholders comme suit :

      • Remplacez S3BatchJobRole par le nom de votre IAM rôle. Assurez-vous que ce nom correspond au nom que vous avez utilisé précédemment.

      • PutObjectTaggingBatchJobPolicyRemplacez-le par le nom que vous souhaitez donner à votre IAM politique.

      • Remplacez amzn-s3-demo-destination-bucket par le nom du compartiment qui contient les objets auxquels vous souhaitez appliquer des balises.

      • Remplacez amzn-s3- demo-manifest-bucket avec le nom du bucket qui contient le manifeste.

      • Remplacez amzn-s3- demo-completion-report-bucket avec le nom du compartiment dans lequel vous souhaitez que le rapport d'achèvement soit livré.

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name PutObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket", "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket", "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }'
  2. Utilisez l’exemple de commande suivant pour créer une tâche S3PutObjectTagging.

    Le fichier manifest.csv fournit une liste des valeurs de compartiment et de clé d'objet. Cette tâche applique les balises spécifiées aux objets identifiés dans le manifeste. ETagIl s'agit ETag de l'manifest.csvobjet, que vous pouvez obtenir depuis la console Amazon S3. Cette demande spécifie le paramètre no-confirmation-required, afin que vous puissiez exécuter la tâche sans avoir à la confirmer avec la commande update-job-status. Pour plus d’informations, consultez .create-jobdans la référence de AWS CLI commande.

    Pour utiliser cet exemple de commande, remplacez user input placeholders par vos propres informations. Remplacez IAM-rôle avec ARN le IAM rôle que vous avez créé précédemment.

    aws s3control create-job \ --region us-west-2 \ --account-id acct-id \ --operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"keyOne", "Value":"ValueOne"}] }}' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \ --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket","Prefix":"final-reports", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --priority 42 \ --role-arn IAM-role \ --client-request-token $(uuidgen) \ --description "job description" \ --no-confirmation-required

    En réponse, Amazon S3 renvoie un ID de tâche (par exemple, 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). Vous aurez besoin de l’ID de la tâche pour identifier, surveiller et modifier la tâche.

Generate manifest

L’exemple suivant montre comment créer une tâche d’opérations par lots S3 S3DeleteObjectTagging qui génère automatiquement un manifeste en fonction de vos critères de filtre d’objet. Ces critères incluent la date de création, le nom de la clé, la taille, la classe de stockage et les balises.

Pour créer une S3DeleteObjectTagging tâche Batch Operations en générant un manifeste
  1. Utilisez les commandes suivantes pour créer un rôle AWS Identity and Access Management (IAM), puis créez une IAM politique pour attribuer des autorisations. Le rôle et la politique suivants accordent à Amazon S3 l’autorisation de supprimer des balises d’objet, dont vous aurez besoin lors de la création de la tâche dans une étape ultérieure.

    1. Utilisez l'exemple de commande suivant pour créer un IAM rôle à utiliser par Batch Operations. Pour utiliser cet exemple de commande, remplacez S3BatchJobRole par le nom que vous souhaitez donner à ce rôle.

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      Enregistrez le nom de la ressource Amazon du rôle (ARN). Vous en aurez besoin ARN lorsque vous créerez un emploi.

    2. Utilisez l'exemple de commande suivant pour créer une IAM politique avec les autorisations nécessaires et l'associer au IAM rôle que vous avez créé à l'étape précédente. Pour plus d’informations sur les autorisations nécessaires, consultez Octroi d'autorisations pour les opérations par lots.

      Note

      Les tâches d’opérations par lots qui effectuent des actions sur des compartiments de répertoires nécessitent des autorisations spécifiques. Pour plus d'informations, consultez AWS Identity and Access Management (IAM) pour S3 Express One Zone.

      Pour utiliser cet exemple de commande, remplacez les user input placeholders comme suit :

      • Remplacez S3BatchJobRole par le nom de votre IAM rôle. Assurez-vous que ce nom correspond au nom que vous avez utilisé précédemment.

      • DeleteObjectTaggingBatchJobPolicyRemplacez-le par le nom que vous souhaitez donner à votre IAM politique.

      • Remplacez amzn-s3-demo-destination-bucket par le nom du compartiment qui contient les objets auxquels vous souhaitez appliquer des balises.

      • Remplacez amzn-s3-demo-manifest-bucket par le nom du compartiment dans lequel vous voulez enregistrer le manifeste.

      • Remplacez amzn-s3-demo-completion-report-bucket par le nom du compartiment dans lequel vous voulez livrer le rapport d’achèvement.

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name DeleteObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Effect":"Allow", "Action":[ "s3:PutInventoryConfiguration" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket", "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket", "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*", "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] } ] }'

  2. Utilisez l’exemple de commande suivant pour créer la tâche S3DeleteObjectTagging.

    Dans cet exemple, les valeurs de la section --report spécifient le compartiment, le préfixe, le format et la portée du rapport de tâche qui sera généré. La section --manifest-generator fournit des informations sur le compartiment source qui contient les objets sur lesquels la tâche agira, des informations sur la liste de sortie du manifeste qui sera générée pour la tâche et les critères de filtre permettant de réduire l’étendue des objets à inclure dans le manifeste en fonction de la date de création, de contraintes de nom, de la taille et de la classe de stockage. La commande spécifie également la priorité, le rôle et IAM le rôle de la tâche Région AWS.

    Pour plus d’informations, consultez .create-jobdans la référence de AWS CLI commande.

    Pour utiliser cet exemple de commande, remplacez user input placeholders par vos propres informations. Remplacez IAM-rôle avec ARN le IAM rôle que vous avez créé précédemment.

    aws s3control create-job \ --account-id 012345678901 \ --operation '{ "S3DeleteObjectTagging": {} }' \ --report '{ "Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket", "Prefix":"reports", "Format":"Report_CSV_20180820", "Enabled":true, "ReportScope":"AllTasks" }' \ --manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "012345678901", "SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket", "EnableManifestOutput": true, "ManifestOutputLocation": { "ExpectedManifestBucketOwner": "012345678901", "Bucket": "arn:aws:s3:::amzn-s3-demo-manifest-bucket", "ManifestPrefix": "prefix", "ManifestFormat": "S3InventoryReport_CSV_20211130" }, "Filter": { "CreatedAfter": "2023-09-01", "CreatedBefore": "2023-10-01", "KeyNameConstraint": { "MatchAnyPrefix": [ "prefix" ], "MatchAnySuffix": [ "suffix" ] }, "ObjectSizeGreaterThanBytes": 100, "ObjectSizeLessThanBytes": 200, "MatchAnyStorageClass": [ "STANDARD", "STANDARD_IA" ] } } }' \ --priority 2 \ --role-arn IAM-role \ --region us-east-1

    En réponse, Amazon S3 renvoie un ID de tâche (par exemple, 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). Vous aurez besoin de cet ID de tâche pour identifier, surveiller ou modifier la tâche.

Pour créer votre tâche Batch Operations avec le AWS SDK for Java, choisissez l'un des exemples suivants, selon que vous spécifiez un manifeste existant ou que vous générez un manifeste automatiquement.

Specify manifest

L’exemple suivant montre comment créer une tâche d’opérations par lots S3 S3PutObjectTagging qui agit sur les objets répertoriés dans un fichier manifeste existant. Pour utiliser cet exemple, remplacez user input placeholders par vos propres informations.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.*; import java.util.UUID; import java.util.ArrayList; import static com.amazonaws.regions.Regions.US_WEST_2; public class CreateJob { public static void main(String[] args) { String accountId = "Account ID"; String iamRoleArn = "IAM Role ARN"; String reportBucketName = "arn:aws:s3:::amzn-s3-demo-completion-report-bucket"; String uuid = UUID.randomUUID().toString(); ArrayList tagSet = new ArrayList<S3Tag>(); tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne")); try { JobOperation jobOperation = new JobOperation() .withS3PutObjectTagging(new S3SetObjectTaggingOperation() .withTagSet(tagSet) ); JobManifest manifest = new JobManifest() .withSpec(new JobManifestSpec() .withFormat("S3BatchOperations_CSV_20180820") .withFields(new String[]{ "Bucket", "Key" })) .withLocation(new JobManifestLocation() .withObjectArn("arn:aws:s3:::my_manifests/manifest.csv") .withETag("60e460c9d1046e73f7dde5043ac3ae85")); JobReport jobReport = new JobReport() .withBucket(reportBucketName) .withPrefix("reports") .withFormat("Report_CSV_20180820") .withEnabled(true) .withReportScope("AllTasks"); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); s3ControlClient.createJob(new CreateJobRequest() .withAccountId(accountId) .withOperation(jobOperation) .withManifest(manifest) .withReport(jobReport) .withPriority(42) .withRoleArn(iamRoleArn) .withClientRequestToken(uuid) .withDescription("job description") .withConfirmationRequired(false) ); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
Generate manifest

L’exemple suivant montre comment créer une tâche d’opérations par lots S3 s3PutObjectCopy qui génère automatiquement un manifeste en fonction de vos critères de filtre d’objet, dont notamment la date de création, le nom de clé et la taille. Pour utiliser cet exemple, remplacez user input placeholders par vos propres informations.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.CreateJobRequest; import com.amazonaws.services.s3control.model.CreateJobResult; import com.amazonaws.services.s3control.model.JobManifestGenerator; import com.amazonaws.services.s3control.model.JobManifestGeneratorFilter; import com.amazonaws.services.s3control.model.JobOperation; import com.amazonaws.services.s3control.model.JobReport; import com.amazonaws.services.s3control.model.KeyNameConstraint; import com.amazonaws.services.s3control.model.S3JobManifestGenerator; import com.amazonaws.services.s3control.model.S3ManifestOutputLocation; import com.amazonaws.services.s3control.model.S3SetObjectTaggingOperation; import com.amazonaws.services.s3control.model.S3Tag; import java.time.Instant; import java.util.Date; import java.util.UUID; import java.util.ArrayList; import static com.amazonaws.regions.Regions.US_WEST_2; public class test { public static void main(String[] args) { String accountId = "012345678901"; String iamRoleArn = "arn:aws:iam::012345678901:role/ROLE"; String sourceBucketName = "arn:aws:s3:::amzn-s3-demo-source-bucket"; String reportBucketName = "arn:aws:s3:::amzn-s3-demo-completion-report-bucket"; String manifestOutputBucketName = "arn:aws:s3:::amzn-s3-demo-manifest-bucket"; String uuid = UUID.randomUUID().toString(); long minimumObjectSize = 100L; ArrayList<S3Tag> tagSet = new ArrayList<>(); tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne")); ArrayList<String> prefixes = new ArrayList<>(); prefixes.add("s3KeyStartsWith"); try { JobOperation jobOperation = new JobOperation() .withS3PutObjectTagging(new S3SetObjectTaggingOperation() .withTagSet(tagSet) ); S3ManifestOutputLocation manifestOutputLocation = new S3ManifestOutputLocation() .withBucket(manifestOutputBucketName) .withManifestPrefix("manifests") .withExpectedManifestBucketOwner(accountId) .withManifestFormat("S3InventoryReport_CSV_20211130"); JobManifestGeneratorFilter jobManifestGeneratorFilter = new JobManifestGeneratorFilter() .withEligibleForReplication(true) .withKeyNameConstraint( new KeyNameConstraint() .withMatchAnyPrefix(prefixes)) .withCreatedBefore(Date.from(Instant.now())) .withObjectSizeGreaterThanBytes(minimumObjectSize); S3JobManifestGenerator s3JobManifestGenerator = new S3JobManifestGenerator() .withEnableManifestOutput(true) .withManifestOutputLocation(manifestOutputLocation) .withFilter(jobManifestGeneratorFilter) .withSourceBucket(sourceBucketName); JobManifestGenerator jobManifestGenerator = new JobManifestGenerator() .withS3JobManifestGenerator(s3JobManifestGenerator); JobReport jobReport = new JobReport() .withBucket(reportBucketName) .withPrefix("reports") .withFormat("Report_CSV_20180820") .withEnabled(true) .withReportScope("AllTasks"); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); CreateJobResult createJobResult = s3ControlClient.createJob(new CreateJobRequest() .withAccountId(accountId) .withOperation(jobOperation) .withManifestGenerator(jobManifestGenerator) .withReport(jobReport) .withPriority(42) .withRoleArn(iamRoleArn) .withClientRequestToken(uuid) .withDescription("job description") .withConfirmationRequired(true) ); System.out.println("Created job " + createJobResult.getJobId()); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

Vous pouvez utiliser le REST API pour créer une tâche Batch Operations. Pour plus d’informations, consultez .CreateJobdans le Amazon Simple Storage Service API Reference.

Réponses à la tâche

Si la demande CreateJob aboutit, Amazon S3 renvoie un ID de tâche. L'ID de tâche est un identifiant unique généré automatiquement par Amazon S3 afin que vous puissiez identifier votre tâche d'opérations par lot et surveiller son statut.

Lorsque vous créez une tâche via le ou AWS CLI AWS SDKs RESTAPI, vous pouvez configurer S3 Batch Operations pour commencer à traiter la tâche automatiquement. La tâche s’exécute dès qu’elle est prête, au lieu d’attendre que des tâches de plus haute priorité soient traitées en premier.

Lorsque vous créez une tâche via la console Amazon S3, vous devez vérifier les détails de la tâche et confirmer que vous voulez l’exécuter avant que les opérations par lots commencent à la traiter. Si une tâche conserve l’état Suspendu pendant plus de 30 jours, cette tâche échouera.