

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.

# Exécution d’opérations groupées sur des objets avec Batch Operations
<a name="batch-ops"></a>

Vous pouvez utiliser les opérations par lot S3 pour effectuer des opérations par lot à grande échelle sur des objets Amazon S3. Les opérations par lot S3 peuvent effectuer une seule opération sur les listes d’objets Amazon S3 que vous spécifiez. Une seule tâche peut effectuer une opération spécifiée sur des milliards d’objets contenant des exaoctets de données. Amazon S3 suit la progression, envoie des notifications et stocke un rapport de fin d’opérations détaillé sur toutes les actions, offrant ainsi une expérience sans serveur entièrement gérée et contrôlable. Vous pouvez utiliser S3 Batch Operations via la console Amazon S3, AWS Command Line Interface (AWS CLI) ou l'API REST Amazon S3. AWS SDKs

Utilisez S3 Batch Operations pour copier des objets, mettre à jour le chiffrement des objets côté serveur et définir des balises d'objets ou des listes de contrôle d'accès ()ACLs. Vous pouvez également lancer des restaurations d'objets à partir de S3 Glacier Flexible Retrieval ou invoquer une AWS Lambda fonction pour effectuer des actions personnalisées à l'aide de vos objets. Vous pouvez effectuer ces opérations sur une liste d’objets personnalisée ou utiliser un rapport Amazon S3 Inventory pour faciliter la génération de listes d’objets. Amazon S3 Batch Operations utilise les mêmes opérations d’API Amazon S3 que celles que vous utilisez déjà avec Amazon S3. 

**Note**  
Pour plus d’informations sur l’utilisation de la classe de stockage Amazon S3 Express One Zone avec des compartiments de répertoires, consultez [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) et [Utilisation des compartiments de répertoires](directory-buckets-overview.md). Pour plus d’informations sur l’utilisation de Batch Operations avec S3 Express One Zone et les compartiments de répertoires, consultez [Utilisation des opérations par lots avec les compartiments de répertoires](directory-buckets-objects-Batch-Ops.md).

## Principes de base de S3 Batch Operations
<a name="batch-ops-basics"></a>

Vous pouvez utiliser les opérations par lot S3 pour effectuer des opérations par lot à grande échelle sur des objets Amazon S3. S3 Batch Operations peut exécuter une seule opération ou action sur des listes d’objets Amazon S3 que vous spécifiez. 

### Terminologie
<a name="batch-ops-terminology"></a>

Cette section utilise les termes *manifeste*, *tâches*, *opérations* et *sous-tâches*, dont la définition est la suivante :

**Manifeste**  
Un manifeste est un objet Amazon S3 qui contient les clés d’objet sur lesquelles Amazon S3 doit agir. Si vous souhaitez créer une tâche Batch Operations, vous devez fournir un manifeste. Votre manifeste généré par l’utilisateur doit contenir le nom du compartiment, la clé d’objet et, facultativement, la version de chaque objet. Si vous fournissez un manifeste généré par l’utilisateur, il doit se présenter sous la forme d’un rapport d’inventaire Amazon S3 ou d’un fichier CSV.   
Vous pouvez aussi 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 Batch Operations que vous créez à l'aide de la console Amazon S3, ou pour tout type de tâche que vous créez à l'aide de l'API REST AWS Command Line Interface (AWS CLI) ou Amazon S3. AWS SDKs 

**Tâche**  
Une tâche est l’unité de travail de base des opérations par lot S3. Une tâche contient toutes les informations nécessaires à l’exécution de l’opération spécifiée pour les objets répertoriés dans le manifeste. Une fois que vous avez fourni ces informations et que vous demandez le lancement de la tâche, celle-ci effectue l’opération pour chaque objet présent dans le manifeste. 

**Opération**  
L’opération est le type d’[action](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html) d’API, telle que la copie d’objets, que vous souhaitez faire exécuter par la tâche Batch Operations. Chaque tâche effectue un seul type d’opération sur tous les objets spécifiés dans le manifeste.

**Sous-tâche**  
Une sous-tâche est l’unité d’exécution d’une tâche. Une tâche représente un appel unique à une opération Amazon S3 ou AWS Lambda API pour effectuer l'opération de la tâche sur un seul objet. Pendant toute la durée de vie d’une tâche, S3 Batch Operations crée une seule tâche pour chaque objet spécifié dans le manifeste.

### Fonctionnement d’une tâche S3 Batch Operations
<a name="batch-ops-basics-how-it-works"></a>

Une tâche est l'unité de travail de base des opérations par lot S3. Une tâche contient toutes les informations nécessaires à l’exécution de l’opération spécifiée pour une liste d’objets. Pour créer une tâche, vous fournissez à S3 Batch Operations une liste d’objets et vous spécifiez l’action à exécuter sur ces objets. Pour plus d’informations sur les opérations prises en charge par S3 Batch Operations, consultez [Opérations prises en charge par les opérations par lot S3](batch-ops-operations.md).

Une tâche par lot exécute une opération spécifiée sur chaque objet inclus dans son *manifeste*. Un manifeste répertorie les objets que vous souhaitez traiter par le biais d’une tâche par lot et il est stocké sous forme d’objet dans un compartiment. Vous pouvez utiliser un rapport [Catalogage et analyse de vos données avec S3 Inventory](storage-inventory.md) au format comma-separated values (CSV) comme manifeste, ce qui facilite la création de grandes listes d’objets situés dans un compartiment. Vous pouvez également spécifier un manifeste dans un format CSV simple qui vous permet d’effectuer des opérations par lot sur une liste personnalisée d’objets stockés dans un compartiment unique. 

Une fois que vous avez créé une tâche, Amazon S3 traite la liste d’objets du manifeste et exécute l’opération spécifiée sur chaque objet. Pendant qu’une tâche est en cours, vous pouvez surveiller sa progression par programme ou via la console Amazon S3. Vous pouvez également configurer une tâche pour générer un rapport de fin lorsque celle-ci se termine. Le rapport de fin décrit les résultats de chaque sous-tâche. Pour plus d’informations sur la surveillance des tâches, consultez [Gestion des tâches d’opérations par lot S3](batch-ops-managing-jobs.md). 

Des coûts sont associés à S3 Batch Operations. La création de tâches Batch Operations vous est facturée, y compris les tâches annulées avant leur fin. Pour plus d’informations, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/).

Par défaut, les tâches S3 Batch Operations peuvent traiter jusqu’à 4 milliards d’objets pour toutes les opérations. Plus précisément, les tâches Copy, Object Tagging, Object Lock, invocation d'une AWS Lambda fonction et Batch Replication peuvent prendre en charge jusqu'à 20 milliards d'objets. Il existe une limite de 6 tâches de réplication par lots actives par AWS compte. Pour commencer à créer une tâche Batch Operations, consultez [Création d’une tâche S3 Batch Operations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html).

## Tutoriel des opérations par lots S3
<a name="batch-ops-basics-tutorial"></a>

Le didacticiel suivant présente end-to-end des procédures complètes pour certaines tâches d'opérations par lots.
+ [Didacticiel : transcodage par lot de vidéos avec les opérations par lot S3](tutorial-s3-batchops-lambda-mediaconvert-video.md)

# Octroi d’autorisations pour Batch Operations
<a name="batch-ops-iam-role-policies"></a>

Avant de créer et d’exécuter des tâches S3 Batch Operations, vous devez accorder les autorisations requises. Pour créer une tâche S3 Batch Operations, l’autorisation de l’utilisateur `s3:CreateJob` est requise. La même entité qui crée la tâche doit également être `iam:PassRole` autorisée à transmettre le rôle Gestion des identités et des accès AWS (IAM) spécifié pour la tâche à Batch Operations.

Les sections suivantes fournissent des informations sur la création d’un rôle IAM et l’attachement de stratégies. Pour des informations générales sur la spécification des ressources IAM, voir [Éléments de politique IAM JSON : ressource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) dans le guide de l'utilisateur *IAM*.

**Topics**
+ [Création d’un rôle IAM S3 Batch Operations](#batch-ops-iam-role-policies-create)
+ [Attachement des stratégies d’autorisations](#batch-ops-iam-role-policies-perm)

## Création d’un rôle IAM S3 Batch Operations
<a name="batch-ops-iam-role-policies-create"></a>

Amazon S3 doit avoir l’autorisation d’effectuer des tâches S3 Batch Operations en votre nom. Vous accordez ces autorisations par le biais d'un rôle Gestion des identités et des accès AWS (IAM). Lorsque vous créez une tâche S3 Batch Operations, vous spécifiez le rôle IAM que vous souhaitez que la tâche utilise. Il peut s'agir d'un rôle IAM existant. Ou, si vous utilisez la console Amazon S3 pour créer la tâche, il peut s'agir d'un rôle IAM créé par Amazon S3 pour vous.

Si vous choisissez de laisser Amazon S3 créer le rôle IAM pour vous, il crée et associe automatiquement des politiques de confiance et d'autorisation au rôle. La politique de confiance permet au principal du service S3 Batch Operations (`batchoperations.s3.amazonaws.com`) d'assumer le rôle. La politique d'autorisation autorise toutes les actions requises pour exécuter le travail, en fonction des paramètres que vous spécifiez pour le travail. Par exemple, si vous configurez une tâche pour copier des objets d'un compartiment vers un autre de votre compartiment Compte AWS, la politique d'autorisation autorise des actions telles que `s3:GetObject` et`s3:PutObject`. Vous pouvez consulter les politiques de confiance et d'autorisation relatives au rôle avant de soumettre le travail. Cette option n'est disponible que si vous utilisez la console Amazon S3 pour créer une tâche et que vous configurez la tâche pour utiliser une liste d'objets générée par S3 qui utilise des filtres ou est basée sur une configuration de réplication. Une fois que vous avez soumis la tâche, le rôle IAM est conservé dans votre compte. Vous pouvez ensuite l'utiliser à nouveau pour les tâches suivantes qui exécutent la même opération, ou le supprimer une fois l'exécution de la tâche terminée.

Si vous préférez créer le rôle IAM manuellement, les exemples de politique présentés dans cette section peuvent vous aider à créer le rôle. Pour plus d'informations sur la création et la configuration des rôles, consultez la section [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dans le Guide de l'*utilisateur IAM*. Pour plus d'informations sur les autorisations pour les opérations d'API S3 par type de ressource S3, consultez[Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md). Pour des exemples supplémentaires, reportez-vous [Contrôle des autorisations pour les opérations par lot à l’aide de balises de tâche](batch-ops-job-tags-examples.md) aux sections et[Copie d’objets à l’aide de S3 Batch Operations](batch-ops-examples-copy.md).

Dans vos politiques IAM, vous pouvez également utiliser des clés de condition pour filtrer les autorisations d’accès pour les tâches S3 Batch Operations. Pour obtenir plus d’informations ainsi que la liste complète des clés de condition spécifiques à Amazon S3, consultez [Actions, ressources et clés de condition pour Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) dans la *Référence de l’autorisation de service*.

Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).

La vidéo suivante explique comment configurer les autorisations IAM pour les tâches Batch Operations à l'aide de la console Amazon S3.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/qpwHUrwAiUI//0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/qpwHUrwAiUI/)


### Stratégie d’approbation
<a name="batch-ops-iam-role-policies-trust"></a>

Vous attachez la stratégie d’approbation suivante au rôle IAM afin de permettre au principal de service S3 Batch Operations d’endosser le rôle.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"batchoperations.s3.amazonaws.com"
         },
         "Action":"sts:AssumeRole"
      }
   ]
}
```

------

## Attachement des stratégies d’autorisations
<a name="batch-ops-iam-role-policies-perm"></a>

En fonction du type d’opérations, vous pouvez attacher l’une des stratégies suivantes.

Avant de configurer les autorisations, veuillez noter ce qui suit :
+ Indépendamment de l’opération, Amazon S3 a besoin d’autorisations pour lire l’objet manifeste depuis votre compartiment S3 et, éventuellement, écrire un rapport dans votre compartiment. Dès lors, toutes les stratégies d’autorisations suivantes incluent ces autorisations.
+ Pour les manifestes de rapport Amazon S3 Inventory, S3 Batch Operations nécessite l’autorisation de lire l’objet manifest.json et tous les fichiers de données CSV associés.
+ Des autorisations spécifiques à la version comme `s3:GetObjectVersion` sont requises uniquement quand vous spécifiez l’ID de version des objets.
+ Si vous exécutez S3 Batch Operations sur des objets chiffrés, le rôle IAM doit également avoir accès aux AWS KMS clés utilisées pour les chiffrer.
+ Si vous soumettez un manifeste de rapport d'inventaire chiffré avec AWS KMS, votre politique IAM doit inclure les autorisations relatives à l'objet manifest.json `"kms:Decrypt"` et `"kms:GenerateDataKey"` à tous les fichiers de données CSV associés.
+ Si la tâche Batch Operations génère un manifeste dans un bucket dans lequel les listes de contrôle d'accès (ACLs) sont activées et qui se trouve dans un autre compartiment Compte AWS, vous devez accorder l'`s3:PutObjectAcl`autorisation dans la politique IAM du rôle IAM configuré pour la tâche par lots. Si vous n’incluez pas cette autorisation, le traitement par lot échoue avec l’erreur `Error occurred when preparing manifest: Failed to write manifest`.

### Copie d’objets : PutObject
<a name="batch-ops-put-copy-object-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket",
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Remplacement des balises d’objet : PutObjectTagging
<a name="batch-ops-put-object-tagging-policy"></a>

------
#### [ JSON ]

****  

```
{
  "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"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Suppression du balisage d’un objet : DeleteObjectTagging
<a name="batch-ops-delete-object-tagging-policy"></a>

------
#### [ JSON ]

****  

```
{
    "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:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Remplacement de la liste de contrôle d’accès : PutObjectAcl
<a name="batch-ops-put-object-acl-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Restauration des objets : RestoreObject
<a name="batch-ops-initiate-restore-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
          "s3:RestoreObject"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Application de la rétention du verrouillage d’objet : PutObjectRetention
<a name="batch-ops-put-object-lock-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectRetention",
                "s3:BypassGovernanceRetention"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Applications de la conservation légale du verrouillage d’objet : PutObjectLegalHold
<a name="batch-ops-put-object-legal-hold-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:PutObjectLegalHold",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Réplication d’objets existants : InitiateReplication avec un manifeste généré par S3
<a name="batch-ops-batch-replication-policy"></a>

Optez pour cette politique si vous utilisez et stockez un manifeste généré par S3. Pour plus d’informations sur l’utilisation de Batch Operations pour répliquer des objets existants, consultez [Réplication d’objets existants via la réplication par lot](s3-batch-replication-batch.md).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:PutInventoryConfiguration"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"    
         ]
      }
   ]
}
```

------

### Réplication d’objets existants : InitiateReplication avec un manifeste utilisateur
<a name="batch-ops-batch-replication-policy-user"></a>

Utilisez cette politique si vous utilisez un manifeste fourni par l’utilisateur. Pour plus d’informations sur l’utilisation des opérations par lot pour répliquer des objets existants, consultez [Réplication d’objets existants via la réplication par lot](s3-batch-replication-batch.md).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"    
         ]
      }
   ]
}
```

------

### Calculer la somme de contrôle : Autoriser `GetObject``GetObjectVersion`,`RestoreObject`, et `PutObject`
<a name="batch-ops-compute-object-checksum-policies"></a>

Utilisez cette politique si vous essayez d’utiliser l’opération **Calculer la somme de contrôle** avec S3 Batch Operations. Les autorisations `GetObject`, `GetObjectVersion` et `RestoreObject` sont requises pour obtenir et lire les octets de données stockées. Remplacez les espaces réservés à la saisie utilisateur par vos propres informations. Pour plus d’informations sur l’opération **Calculer la somme de contrôle**, consultez [Vérification de l’intégrité des données d’un objet au repos dans Amazon S3](checking-object-integrity-at-rest.md).

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:RestoreObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket2/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket3/*"
      ]
    }
  ]
}
```

### Mettre à jour le chiffrement des objets
<a name="batch-ops-update-encryption-policies"></a>

Vous devez joindre la politique d'autorisation suivante pour permettre à Batch Operations de lire un manifeste, de mettre à jour le type de chiffrement de vos objets et de rédiger un rapport d'achèvement. Pour utiliser cette politique d'autorisation, remplacez-la *`user input placeholders`* par vos propres informations. Pour plus d'informations sur l'utilisation de cette opération et sur les autorisations que vous devez attribuer au rôle utilisé par votre principal IAM, consultez[Mettre à jour le chiffrement des objets](batch-ops-update-encryption.md).

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        }
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

# Création d’une tâche d’opérations par lot S3
<a name="batch-ops-create-job"></a>

Amazon S3 Batch Operations vous permet d’effectuer des opérations par lot à 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 pour Java.

Lorsque vous créez une tâche S3 Batch Operations, vous pouvez demander un rapport d'achèvement pour toutes les tâches ou uniquement pour les tâches ayant échoué. Tant qu’au moins une tâche a été invoquée avec succès, S3 Batch Operations génère 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](batch-ops-examples-reports.md).

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

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/qpwHUrwAiUI//0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/qpwHUrwAiUI/)


**Topics**
+ [Éléments d’une demande de tâche d’opération par lot](#batch-ops-create-job-request-elements)
+ [Spécification d’un manifeste](#specify-batchjob-manifest)
+ [Génération automatique d’une liste d’objets et enregistrement de celle-ci sous forme de fichier manifeste](#automatically-generate-manifest-file)
+ [Création d’un fichier manifeste](#create-manifest-file)
+ [Utilisation d’un manifeste existant](#specify-existing-manifest-file)
+ [Création d’une tâche](#to-create-batch-ops-job)
+ [Réponses à la tâche](#batch-ops-create-job-response-elements)

## Éléments d’une demande de tâche d’opération par lot
<a name="batch-ops-create-job-request-elements"></a>

Pour créer une tâche S3 Batch Operations, vous devez fournir les informations suivantes :

**Opération**  
Spécifiez l’opération que la tâche S3 Batch Operations 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**  
Un *manifeste* est une liste d’objets Amazon S3 qui contient les clés d’objet sur lesquelles Amazon S3 doit agir. Vous pouvez utiliser les méthodes suivantes pour spécifier un manifeste pour une tâche d’opérations par lot :  
+ Demander à Batch Operations de générer une liste d’objets en fonction des métadonnées que vous spécifiez. Vous pouvez enregistrer cette liste sous forme de fichier manifeste et l’utiliser lors de la création de votre tâche. Cette option est disponible pour tous les types de tâches que vous créez à l'aide de la console Amazon S3, de AWS CLI AWS SDKs, ou de l'API REST Amazon S3.
+ Générer automatiquement une liste d’objets sur la base d’une configuration de réplication existante. Vous pouvez enregistrer cette liste sous forme de fichier manifeste et l’utiliser pour de futures tâches. 
+ Créez manuellement un nouveau fichier manifeste.
+ Utilisez un manifeste existant. 
+ Quelle que soit la manière dont vous spécifiez les objets, le manifeste lui-même doit être stocké dans un compartiment à usage général. Batch Operations ne peut pas importer de manifestes existants à partir de compartiments de répertoires, ni enregistrer les listes d’objets générées comme manifestes dans ces compartiments. 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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).
+ 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](#specify-batchjob-manifest).

**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 (ACLs`PutObjectAcl`)** () une priorité de 3.   
S3 Batch Operations traite 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 Gestion des identités et des accès AWS (IAM) pour exécuter la tâche. Le rôle IAM 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 tâche `CopyObject`, le rôle IAM doit avoir l’autorisation `s3:GetObject` pour le compartiment source et l’autorisation `s3:PutObject` pour le compartiment de destination. Le rôle a également besoin d’autorisations pour lire le manifeste et générer le rapport d’achèvement.  
Le rôle IAM peut être un rôle existant. Ou, si vous utilisez la console Amazon S3 pour créer la tâche, il peut s'agir d'un rôle IAM qu'Amazon S3 crée automatiquement pour vous. Pour de plus amples informations, veuillez consulter [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md).  
Pour plus d'informations sur les rôles IAM, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dans le manuel *IAM Guide de l'utilisateur*. Pour plus d’informations sur les autorisations Amazon S3, consultez [Actions de politique pour Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions).  
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 [Gestion des identités et des accès AWS (IAM) pour S3 Express One Zone](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

**Rapport**  
Indiquez si vous souhaitez que S3 Batch Operations génère un rapport d’achèvement. Si vous demandez un rapport d’achèvement, vous devez également fournir les paramètres du rapport dans cet élément. Les informations suivantes sont requises :  
+ Le compartiment dans lequel vous souhaitez stocker le rapport
**Note**  
Le rapport doit être stocké dans un compartiment à usage général. Batch Operations ne peut pas enregistrer les rapports dans des compartiments de répertoires. Pour plus d’informations, consultez [Compartiments de répertoires](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).
+ 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
Si le champ `CreateJob.Report.ExpectedBucketOwner` est renseigné, il faut que le propriétaire du compartiment du rapport d’achèvement corresponde. Dans le cas contraire, la tâche échoue.  
Les rapports d’achèvement sont toujours chiffrés côté serveur avec des 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 Batch Operations ou pour contrôler comment les utilisateurs interagissent avec les tâches Batch Operations. 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](batch-ops-job-tags.md).

**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
<a name="specify-batchjob-manifest"></a>

Un *manifeste* est une liste d’objets Amazon S3 qui contient les clés d’objet sur lesquelles Amazon S3 doit agir. Vous pouvez utiliser les méthodes suivantes pour spécifier un manifeste pour une tâche d’opérations par lot :
+ Demander à Batch Operations de générer une liste d’objets en fonction des métadonnées que vous spécifiez. Vous pouvez enregistrer cette liste sous forme de manifeste et l’utiliser lors de la création de votre tâche. Cette option est disponible pour tous les types de tâches que vous créez à l'aide de la console Amazon S3, de AWS CLI AWS SDKs, ou de l'API REST Amazon S3.
+ Générer automatiquement une liste d’objets sur la base d’une configuration de réplication existante. Vous pouvez enregistrer cette liste sous forme de manifeste et l’utiliser pour de futures tâches. 
+ Créez manuellement un nouveau fichier manifeste.
+ Utilisez un manifeste existant. 

**Note**  
Amazon S3 Batch Operations ne prend pas en charge la génération de listes d’objets entre régions. 
Quelle que soit la manière dont vous spécifiez les objets, le manifeste lui-même doit être stocké dans un compartiment à usage général. Batch Operations ne peut pas importer de manifestes existants à partir de compartiments de répertoires, ni enregistrer les listes d’objets générées comme manifestes dans ces compartiments. 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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).

## Génération automatique d’une liste d’objets et enregistrement de celle-ci sous forme de fichier manifeste
<a name="automatically-generate-manifest-file"></a>

Vous pouvez demander à Amazon S3 de générer automatiquement une liste d’objets sur la base des métadonnées que vous spécifiez. Vous pouvez enregistrer cette liste sous forme de manifeste et l’utiliser lors de la création de votre tâche. Cette option est disponible pour tous les types de tâches que vous créez à l'aide de la console Amazon S3, de AWS CLI AWS SDKs, ou de l'API REST Amazon S3. 

Pour générer automatiquement une liste d’objets et l’enregistrer sous forme de fichier manifeste, vous devez spécifier les éléments suivants dans le cadre de votre demande de création de tâche :
+ Informations sur le compartiment qui contient vos objets sources, y compris le propriétaire du compartiment et l’Amazon Resource Name (ARN).
+ Informations sur la sortie du manifeste, notamment un indicateur permettant de créer un fichier manifeste, le propriétaire du compartiment de sortie, l’ARN, le préfixe, le format du fichier et le type de chiffrement.
+ Critères facultatifs pour filtrer les objets en fonction de leur date de création, de leur nom de clé, de leur taille, de leur type de chiffrement, de l’ARN de la clé KMS, de la clé de compartiment et de la 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
<a name="manifest-generator-filter-criteria"></a>

Pour filtrer les objets à inclure dans une liste d’objets générée automatiquement, vous pouvez spécifier les critères suivants. Pour plus d’informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html) dans la *Référence d’API Amazon S3*.

**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 **MatchAnySubstring**MatchAnyPrefix****, 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.

**MatchAnyObjectEncryption**  
 Si elle est fournie, la liste d’objets générée enregistrée en tant que fichier manifeste inclut uniquement les objets du compartiment source et le type de chiffrement côté serveur indiqué (SSE-S3, SSE-KMS, SSE-C ou NOT-SSE). Si vous sélectionnez SSE-KMS ou DSSE-KMS, vous pouvez éventuellement filtrer vos résultats en spécifiant un ARN de clé KMS. Si vous sélectionnez SSE-KMS, vous pouvez également filtrer vos résultats en fonction du statut d’activation de la clé de compartiment.   
Pour améliorer les performances de génération de manifestes lors de l'utilisation du `KmsKeyArn` filtre, utilisez-le avec d'autres filtres de métadonnées d'objets`MatchAnyPrefix`, tels que`CreatedAfter`, ou`MatchAnyStorageClass`.

**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 ayant des listes d’objets générées automatiquement enregistrées sous forme de 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](#to-create-batch-ops-job).

## Création d’un fichier manifeste
<a name="create-manifest-file"></a>

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 format CSV. Les contenus du manifeste doivent être codés au format URL. 

Par défaut, Amazon S3 utilise automatiquement le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) pour chiffrer un manifeste chargé dans un compartiment Amazon S3. Les manifestes qui utilisent un 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 au format CSV. 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 par S3 Batch Operations.

**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 format CSV sans version IDs.

```
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 au format CSV qui inclut la version IDs.

```
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
```

## Utilisation d’un manifeste existant
<a name="specify-existing-manifest-file"></a>

Vous pouvez spécifier un manifeste existant pour créer une tâche Batch Operations dans l’un des deux formats suivants :
+ **Rapport d’inventaire Amazon S3** : il doit s’agir d’un rapport d’inventaire Amazon S3 au format CSV. 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](storage-inventory.md). Si le rapport d'inventaire inclut la version IDs, S3 Batch Operations fonctionne sur les versions d'objets spécifiques.
**Note**  
S3 Batch Operations prend en charge des *rapports d’inventaire* CSV chiffrés avec SSE-KMS.
Si vous soumettez un manifeste de rapport d’inventaire chiffré avec SSE-KMS, votre politique IAM doit inclure les autorisations `"kms:Decrypt"` et `"kms:GenerateDataKey"` pour l’objet `manifest.json` et tous les fichiers de données CSV associés.
+ **Fichier CSV** : chaque ligne du fichier doit inclure le nom du compartiment, la clé d’objet et, éventuellement, la version de l’objet. Les clés d’objets doivent être encodées en URL, comme montré 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 de manifeste CSV, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestSpec.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestSpec.html) dans la *Référence des API Amazon Simple Storage Service*.
**Note**  
S3 Batch Operations ne prend pas en charge les *fichiers manifestes* CSV 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, S3 Batch Operations analyse 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.

## Création d’une tâche
<a name="to-create-batch-ops-job"></a>

 Vous pouvez créer des tâches S3 Batch Operations à l'aide de la console Amazon S3 ou de l'API REST Amazon S3. 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](#batch-ops-create-job-request-elements). 

**Conditions préalables**  
Avant de créer une tâche Batch Operations, vérifiez que vous avez configuré les autorisations pertinentes. Pour plus d’informations, consultez [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md).

### Utilisation de la console S3
<a name="batch-ops-create-job-console"></a>

**Pour créer une tâche Batch Operations à l’aide de la console S3**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Opérations par lot** dans le volet de navigation de gauche de la console Amazon S3.

1. Choisissez **Créer une tâche**.

1. Sous **Choisir la région et le champ d'application**, choisissez et visualisez la AWS 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 figurant dans le manifeste.

1. Pour **Portée**, spécifiez la liste d’objets sur laquelle votre tâche Batch Operations portera.

   Sous **Liste d'objets**, vous pouvez choisir de générer un manifeste à l'aide d'une liste d'objets, de générer un manifeste à l'aide d'une configuration de réplication ou d'utiliser un manifeste existant.
   + Si vous choisissez **Générer une liste d’objets**, une liste d’objets est automatiquement générée en fonction de l’emplacement source et des métadonnées que vous spécifiez. Vous pouvez enregistrer cette liste sous forme de manifeste et l’utiliser pour de futures tâches.
**Note**  
Pour générer une liste d'objets, vous devez disposer de cette `s3:PutInventoryConfiguration` autorisation. Le compartiment source doit être un compartiment à usage général.
   + Si vous choisissez **Utiliser un manifeste existant**, vous pouvez importer une liste d’objets d’un manifeste existant. Un manifeste est un rapport S3 Inventory ou un fichier CSV qui répertorie les objets sur lesquels vous souhaitez que Batch Operations agisse.
   + Si vous choisissez **Utiliser une configuration de réplication**, vous pouvez générer automatiquement une liste d’objets sur la base d’une configuration de réplication existante. Vous pouvez enregistrer cette liste sous forme de manifeste et l’utiliser pour de futures tâches. 

      Pour cet exemple, choisissez **Générer une liste d’objets**.

1. Pour **Compte source**, choisissez le compte qui possède les objets source.

1. Sous **Source**, saisissez le chemin d’accès à votre source, par exemple, `s3://` *amzn-s3-demo-bucket*.

1. Sous **Filtres d’objet**, vous pouvez utiliser des filtres pour filtrer sur n’importe quelle partie de la clé d’objet ou sur la fin de la clé d’objet. Les **filtres de clé d’objet** aident à affiner la liste des objets à utiliser dans le manifeste. Pour **Filtres de métadonnées d’objet**, choisissez des filtres pour définir plus précisément l’étendue des objets à inclure dans le manifeste.

1. Sous **Choisir l’opération**, choisissez le type d’opération que vous souhaitez effectuer sur tous les objets répertoriés dans le manifeste. Si votre manifeste fait référence à des objets stockés dans un compartiment de répertoire, utilisez uniquement les opérations de la fonction AWS Lambda de copie ou d'appel. Toutes les autres opérations ne sont pas prises en charge.

1. Après avoir sélectionné un type d’opération, choisissez **Suivant**.

1. Renseignez les informations pour **Configurer les options supplémentaires**.

   Pour **les autorisations**, spécifiez le rôle Gestion des identités et des accès AWS (IAM) que vous souhaitez que la tâche utilise. Il peut s'agir d'un rôle existant ou d'un rôle créé automatiquement par Amazon S3 pour vous. Pour de plus amples informations, veuillez consulter [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md). Amazon S3 peut créer le rôle pour vous si vous avez configuré la tâche pour utiliser une liste d'objets générée par S3 avec des filtres ou une liste d'objets basée sur une configuration de réplication.

1. Lorsque vous avez terminé de configurer les options supplémentaires, choisissez **Next**.

1. Sous **Vérification**, vérifiez les paramètres. Si vous devez apporter des modifications, choisissez **Précédent**. Sinon, vous pouvez choisir **Soumettre le travail**.

### À l'aide du AWS CLI
<a name="batch-ops-example-cli-job-create"></a>

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 tâche Batch Operations `S3PutObjectTagging` en spécifiant un manifeste**

1. Utilisez les commandes suivantes pour créer un rôle Gestion des identités et des accès AWS (IAM), puis créez une politique IAM 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 rôle IAM qui sera utilisé par les opérations par lot. 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"
            }
         ]
      }'
      ```

      Prenez note de l’Amazon Resource Name (ARN) du rôle. Vous aurez besoin de l’ARN lors de la création d’une tâche.

   1. Utilisez l’exemple de commande suivant pour créer une politique IAM avec les autorisations nécessaires et l’attacher au rôle IAM que vous avez créé à l’étape précédente. Pour plus d’informations sur les autorisations nécessaires, consultez [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md).
**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 [Gestion des identités et des accès AWS (IAM) pour S3 Express One Zone](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

      Pour utiliser cet exemple de commande, remplacez les `user input placeholders` comme suit : 
      + Remplacez `S3BatchJobRole` par le nom de votre rôle IAM. Assurez-vous que ce nom correspond au nom que vous avez utilisé précédemment.
      + Remplacez `PutObjectTaggingBatchJobPolicy` par le nom que vous souhaitez donner à la politique IAM.
      + 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 qui contient le manifeste.
      + Remplacez *`amzn-s3-demo-completion-report-bucket`* par le nom du compartiment dans lequel vous souhaitez que le rapport d’achèvement soit généré. 

      ```
      aws iam put-role-policy \
        --role-name S3BatchJobRole \
        --policy-name PutObjectTaggingBatchJobPolicy \
        --policy-document '{
        "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
        "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/*"
            ]
          }
        ]
      }'
      ```

1. 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. `ETag`Il s'agit ETag de l'`manifest.csv`objet, 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 [https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html) dans la *Référence des commandes de l’AWS CLI *.

   Pour utiliser cet exemple de commande, remplacez `user input placeholders` par vos propres informations. Remplacez *`IAM-role`* par l’ARN du rôle IAM que vous avez créé auparavant. 

   ```
   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 S3 Batch Operations `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 tâche Batch Operations `S3DeleteObjectTagging` en générant un manifeste**

1. Utilisez les commandes suivantes pour créer un rôle Gestion des identités et des accès AWS (IAM), puis créez une politique IAM 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 rôle IAM qui sera utilisé par les opérations par lot. 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"		 	 	 ,		 	 	 TCX5-2025-waiver;,
         "Statement":[
            {
               "Effect":"Allow",
               "Principal":{
                  "Service":"batchoperations.s3.amazonaws.com"
               },
               "Action":"sts:AssumeRole"
            }
         ]
      }'
      ```

      Prenez note de l’Amazon Resource Name (ARN) du rôle. Vous aurez besoin de l’ARN lors de la création d’une tâche.

   1. Utilisez l’exemple de commande suivant pour créer une politique IAM avec les autorisations nécessaires et l’attacher au rôle IAM que vous avez créé à l’étape précédente. Pour plus d’informations sur les autorisations nécessaires, consultez [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md).
**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 [Gestion des identités et des accès AWS (IAM) pour S3 Express One Zone](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

      Pour utiliser cet exemple de commande, remplacez les `user input placeholders` comme suit : 
      + Remplacez `S3BatchJobRole` par le nom de votre rôle IAM. Assurez-vous que ce nom correspond au nom que vous avez utilisé précédemment.
      + Remplacez `DeleteObjectTaggingBatchJobPolicy` par le nom que vous souhaitez donner à la politique IAM.
      + 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 souhaitez que le rapport d’achèvement soit généré. 

      ```
      aws iam put-role-policy \
        --role-name S3BatchJobRole \
        --policy-name DeleteObjectTaggingBatchJobPolicy \
        --policy-document '{
        "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
        "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/*"
            ]
          }
        ]
      }'
      ```

      

1. 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é de la tâche, le rôle IAM et la Région AWS.

   Pour plus d’informations, consultez [https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html) dans la *Référence des commandes de l’AWS CLI *.

   Pour utiliser cet exemple de commande, remplacez `user input placeholders` par vos propres informations. Remplacez *`IAM-role`* par l’ARN du rôle IAM que vous avez créé auparavant. 

   ```
   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.

------

### À l'aide du AWS SDK pour Java
<a name="batch-ops-examples-java-create-job"></a>

Pour créer votre tâche Batch Operations avec le AWS SDK for Java, vous pouvez choisir entre deux approches selon que vous spécifiez un manifeste existant ou que vous générez un manifeste automatiquement :
+ *Spécifier le manifeste existant :* créez une tâche S3 Batch Operations (par exemple, `S3PutObjectTagging`) qui agit sur les objets répertoriés dans un fichier manifeste existant. Cette approche nécessite que vous fournissiez l'emplacement du manifeste et ETag les spécifications de format.
+ *Générer un manifeste automatiquement :* créez une tâche S3 Batch Operations (par exemple, `s3PutObjectCopy`) qui génère automatiquement un manifeste sur la base de vos critères de filtre d’objet, notamment la date de création, le nom de la clé et les contraintes de taille.

Les deux approches utilisent le client S3Control pour configurer les opérations des tâches, les spécifications des manifestes, les rapports de tâches, les rôles IAM et d’autres paramètres des tâches, notamment les exigences de priorité et de confirmation.

Pour des exemples de création de tâches S3 Batch Operations avec le AWS SDK for Java, [consultez la section Créer une tâche par lots pour copier](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) des objets dans *le manuel Amazon S3 API* Reference.

### Utilisation de l'API REST
<a name="batch-ops-examples-rest-create-job"></a>

Vous pouvez utiliser l’API REST pour créer une tâche Batch Operations. Pour plus d’informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) dans la *Référence d’API Amazon Simple Storage Service*. 

## Réponses à la tâche
<a name="batch-ops-create-job-response-elements"></a>

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 Batch Operations et surveiller son statut.

Lorsque vous créez une tâche via l'API AWS CLI AWS SDKs, ou REST, 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 Batch Operations commence à la traiter. Si une tâche reste suspendue pendant plus de 30 jours, elle échouera.

# Opérations prises en charge par les opérations par lot S3
<a name="batch-ops-operations"></a>

Vous pouvez utiliser les opérations par lot S3 pour effectuer des opérations par lot à grande échelle sur des objets Amazon S3. Les opérations par lot S3 peuvent effectuer une seule opération sur les listes d’objets Amazon S3 que vous spécifiez. Une seule tâche peut effectuer une opération spécifiée sur des milliards d’objets contenant des exaoctets de données. Amazon S3 suit la progression, envoie des notifications et stocke un rapport de fin d’opérations détaillé sur toutes les actions, offrant ainsi une expérience sans serveur entièrement gérée et contrôlable. Vous pouvez utiliser S3 Batch Operations via la console Amazon S3 ou AWS SDKs l'API REST Amazon S3. AWS CLI

S3 Batch Operations prend en charge les opérations suivantes :

# Copie d’objets
<a name="batch-ops-copy-object"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. L’opération par lot **Copier** copie chaque objet spécifié dans le manifeste. Vous pouvez copier des objets dans un compartiment de la même région Région AWS ou dans un compartiment d'une autre région. S3 Batch Operations supporte la plupart des options disponibles via Amazon S3 pour copier des objets. Ces options comprennent la définition des métadonnées d’objet, la spécification d’autorisations et la modification de la classe de stockage d’un objet. 

Vous pouvez utiliser l’opération **Copier** pour copier des objets non chiffrés et les réécrire dans le même compartiment en tant qu’objets chiffrés. Pour plus d’informations, consultez [Chiffrement d’objets avec S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

Lorsque vous copiez des objets, vous pouvez modifier l’algorithme de contrôle utilisé pour calculer le total de contrôle de l’objet. Si les objets n’ont pas de total de contrôle calculé, vous pouvez également en ajouter un en spécifiant l’algorithme de total de contrôle à utiliser pour Amazon S3. Pour de plus amples informations, veuillez consulter [Vérification de l’intégrité des objets dans Amazon S3](checking-object-integrity.md).

Pour plus d’informations sur la copie d’objets dans Amazon S3, ainsi que sur les paramètres obligatoires et facultatifs, consultez [Copie, déplacement et changement de nom des objets](copy-object.md) dans ce guide et [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) dans la *Référence d’API Amazon Simple Storage Service*.

## Restrictions et limitations
<a name="batch-ops-copy-object-restrictions"></a>

Lorsque vous utilisez l’opération Batch Operations **Copier**, les restrictions et limites suivantes s’appliquent :
+ Tous les objets sources doivent se trouver dans un même compartiment.
+ Tous les objets de destination doivent se trouver dans un même compartiment.
+ Vous devez disposer d’autorisations de lecture pour le compartiment source et d’autorisations d’écriture pour le compartiment de destination.
+ La taille des objets à copier peut aller jusqu’à 5 Go.
+ Si vous essayez de copier des objets depuis les classes S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive dans la classe de stockage S3 Standard, vous devez d’abord restaurer ces objets. Pour de plus amples informations, veuillez consulter [Restauration d’un objet archivé](restoring-objects.md).
+ Vous devez créer les tâches Batch Operations **Copier** dans la région de destination, à savoir la région dans laquelle vous prévoyez de copier les objets.
+ Toutes les `CopyObject` options sont prises en charge, à l'exception des vérifications conditionnelles sur les balises d'entité (ETags) et du chiffrement côté serveur avec des clés de chiffrement fournies par le client (SSE-C).
+ Si le compartiment de destination n’est associé à aucune version, vous écraserez tous les objets dont le nom de clé est le même.
+ Les objets ne sont pas nécessairement copiés dans le même ordre que celui dans lequel ils apparaissent dans le manifeste. Pour les compartiments pour lesquels la gestion des versions est activée, si la préservation de l’ordre des versions actuelles ou anciennes est importante, copiez d’abord toutes les anciennes versions. Ensuite, une fois la première tâche terminée, copiez les versions actuelles dans une tâche ultérieure. 
+ La copie d’objets vers la classe de stockage à redondance réduite (RRS) n’est pas prise en charge.
+ Une seule tâche Copier de Batch Operations peut prendre en charge un manifeste contenant jusqu’à 20 milliards d’objets.

# Copie d’objets à l’aide de S3 Batch Operations
<a name="batch-ops-examples-copy"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. Vous pouvez utiliser la fonctionnalité d’opérations par lot S3 pour créer une **tâche de copie** (`CopyObject`) dans le but de copier des objets dans un même compte ou dans un autre compte de destination. 

Les sections suivantes montrent comment stocker et utiliser un manifeste qui se trouve dans un compte différent. Le premier exemple présente comment utiliser l’inventaire Amazon S3 pour remettre le rapport d’inventaire au compte de destination afin de l’utiliser lors de la création de la tâche. Le deuxième exemple montre comment utiliser un manifeste de valeurs séparées par des virgules (CSV) dans le compte source ou de destination. Le troisième exemple montre comment utiliser l’opération **Copier** pour activer les clés de compartiment S3 pour des objets existants qui ont été chiffrés à l’aide du chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS).

**Topics**
+ [Utilisation d'un rapport d'inventaire pour copier des objets Comptes AWS](specify-batchjob-manifest-xaccount-inventory.md)
+ [Utilisation d'un manifeste CSV pour copier des objets Comptes AWS](specify-batchjob-manifest-xaccount-csv.md)
+ [Utilisation de Batch Operations pour activer les clés de compartiment S3 pour SSE-KMS](batch-ops-copy-example-bucket-key.md)

# Utilisation d'un rapport d'inventaire pour copier des objets Comptes AWS
<a name="specify-batchjob-manifest-xaccount-inventory"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. Vous pouvez utiliser la fonctionnalité d’opérations par lot S3 pour créer une **tâche de copie** (`CopyObject`) dans le but de copier des objets dans un même compte ou dans un autre compte de destination.

Vous pouvez utiliser Amazon S3 Inventory pour créer un rapport d’inventaire, et utiliser ce rapport pour créer une liste, ou un manifeste, des objets à copier avec S3 Batch Operations. Pour de plus amples informations sur l’utilisation d’un manifeste CSV dans le compte source ou de destination, consultez [Utilisation d'un manifeste CSV pour copier des objets Comptes AWS](specify-batchjob-manifest-xaccount-csv.md).

L’inventaire Amazon S3 génère des inventaires des objets dans un compartiment. La liste générée est publiée dans un fichier de sortie. Le compartiment qui est inventorié est appelé le compartiment source et le compartiment où le fichier de rapport d’inventaire est stocké est appelé le compartiment de destination. 

Le rapport d'inventaire Amazon S3 peut être configuré pour être envoyé à un autre Compte AWS. Cela permet à S3 Batch Operations de lire le rapport d’inventaire lorsque la tâche a été créée dans le compte de destination.

Pour de plus amples informations sur les compartiments sources et de destination de l’inventaire Amazon S3, consultez [Compartiments source et de destination](storage-inventory.md#storage-inventory-buckets).

Le moyen le plus simple de configurer un inventaire est d'utiliser la console Amazon S3, mais vous pouvez également utiliser l'API REST Amazon S3, AWS Command Line Interface (AWS CLI) ou AWS SDKs.

La procédure de console suivante contient les étapes de haut niveau permettant de configurer des autorisations pour une tâche S3 Batch Operations. Dans cette procédure, vous copiez des objets d’un compte source vers un compte de destination, avec le rapport d’inventaire stocké dans le compte de destination.

**Pour configurer Amazon S3 Inventory pour des compartiments source et de destination détenus par des comptes différents**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Définissez (ou créez) un compartiment de manifeste de destination dans lequel stocker le rapport d’inventaire. Dans cette procédure, le *compte de destination* est le compte qui possède à la fois le compartiment de manifeste de destination et le compartiment où les objets sont copiés.

1. Configurez un rapport d’inventaire pour un compartiment source. Pour plus d’informations sur l’utilisation de la console pour configurer un inventaire ou sur le chiffrement d’un fichier de liste d’inventaire, consultez [Configuration d’Amazon S3 Inventory](configure-inventory.md). 

   Lorsque vous configurez un rapport d’inventaire, vous spécifiez le compartiment de destination dans lequel vous souhaitez stocker la liste. Le rapport d’inventaire pour le compartiment source est publié dans le compartiment de destination. Dans cette procédure, le *compte source* est le compte qui possède le compartiment source.

   Choisissez **CSV** comme format de sortie.

   Lorsque vous saisissez des informations pour le compartiment de destination, choisissez **Compartiments d’un autre compte**. Ensuite, saisissez le nom du compartiment de manifeste de destination. Éventuellement, vous pouvez saisir l’ID du compte de destination.

   Une fois que la configuration d’inventaire a été enregistrée, la console affiche un message similaire au message suivant : 

   Amazon S3 n’a pas pu créer une stratégie sur le compartiment de destination. Demandez au propriétaire du compartiment de destination d’ajouter la politique de compartiment suivante pour permettre à Amazon S3 d’ajouter des données dans ce compartiment.

   Ensuite, la console affiche une politique de compartiment que vous pouvez utiliser pour le compartiment de destination.

1. Copiez la politique de compartiment de destination qui apparaît sur la console.

1. Dans le compte de destination, ajoutez la politique de compartiment copiée dans le compartiment de manifeste de destination où le rapport d’inventaire est stocké.

1. Créez un rôle dans le compte de destination basé sur la stratégie d’approbation S3 Batch Operations. Pour plus d’informations sur la politique d’approbation, consultez [Stratégie d’approbation](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust).

   Pour plus d’informations sur la création d’un rôle, consultez [Création d’un rôle pour la délégation d’autorisations à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*.

   Saisissez un nom pour le rôle (l’exemple de rôle suivant utilise le nom *`BatchOperationsDestinationRoleCOPY`*). Choisissez le service **S3**, puis choisissez le cas d’utilisation **Opérations par lot S3**, lequel appliquera la politique d’approbation au rôle. 

   Ensuite, choisissez **Create policy (Créer une stratégie)** pour attacher la stratégie suivante au rôle. Pour utiliser cette stratégie, remplacez *`user input placeholders`* par vos propres informations. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   Le rôle utilise la stratégie pour autoriser `batchoperations.s3.amazonaws.com` à lire le manifeste dans le compartiment de destination. Il accorde également des autorisations aux `GET` objets, aux listes de contrôle d'accès (ACLs), aux balises et aux versions du compartiment d'objets source. Il accorde également des autorisations aux `PUT` objets ACLs, aux balises et aux versions dans le compartiment d'objets de destination.

1. Dans le compte source, créez une politique de compartiment pour le compartiment source qui accorde au rôle que vous avez créé à l'étape précédente des autorisations sur les `GET` objets ACLs, les balises et les versions du compartiment source. Cette étape permet à S3 Batch Operations de récupérer des objets du compartiment source au moyen du rôle approuvé.

   Vous trouverez, ci-après, un exemple de politique de compartiment pour le compte source. Pour utiliser cette stratégie, remplacez *`user input placeholders`* par vos propres informations.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowBatchOperationsSourceObjectCOPY",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
               },
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetObjectAcl",
                   "s3:GetObjectTagging",
                   "s3:GetObjectVersionAcl",
                   "s3:GetObjectVersionTagging"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
           }
       ]
   }
   ```

------

1. Une fois le rapport d’inventaire disponible, créez une tâche S3 Batch Operations **Copier** (`CopyObject`) dans le compte de destination, en choisissant le rapport d’inventaire dans le compartiment du manifeste de destination. Vous aurez besoin de l’ARN du rôle IAM que vous avez créé dans le compte de destination.

   Pour obtenir des informations générales sur la création d’une tâche, consultez [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md).

   Pour plus d’informations sur la création d’une tâche à l’aide de la console, consultez [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md).

# Utilisation d'un manifeste CSV pour copier des objets Comptes AWS
<a name="specify-batchjob-manifest-xaccount-csv"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. Vous pouvez utiliser la fonctionnalité d’opérations par lot S3 pour créer une **tâche de copie** (`CopyObject`) dans le but de copier des objets dans un même compte ou dans un autre compte de destination.

Vous pouvez utiliser un manifeste CSV stocké dans le compte source pour copier des objets dans des Comptes AWS avec S3 Batch Operations. Pour utiliser un rapport S3 Inventory en tant que manifeste, consultez [Utilisation d'un rapport d'inventaire pour copier des objets Comptes AWS](specify-batchjob-manifest-xaccount-inventory.md).

Pour obtenir un exemple du format CSV pour les fichiers manifestes, consultez [Création d’un fichier manifeste](batch-ops-create-job.md#create-manifest-file).

La procédure suivante montre comment configurer des autorisations lors de l’utilisation d’une tâche S3 Batch Operations pour copier des objets d’un compte source vers un compte de destination avec un fichier manifeste CSV stocké dans le compte source.

**Pour utiliser un manifeste CSV pour copier des objets Comptes AWS**

1. Créez un rôle Gestion des identités et des accès AWS (IAM) dans le compte de destination basé sur la politique de confiance de S3 Batch Operations. Dans cette procédure, le *compte de destination* est le compte dans lequel les objets sont copiés.

   Pour de plus amples informations sur la stratégie d’approbation, consultez [Stratégie d’approbation](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust).

   Pour plus d’informations sur la création d’un rôle, consultez [Création d’un rôle pour la délégation d’autorisations à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*.

   Si vous créez le rôle au moyen de la console, saisissez un nom pour ce rôle (l’exemple de rôle suivant utilise le nom `BatchOperationsDestinationRoleCOPY`). Choisissez le service **S3**, puis choisissez le cas d’utilisation **Opérations par lot S3**, lequel appliquera la politique d’approbation au rôle.

   Ensuite, choisissez **Create policy (Créer une stratégie)** pour attacher la stratégie suivante au rôle. Pour utiliser cette stratégie, remplacez *`user input placeholders`* par vos propres informations.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   Au moyen de la stratégie, le rôle octroie à `batchoperations.s3.amazonaws.com` l’autorisation de lire le manifeste dans le compartiment manifeste source. Il accorde des autorisations aux `GET` objets, aux listes de contrôle d'accès (ACLs), aux balises et aux versions du compartiment d'objets source. Il accorde également des autorisations aux `PUT` objets ACLs, aux balises et aux versions dans le compartiment d'objets de destination.

1. Dans le compte source, créez une politique pour le compartiment, qui contient le manifeste afin d’octroyer au rôle créé à l’étape précédente l’autorisation d’obtenir (`GET`) des objets et des versions dans le compartiment manifeste source.

   Cette étape permet à S3 Batch Operations de lire le manifeste au moyen du rôle approuvé. Appliquez la politique de compartiment au compartiment qui contient le manifeste.

   Vous trouverez, ci-après, un exemple de politique de compartiment à appliquer au compartiment manifeste source. Pour utiliser cette stratégie, remplacez *`user input placeholders`* par vos propres informations.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceManifestRead",
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::111122223333:user/ConsoleUserCreatingJob",
             "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
           ]
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
       }
     ]
   }
   ```

------

   Cette stratégie octroie également à un utilisateur de la console qui est en train de créer une tâche dans le compte de destination les mêmes autorisations dans le compartiment manifeste source au moyen de la même politique de compartiment.

1. Dans le compte source, créez une politique de compartiment pour le compartiment source qui accorde au rôle dans lequel vous avez créé des autorisations sur les `GET` objets ACLs, les balises et les versions du compartiment d'objets source. S3 Batch Operations peut ensuite récupérer des objets du compartiment source via le rôle approuvé.

   Vous trouverez, ci-après, un exemple de politique de compartiment pour le compartiment qui contient les objets source. Pour utiliser cette stratégie, remplacez *`user input placeholders`* par vos propres informations.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceObjectCOPY",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
       }
     ]
   }
   ```

------

1. Créez une tâche S3 Batch Operations dans le compte de destination. Vous avez besoin de l’ARN (Amazon Resource Name) pour le rôle que vous avez créé dans le compte de destination. Pour de plus amples informations sur la création d’une tâche, consultez [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md).

# Utilisation de Batch Operations pour activer les clés de compartiment S3 pour SSE-KMS
<a name="batch-ops-copy-example-bucket-key"></a>

Les clés de compartiment S3 réduisent le coût du chiffrement côté serveur avec AWS Key Management Service (AWS KMS) (SSE-KMS) en diminuant le trafic de requêtes d'Amazon S3 vers. AWS KMS Pour plus d’informations, consultez [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md) et [Configuration de votre compartiment de sorte qu’il utilise une clé de compartiment S3 avec SSE-KMS pour de nouveaux objets](configuring-bucket-key.md). Lorsque vous effectuez une `CopyObject` opération à l'aide de l'API REST AWS SDKs, ou AWS CLI, vous pouvez activer ou désactiver une clé de compartiment S3 au niveau de l'objet en ajoutant l'en-tête de `x-amz-server-side-encryption-bucket-key-enabled` demande avec une `false` valeur `true` ou. 

Lorsque vous configurez une clé de compartiment S3 pour un objet à l’aide d’une opération `CopyObject`, Amazon S3 met à jour uniquement les paramètres de cet objet. Les paramètres de clé de compartiment S3 pour le compartiment de destination ne changent pas. Si vous soumettez une demande `CopyObject` pour un objet chiffré par AWS KMS dans un compartiment avec les clés de compartiment S3 activées, votre opération au niveau de l’objet utilisera automatiquement cette option à moins que vous ne désactiviez les clés dans l’en-tête de la demande. Si vous ne spécifiez pas de clé de compartiment S3 pour votre objet, Amazon S3 applique les paramètres de clé de compartiment S3 du compartiment de destination à l’objet.

Pour chiffrer vos objets Amazon S3 existants, vous pouvez utiliser S3 Batch Operations. Vous pouvez utiliser l’**opération de copie** de Batch Operations pour copier des objets non chiffrés et les réécrire dans le même compartiment en tant qu’objets chiffrés. Pour plus d'informations, consultez la section [Chiffrement d'objets avec Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) sur le blog AWS de stockage.

Dans l’exemple suivant, vous utilisez la tâche **Copier** de Batch Operations pour activer les clés de compartiment S3 sur des objets existants. Pour de plus amples informations, veuillez consulter [Configuration d’une clé de compartiment S3 au niveau d’un objet](configuring-bucket-key-object.md).

**Topics**
+ [Considérations pour l’utilisation d’opérations pat lot S3 pour chiffrer des objets avec des clés de compartiment S3](#bucket-key-ex-things-to-note)
+ [Conditions préalables](#bucket-key-ex-prerequisites)
+ [Étape 1 : obtenir votre liste d’objets à l’aide d’Amazon S3 Inventory](#bucket-key-ex-get-list-of-objects)
+ [Étape 2 : filtrer votre liste d’objets avec S3 Select](#bucket-key-ex-filter-object-list-with-s3-select)
+ [Étape 3 : configurer et exécuter votre tâche S3 Batch Operations](#bucket-key-ex-setup-and-run-job)

## Considérations pour l’utilisation d’opérations pat lot S3 pour chiffrer des objets avec des clés de compartiment S3
<a name="bucket-key-ex-things-to-note"></a>

Lorsque vous utilisez S3 Batch Operations pour chiffrer des objets avec les clés de compartiment S3 activées, tenez compte des points suivants :
+ Vous serez facturé pour les tâches, objets et demandes S3 Batch Operations en plus des frais associés à ce que S3 Batch Operations accomplit en votre nom, dont les transferts de données, les demandes, ainsi que d’autres frais. Pour de plus amples informations, veuillez consulter [Tarification Amazon S3](https://aws.amazon.com/s3/pricing).
+ Si vous utilisez un compartiment avec gestion des versions, chaque tâche S3 Batch Operations effectuée crée de nouvelles versions chiffrées de vos objets. Elle conserve également les versions précédentes sans clé de compartiment S3 configurée. Pour supprimer les anciennes versions, configurez une stratégie d’expiration du cycle de vie S3 pour les versions non actuelles, comme décrit dans [Éléments de la configuration du cycle de vie](intro-lifecycle-rules.md).
+ L’opération de copie crée de nouveaux objets avec de nouvelles dates de création, ce qui peut affecter des actions du cycle de vie telles que l’archivage. Si vous copiez tous les objets dans votre compartiment, toutes les nouvelles copies ont des dates de création identiques ou similaires. Pour mieux identifier ces objets et créer différentes règles de cycle de vie pour différents sous-ensembles de données, envisagez d’utiliser des étiquettes d’objet. 

## Conditions préalables
<a name="bucket-key-ex-prerequisites"></a>

Avant de configurer les objets de sorte qu’ils utilisent une clé de compartiment S3, consultez [Modifications à prendre en compte avant d’activer une clé de compartiment S3](bucket-key.md#bucket-key-changes). 

Pour utiliser cet exemple, vous devez disposer d'un compartiment S3 Compte AWS et d'au moins un compartiment S3 pour contenir vos fichiers de travail et vos résultats chiffrés. Il se peut également que vous trouviez des informations utiles dans une grande partie de la documentation existante sur S3 Batch Operations, dont les rubriques suivantes :
+ [Principes de base de S3 Batch Operations](batch-ops.md#batch-ops-basics)
+ [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md)
+ [Opérations prises en charge par les opérations par lot S3](batch-ops-operations.md)
+ [Gestion des tâches d’opérations par lot S3](batch-ops-managing-jobs.md)

## Étape 1 : obtenir votre liste d’objets à l’aide d’Amazon S3 Inventory
<a name="bucket-key-ex-get-list-of-objects"></a>

Pour commencer, identifiez le compartiment S3 contenant les objets à chiffrer, et obtenez la liste de son contenu. Un rapport Amazon S3 Inventory est le moyen le plus pratique et le plus abordable de le faire. Le rapport fournit la liste des objets dans un compartiment ainsi que les métadonnées associées. Dans cette étape, le compartiment source fait référence au compartiment inventorié, et le compartiment de destination au compartiment dans lequel vous stockez le fichier de rapport d’inventaire. Pour de plus amples informations sur les compartiments sources et de destination de l’inventaire Amazon S3, consultez [Catalogage et analyse de vos données avec S3 Inventory](storage-inventory.md).

La manière la plus simple de configurer un inventaire consiste à utiliser la AWS Management Console. Mais vous pouvez également utiliser l'API REST, AWS Command Line Interface (AWS CLI) ou AWS SDKs. Avant de suivre ces étapes, assurez-vous de vous connecter à la console et d'ouvrir la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/). Si vous rencontrez des erreurs de refus d’autorisation, ajoutez une politique de compartiment à votre compartiment de destination. Pour de plus amples informations, veuillez consulter [Accorder des autorisations pour S3 Inventory et les analyses S3.](example-bucket-policies.md#example-bucket-policies-s3-inventory-1).

**Pour obtenir une liste d’objets à l’aide de S3 Inventory**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Compartiments** et sélectionnez un compartiment contenant des objets à chiffrer.

1. Sous l’onglet **Management (Gestion)**, accédez à la section **Inventory configurations (Configurations d’inventaire)**, puis choisissez **Create inventory configuration (Créer une configuration d’inventaire)**.

1. Donnez un nom à votre nouvel inventaire, entrez le nom du compartiment S3 de destination, et créez éventuellement un préfixe de destination pour Amazon S3 afin d’affecter des objets dans ce compartiment.

1. Pour **Output format (Format de sortie)**, choisissez **CSV**.

1. (Facultatif) Dans la section **Champs supplémentaires - *facultatif***, choisissez **Chiffrement** et les autres champs de rapport qui vous intéressent. Définissez la fréquence de livraison des rapports sur **Daily (Quotidienne)** afin que le premier rapport soit livré à votre compartiment plus tôt.

1. Choisissez **Create (Créer)** pour enregistrer votre configuration.

Amazon S3 peut prendre jusqu’à 48 heures pour livrer le premier rapport. Guettez donc l’arrivée de votre premier rapport. Après avoir reçu votre premier rapport, passez à la section suivante pour filtrer le contenu de votre rapport S3 Inventory. Si vous ne souhaitez plus recevoir de rapports d’inventaire pour ce compartiment, supprimez votre configuration S3 Inventory. Autrement, S3 continue de livrer les rapports à une fréquence quotidienne ou hebdomadaire.

Une liste d'inventaire n'est pas une point-in-time vue unique de tous les objets. Une liste d’inventaire est un instantané évolutif des éléments d’un compartiment, qui sont finalement cohérents (par exemple, il se peut que la liste n’inclue pas certains objets récemment ajoutés ou supprimés). La combinaison de S3 Inventory et de S3 Batch Operations fonctionne de façon optimale lorsque vous travaillez avec des objets statiques, ou avec un ensemble d’objets que vous avez créé au moins deux jours auparavant. Pour travailler avec des données plus récentes, utilisez l’opération d’API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) (compartiment `GET`) pour établir manuellement votre liste d’objets. Si nécessaire, répétez le processus pendant quelques jours ou jusqu’à ce que le rapport d’inventaire affiche le statut souhaité pour tous les objets.

## Étape 2 : filtrer votre liste d’objets avec S3 Select
<a name="bucket-key-ex-filter-object-list-with-s3-select"></a>

Après avoir reçu votre rapport S3 Inventory, vous pouvez filtrer son contenu pour répertorier uniquement les objets qui ne sont pas chiffrés avec des clés de compartiment S3 activées. Si vous voulez que tous les objets de votre compartiment soient chiffrés avec des clés de compartiment S3, vous pouvez ignorer cette étape. Toutefois, le filtrage du rapport S3 Inventory à ce stade vous permet d’économiser du temps et de l’argent en lien avec le re-chiffrement des objets que vous avez chiffrés précédemment avec les clés de compartiment S3 activées.

Bien que les étapes suivantes montrent comment filtrer le rapport à l’aide d’[Amazon S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/), vous pouvez également utiliser [Amazon Athena](https://aws.amazon.com/athena). Pour décider de l’outil à utiliser, consultez le fichier `manifest.json` de votre rapport S3 Inventory. Ce fichier répertorie le nombre de fichiers de données associés à ce rapport. Si ce nombre est conséquent, utilisez le service Amazon Athena, car il s’exécute sur plusieurs objets S3, tandis que S3 Select opère sur un objet à la fois. Pour plus d'informations sur l'utilisation conjointe d'Amazon S3 et Athena, consultez [Interrogation d’Amazon S3 Inventory avec Amazon Athena](storage-inventory-athena-query.md) « Utilisation d'Athena » dans le billet de blog sur le AWS stockage [Encrypting objects with Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations) Batch Operations.

**Pour filtrer votre rapport S3 Inventory avec S3 Select**

1. Ouvrez le fichier `manifest.json` à partir de votre rapport d’inventaire et consultez la section `fileSchema` du fichier JSON. Celle-ci informe la requête que vous exécutez sur les données. 

   Le JSON suivant est un exemple de fichier `manifest.json` pour un inventaire au format CSV dans un compartiment pour lequel la gestion des versions est activée. L’aspect de votre manifeste peut varier selon la façon dont vous avez configuré votre rapport d’inventaire.

   ```
     {
       "sourceBucket": "batchoperationsdemo",
       "destinationBucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
       "version": "2021-05-22",
       "creationTimestamp": "1558656000000",
       "fileFormat": "CSV",
       "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, BucketKeyStatus",
       "files": [
         {
           "key": "demoinv/batchoperationsdemo/DemoInventory/data/009a40e4-f053-4c16-8c75-6100f8892202.csv.gz",
           "size": 72691,
           "MD5checksum": "c24c831717a099f0ebe4a9d1c5d3935c"
         }
       ]
     }
   ```

   Si la gestion des versions n’est pas activée sur le compartiment, ou si vous choisissez d’exécuter le rapport pour les dernières versions, le `fileSchema` est `Bucket`, `Key` et `BucketKeyStatus`. 

   Si la gestion des versions *est* activée, selon la façon dont vous avez configuré le rapport d’inventaire, le `fileSchema` peut inclure les éléments suivants : `Bucket`, `Key`, `VersionId`, `IsLatest`, `IsDeleteMarker` et `BucketKeyStatus`. Soyez donc attentif aux colonnes 1, 2, 3 et 6 lorsque vous exécutez votre requête. 

   Les opérations par lot S3 ont besoin du compartiment, de la clé et de l’ID de version entrés pour effectuer la tâche, en plus du champ sur lequel effectuer la recherche, qui est `BucketKeyStatus`. Vous n’avez pas besoin du champ `VersionID`, mais il est utile de spécifier `VersionID`lorsque vous opérez sur un compartiment pour lequel la gestion des versions est activée. Pour de plus amples informations, veuillez consulter [Utiliser des objets dans un compartiment activé pour la gestion des versions](manage-objects-versioned-bucket.md).

1. Recherchez les fichiers de données pour le rapport d’inventaire. L’objet `manifest.json` répertorie les fichiers de données sous **files**.

1. Après avoir localisé et sélectionné le fichier de données dans la console S3, choisissez **Actions**, puis **Query with S3 Select (Requête avec S3 Select)**.

1. Conservez la sélection des champs prédéfinis **CSV**,**Comma**, et **GZIP**, puis choisissez **Next (Suivant)**.

1. Pour réviser le format de votre rapport d’inventaire avant de poursuivre, choisissez **Afficher l’aperçu du fichier**.

1. Saisissez les colonnes à référencer dans la zone d’expression SQL, puis sélectionnez **Run SQL** (Exécuter SQL). L’expression suivante renvoie les colonnes 1 à 3 pour tous les objets sans clé de compartiment S3 configurée.

   `select s._1, s._2, s._3 from s3object s where s._6 = 'DISABLED'`

   Voici quelques exemples de résultats.

   ```
         batchoperationsdemo,0100059%7Ethumb.jpg,lsrtIxksLu0R0ZkYPL.LhgD5caTYn6vu
         batchoperationsdemo,0100074%7Ethumb.jpg,sd2M60g6Fdazoi6D5kNARIE7KzUibmHR
         batchoperationsdemo,0100075%7Ethumb.jpg,TLYESLnl1mXD5c4BwiOIinqFrktddkoL
         batchoperationsdemo,0200147%7Ethumb.jpg,amufzfMi_fEw0Rs99rxR_HrDFlE.l3Y0
         batchoperationsdemo,0301420%7Ethumb.jpg,9qGU2SEscL.C.c_sK89trmXYIwooABSh
         batchoperationsdemo,0401524%7Ethumb.jpg,ORnEWNuB1QhHrrYAGFsZhbyvEYJ3DUor
         batchoperationsdemo,200907200065HQ%7Ethumb.jpg,d8LgvIVjbDR5mUVwW6pu9ahTfReyn5V4
         batchoperationsdemo,200907200076HQ%7Ethumb.jpg,XUT25d7.gK40u_GmnupdaZg3BVx2jN40
         batchoperationsdemo,201103190002HQ%7Ethumb.jpg,z.2sVRh0myqVi0BuIrngWlsRPQdb7qOS
   ```

1. Téléchargez les résultats, enregistrez-les au format CSV, et chargez-les sur Amazon S3 en tant que liste d’objets pour la tâche S3 Batch Operations.

1. Si vous avez plusieurs fichiers manifeste, exécutez une **Requête avec S3 Select** sur ceux-ci. En fonction de la taille des résultats, vous pouvez combiner les listes et exécuter un seule tâche S3 Batch Operations, ou exécuter chaque liste en tant que tâche distincte. Pour décider du nombre de tâches à exécuter, considérez le [tarif](https://aws.amazon.com/s3/pricing/) d’exécution de chaque tâche S3 Batch Operations.

## Étape 3 : configurer et exécuter votre tâche S3 Batch Operations
<a name="bucket-key-ex-setup-and-run-job"></a>

À présent que vos listes CSV d’objets S3 sont filtrées, vous pouvez commencer la tâche S3 Batch Operations pour chiffrer les objets avec les clés de compartiment S3 activées.

Une *tâche* fait référence collectivement à la liste (manifeste) d’objets fournis, à l’opération effectuée et aux paramètres spécifiés. La manière la plus simple de chiffrer cet ensemble d’objets avec les clés de compartiment S3 activées consiste à utiliser l’opération **Copier** en spécifiant le même préfixe de destination que celui des objets répertoriés dans le manifeste. Dans un compartiment sans gestion des versions, cette opération remplace les objets existants. Dans un compartiment pour lequel la gestion des versions est activée, cette opération crée une version chiffrée plus récente des objets.

Dans le cadre de la copie des objets, spécifiez qu’Amazon S3 doit chiffrer les objets avec le chiffrement SSE-KMS. Cette tâche copie les objets. À la fin, tous vos objets présenteront donc une date de création mise à jour, quelle que soit la date à laquelle vous les avez initialement ajoutés à Amazon S3. Dans le cadre de la tâche S3 Batch Operations, spécifiez également les autres propriétés de votre ensemble d’objets, y compris les étiquettes d’objet et la classe de stockage.

**Topics**
+ [Configurer votre politique IAM](#bucket-key-ex-set-up-iam-policy)
+ [Configurer votre rôle IAM d’opérations par lot](#bucket-key-ex-set-up-iam-role)
+ [Activation des clés de compartiment S3 pour un compartiment existant](#bucket-key-ex-enable-s3-bucket-key-on-a-bucket)
+ [Créer votre tâche Batch Operations](#bucket-key-ex-create-job)
+ [Exécuter votre tâche d’opérations par lot](#bucket-key-ex-run-job)

### Configurer votre politique IAM
<a name="bucket-key-ex-set-up-iam-policy"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation de gauche, choisissez **Politique**, puis **Créer une politique**.

1. Choisissez l’onglet **JSON**. Choisissez **Modifier la stratégie**, puis ajoutez l’exemple de politique IAM qui apparaît dans le bloc de code suivant. 

   Après avoir copié l’exemple de politique dans votre [console IAM](https://console.aws.amazon.com/iam/), effectuez les remplacements suivants :

   1. Remplacez `amzn-s3-demo-source-bucket` par le nom du compartiment source à partir duquel copier les objets.

   1. Remplacez `amzn-s3-demo-destination-bucket` par le nom du compartiment de destination dans lequel copier les objets.

   1. Remplacez `amzn-s3-demo-manifest-bucket/manifest-key` par le nom de votre objet manifeste.

   1. Remplacez `amzn-s3-demo-completion-report-bucket` par le nom du compartiment dans lequel vous voulez enregistrer les rapports de fin de tâche.

------
#### [ JSON ]

****  

   ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Sid": "CopyObjectsToEncrypt",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject",
             "s3:PutObjectTagging",
             "s3:PutObjectAcl",
             "s3:PutObjectVersionTagging",
             "s3:PutObjectVersionAcl",
             "s3:GetObject",
             "s3:GetObjectAcl",
             "s3:GetObjectTagging",
             "s3:GetObjectVersion",
             "s3:GetObjectVersionAcl",
             "s3:GetObjectVersionTagging"
           ],
           "Resource": [
             "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
             "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
           ]
         },
         {
           "Sid": "ReadManifest",
           "Effect": "Allow",
           "Action": [
             "s3:GetObject",
             "s3:GetObjectVersion"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest-key"
         },
         {
           "Sid": "WriteReport",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
         }
       ]
     }
   ```

------

1. Choisissez **Next: Tags (Suivant : Étiquettes)**.

1. Ajoutez les étiquettes de votre choix (facultatif), puis choisissez **Next: Review (Suivant : Vérification)**.

1. Ajoutez un nom de stratégie et, éventuellement, une description, puis choisissez **Create policy (Créer une stratégie)**.

1. Choisissez **Review policy (Examiner une stratégie)**, puis **Save changes (Enregistrer les modifications)**.

1. Une fois votre stratégie S3 Batch Operations prête, la console vous renvoie à l’IAM **Policies (Stratégies)**. Filtrez le nom de stratégie, choisissez le bouton situé à gauche du nom de stratégie, choisissez **Policy actions (Actions de stratégie)**, puis **Attach (Attacher)**. 

   Pour attacher la stratégie nouvellement créée à un rôle IAM, sélectionnez les utilisateurs, groupes ou rôles appropriés dans votre compte, puis choisissez **Attach Policy (Attacher une stratégie)**. Cela a pour effet de vous ramener à la console IAM.

### Configurer votre rôle IAM d’opérations par lot
<a name="bucket-key-ex-set-up-iam-role"></a>

1. Dans le volet de navigation de la [console IAM](https://console.aws.amazon.com/iam/), choisissez **Rôles**, puis **Créer un rôle**.

1. Sélectionnez **Service AWS**, **S3** et **Opérations par lots S3**. Choisissez ensuite **Next: Permissions (Suivant : Autorisations)**.

1. Commencer à entrer le nom de la **politique IAM** que vous venez de créer. Activez la case à cocher en regard du nom de stratégie quand il s’affiche, puis choisissez **Next: Tags (Suivant : Étiquettes)**.

1. (Facultatif) Ajoutez des étiquettes ou gardez les champs de clé et de valeur vides pour cet exercice. Choisissez **Next: Review (Suivant : Vérification)**.

1. Entrez un nom de rôle, puis acceptez la description par défaut ou ajoutez la vôtre. Sélectionnez **Create role (Créer un rôle)**.

1. Assurez-vous que l’utilisateur qui crée la tâche dispose des autorisations décrites dans l’exemple suivant. 

   Remplacez `account-id` par l’ID de votre Compte AWS , et `IAM-role-name` par le nom que vous envisagez d’appliquer au rôle IAM que vous allez créer ultérieurement à l’étape de création de tâche d’opérations par lot. Pour de plus amples informations, veuillez consulter [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md).

   ```
               {
               "Sid": "AddIamPermissions",
               "Effect": "Allow",
               "Action": [
               "iam:GetRole",
               "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::account-id:role/IAM-role-name"
               }
   ```

### Activation des clés de compartiment S3 pour un compartiment existant
<a name="bucket-key-ex-enable-s3-bucket-key-on-a-bucket"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans la liste **Compartiments**, choisissez le compartiment pour lequel vous souhaitez activer une clé de compartiment S3.

1. Choisissez **Propriétés**.

1. Sous **Default encryption (Chiffrement par défaut)**, choisissez **Edit (Modifier)**.

1. Sous **Type de chiffrement**, vous avez le choix entre **Clés gérées par Amazon S3 (SSE-S3)** et **CléAWS Key Management Service (SSE-KMS)**. 

1. Si vous avez choisi **AWS Key Management Service clé (SSE-KMS)**, sous **AWS KMS key**, vous pouvez spécifier la AWS KMS clé à l'aide de l'une des options suivantes.
   + Pour choisir parmi la liste des clés KMS disponibles, sélectionnez **Choisir parmi vos clés AWS KMS **. Dans la liste des clés disponibles, choisissez une clé KMS symétrique de chiffrement dans la même région que votre compartiment. La clé AWS gérée (`aws/s3`) et les clés gérées par votre client apparaissent toutes deux dans la liste.
   + Pour saisir l'ARN de la clé KMS, choisissez **Enter AWS KMS key ARN**, puis entrez l'ARN de votre clé KMS dans le champ qui apparaît.
   + Pour créer une nouvelle clé gérée par le client dans la AWS KMS console, choisissez **Create a KMS key**.

1. Sous **Clé de compartiment**, choisissez **Activer**, puis **Enregistrer les modifications**.

À présent qu’une clé de compartiment S3 est activée au niveau du compartiment, les objets chargés, modifiés ou copiés dans ce compartiment héritent de cette configuration de chiffrement par défaut. Cela inclut les objets copiés à l’aide d’Amazon S3 Batch Operations.

### Créer votre tâche Batch Operations
<a name="bucket-key-ex-create-job"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation, choisissez **Opérations par lot**, puis **Créer une tâche**.

1. Choisissez la **Région** dans laquelle vous stockez vos objets, puis choisissez **CSV** comme type de manifeste.

1. Saisissez le chemin d’accès ou accédez au fichier manifeste CSV que vous avez créé précédemment à partir des résultats de S3 Select (ou d’Athena). Si votre manifeste contient une version IDs, cochez cette case. Choisissez **Suivant**.

1. Choisissez l’opération **Copy (Copier)**, le compartiment de destination de la copie. Vous pouvez maintenir le chiffrement côté serveur désactivé. Tant que les clés de compartiment S3 sont activées pour la destination du compartiment, l’opération de copie applique ces clés à ce compartiment.

1. (Facultatif) Choisissez une classe de stockage et les autres paramètres souhaités. Les paramètres que vous spécifiez dans cette étape s’appliquent à toutes les opérations effectuées sur les objets répertoriés dans le manifeste. Choisissez **Suivant**.

1. Pour configurer le chiffrement côté serveur, procédez comme suit : 

   1. Sous **Chiffrement côté serveur**, choisissez l’une des options suivantes :
      + Pour conserver les paramètres du compartiment pour le chiffrement côté serveur par défaut des objets lors de leur stockage dans Amazon S3, choisissez **Ne pas spécifier de clé de chiffrement**. Tant que les clés de compartiment S3 sont activées pour la destination du compartiment, l’opération de copie applique une clé de compartiment S3 au compartiment de destination.
**Note**  
Si la politique de compartiment pour la destination spécifiée exige que les objets soient chiffrés avant de les stocker dans Amazon S3, vous devez spécifier une clé de chiffrement. Sinon, la copie des objets vers la destination échouera.
      + Pour chiffrer des objets avant de les stocker dans Amazon S3, choisissez **Spécifier une clé de chiffrement**.

   1. Dans **Paramètres de chiffrement**, si vous choisissez **Spécifier une clé de chiffrement**, vous devez choisir **Utiliser les paramètres du compartiment de destination pour le chiffrement par défaut** ou **Ignorer les paramètres du compartiment de destination pour le chiffrement par défaut**.

   1. Si vous choisissez **Ignorer les paramètres du compartiment de destination pour le chiffrement par défaut**, vous devez configurer les paramètres de chiffrement suivants.

      1. Sous **Type de chiffrement**, vous devez choisir **Clés gérées par Amazon S3 (SSE-S3)** ou **CléAWS Key Management Service (SSE-KMS)**. SSE-S3 utilise l’un des chiffrements par bloc les plus puissants qui existent, Advanced Encryption Standard à 256 bits (AES-256) pour chiffrer chaque objet. SSE-KMS vous permet de mieux contrôler votre clé. Pour plus d’informations, consultez [Utilisation du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)](UsingServerSideEncryption.md) et [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md).

      1. Si vous choisissez **CléAWS Key Management Service (SSE-KMS)**, sous **AWS KMS key**, vous pouvez spécifier votre AWS KMS key via l’une des options suivantes.
         + Pour choisir parmi la liste des clés KMS disponibles, **choisissez Choose from your AWS KMS keys**, puis choisissez une clé KMS de chiffrement symétrique dans la même région que votre bucket. La clé AWS gérée (`aws/s3`) et les clés gérées par votre client apparaissent toutes deux dans la liste.
         + Pour saisir l'ARN de la clé KMS, choisissez **Enter AWS KMS key ARN**, puis saisissez l'ARN de votre clé KMS dans le champ qui apparaît.
         + Pour créer une nouvelle clé gérée par le client dans la AWS KMS console, choisissez **Create a KMS key**.

      1. Sous **Clé de compartiment**, choisissez **Activer**. L’opération de copie applique une clé de compartiment S3 au compartiment de destination.

1. Saisissez une description pour votre tâche (ou conservez la description par défaut), définissez son niveau de priorité, choisissez un type de rapport, puis spécifiez le **Path to completion report destination (Chemin d’accès de la destination du rapport de fin de tâche)**.

1. Dans la section **Permissions (Autorisations)**, veillez à choisir le rôle IAM Batch Operations que vous avez défini précédemment. Choisissez **Suivant**.

1. Sous **Review (Vérification)**, vérifiez les paramètres. Si vous voulez apporter des modifications, choisissez **Previous (Précédent)**. Après avoir confirmé les paramètres d’opérations par lot, choisissez **Create job (Créer une tâche)**. 

   Pour de plus amples informations, veuillez consulter [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md).

### Exécuter votre tâche d’opérations par lot
<a name="bucket-key-ex-run-job"></a>

L’assistant de configuration vous renvoie automatiquement à la section Opérations par lot S3 de la console Amazon S3. Votre nouvelle tâche passe de l’état **New (Nouvelle)** à l’état **Preparing (Préparation)** quand S3 commence le processus. Pendant la phase de préparation, S3 lit le manifeste de la tâche, vérifie s’il contient des erreurs, et calcule le nombre d’objets.

1. Choisissez le bouton d’actualisation dans la console Amazon S3 pour vérifier la progression. Selon la taille du manifeste, la lecture peut prendre des minutes ou des heures.

1. Quand S3 finit de lire le manifeste de la tâche, la tâche passe à l’état **Awaiting your confirmation (En attente de confirmation)**. Cliquez sur le bouton d’option à gauche de l’ID de tâche, puis choisissez **Run job (Exécuter la tâche)**.

1. Vérifiez les paramètres de la tâche, puis, dans le coin inférieur droit choisissez **Run job (Exécuter la tâche)**.

   Lorsque la tâche commence à s’exécuter, vous pouvez choisir le bouton d’actualisation pour vérifier sa progression dans l’affichage du tableau de bord de la console ou en sélectionnant la tâche.

1. Une fois la tâche est terminée, vous pouvez afficher le nombre d’objets **Succès** et **Échec** pour confirmer que tout a été effectué comme prévu. Si vous avez activé les rapports de tâche, vérifiez dans votre rapport de tâche la cause exacte de toute opération ayant échoué.

   Vous pouvez également effectuer ces étapes à l'aide de l'API REST AWS CLI AWS SDKs, ou Amazon S3. Pour plus d’informations sur le suivi de l’état des tâches et les rapports d’achèvement, consultez [Suivi de l’état de la tâche et des rapports d’achèvement](batch-ops-job-status.md).

Pour des exemples illustrant l'opération de copie avec des balises utilisant le AWS CLI et AWS SDK pour Java, voir[Création d’une tâche d’opérations par lot avec des étiquettes de tâche utilisées pour l’étiquetage](batch-ops-tags-create.md).

# Calcul des sommes de contrôle
<a name="batch-ops-compute-checksums"></a>

Vous pouvez utiliser S3 Batch Operations avec l’opération **Calculer la somme de contrôle** pour calculer la somme de contrôle des objets stockés dans Amazon S3 au repos. L’opération **Calculer la somme de contrôle** calcule les sommes de contrôle des objets que vous pouvez utiliser pour valider l’intégrité des données sans télécharger ni restaurer d’objets pour les données stockées. Vous pouvez utiliser l’opération **Calculer la somme de contrôle** pour calculer des sommes de contrôle d’objet complet ou composite pour tous les algorithmes de somme de contrôle pris en charge.

Avec l’opération **Calculer la somme de contrôle**, vous pouvez traiter des milliards d’objets en une seule demande. Cette opération par lot est compatible avec toutes les classes de stockage S3, quelle que soit la taille des objets. Pour créer une tâche **Compute checksum**, utilisez la console Amazon S3, l'API REST AWS Command Line Interface (AWS CLI) AWS SDKs, ou l'API REST Amazon S3.

Lorsque vous [activez la journalisation des accès au serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html), vous pouvez également recevoir des entrées de journal sur votre tâche **Calculer la somme de contrôle**. L’opération **Calculer la somme de contrôle** émet des événements distincts dans le journal d’accès au serveur une fois les calculs de somme de contrôle terminés. Ces entrées de journal suivent le [format standard de journalisation des accès au serveur S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html) et incluent des champs tels que le type d’opération, l’horodatage, [les codes d’erreur](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) et l’ID de la tâche **Calculer la somme de contrôle** associé. Cet enregistrement fournit une piste d’audit des activités de vérification par somme de contrôle effectuées sur vos objets, vous aidant ainsi à suivre et à vérifier les opérations d’intégrité des données. 

**Note**  
L’opération **Calculer la somme de contrôle** ne prend pas en charge le chiffrement côté serveur avec des clés de chiffrement fournies par le client (SSE-C). Toutefois, vous pouvez utiliser l'opération **Compute checksum** avec des objets chiffrés à l'aide du [chiffrement côté serveur avec des clés gérées S3 (SSE-S3) ou du chiffrement côté serveur avec (DSSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html). AWS Key Management Service Assurez-vous d'avoir [accordé les AWS KMS autorisations appropriées](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#require-sse-kms) pour effectuer l'opération **Compute checksum**.

Pour démarrer l’opération **Calculer la somme de contrôle** à l’aide de Batch Operations, vous pouvez :
+ Créer manuellement un fichier manifeste.
+ Utilisez un manifeste existant.
+ Demander à Batch Operations de générer automatiquement un manifeste sur la base des critères de filtre d’objet que vous [spécifiez lors de la création de votre tâche](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html#specify-batchjob-manifest).

Soumettez ensuite votre tâche **Calculer la somme de contrôle** et surveillez son statut. Une fois la tâche **Calculer la somme de contrôle** terminée, vous recevez automatiquement un rapport d’achèvement dans le compartiment de destination spécifié. Ce rapport d’achèvement contient des informations sur la somme de contrôle de chaque objet du compartiment, ce qui vous permet de vérifier la cohérence des données. Pour plus d’informations sur la manière d’utiliser ce rapport pour examiner la tâche, consultez [Suivi de l’état de la tâche et des rapports de fin de tâche](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html).

Pour plus d’informations sur la fonctionnalité **Calculer la somme de contrôle** et sur la façon d’utiliser **Calculer la somme de contrôle** dans la console, consultez [Vérification de l’intégrité des données d’un objet au repos dans Amazon S3](checking-object-integrity-at-rest.md). Pour plus d’informations sur l’envoi de demandes REST à l’opération **Calculer la somme de contrôle**, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html) et [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) dans la *Référence des API Amazon S3*.

Les sections suivantes expliquent comment commencer à utiliser l’opération **Calculer la somme de contrôle** avec S3 Batch Operations.

**Topics**
+ [Considérations relatives à l’opération **Calculer la somme de contrôle** de S3 Batch Operations](#batch-ops-compute-checksum-considerations)
+ [Rapports d’achèvement de S3 Batch Operations](#batch-ops-compute-checksum-completion-report)

## Considérations relatives à l’opération **Calculer la somme de contrôle** de S3 Batch Operations
<a name="batch-ops-compute-checksum-considerations"></a>

Avant d’utiliser l’opération **Calculer la somme de contrôle**, passez en revue la liste de considérations suivante :
+ Si votre manifeste comprend un champ d’identification de version, vous devez fournir un identifiant de version pour tous les objets du manifeste. Si l’ID de version n’est pas spécifié, la demande **Calculer la somme de contrôle** exécute l’opération sur la version la plus récente de l’objet.
+ Pour recevoir les détails de l’opération **Calculer la somme de contrôle** dans vos [journaux des accès au serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html), vous devez d’abord [activer la journalisation des accès au serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html) sur le compartiment source et spécifier un compartiment de destination pour le stockage des journaux. Le compartiment de destination doit également exister au même Région AWS endroit Compte AWS que le compartiment source. Après avoir configuré la journalisation des accès au serveur, l’opération **Calculer la somme de contrôle** génère [des enregistrements de journal](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields) qui incluent des champs standard tels que le type d’opération, le code de statut HTTP, [les codes d’erreur S3](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList), les horodatages et l’ID de la tâche **Calculer la somme de contrôle** associée. L’opération **Calculer la somme de contrôle** s’exécute de manière asynchrone. Par conséquent, les [entrées du journal](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields) utilisent un identifiant de tâche **Calculer la somme de contrôle**, plutôt qu’un identifiant de demande.
+ La génération du rapport peut prendre jusqu’à plusieurs heures pour les objets stockés.
+ Pour les classes de stockage S3 Glacier suivantes, la tâche **Calculer la somme de contrôle** peut prendre jusqu’à une semaine :
  + S3 Glacier Flexible Retrieval
  + S3 Glacier Deep Archive
+ Pour les compartiments dans lesquels le rapport d’achèvement sera généré, vous devez utiliser la [condition du propriétaire du compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-when-to-use) lors de l’exécution de l’opération **Calculer la somme de contrôle**. Si le propriétaire du compartiment réel ne correspond pas au propriétaire du compartiment prévu dans la demande soumise, la tâche échoue. Pour obtenir la liste des opérations S3 ne prenant pas en charge la condition du propriétaire du compartiment, consultez [Restrictions et limitations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-restrictions-limitations).

## Rapports d’achèvement de S3 Batch Operations
<a name="batch-ops-compute-checksum-completion-report"></a>

Lorsque vous créez une tâche **Calculer la somme de contrôle**, vous pouvez demander un rapport d’achèvement de S3 Batch Operations. Ce fichier CSV présente les objets, les codes de réussite ou d’échec, les sorties et les descriptions. Pour plus d’informations sur le suivi des tâches et les rapports d’achèvement, consultez [Rapports de fin de tâche](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html#batch-ops-completion-report).

# Delete all object tags (Supprimer toutes les étiquettes des objets)
<a name="batch-ops-delete-object-tagging"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. L’opération **Delete all object tags** (Supprimer toutes les étiquettes des objets) supprime tous les ensembles de étiquettes Amazon S3 associés aux objets répertoriés dans le manifeste. S3 Batch Operations ne permet pas de supprimer des balises d’objet tout en conservant les autres balises en place. 

Si les objets de votre manifeste se trouvent dans un compartiment versionné, vous pouvez supprimer les ensembles d’étiquettes d’une version d’un objet. Pour ce faire, vous devez spécifier un ID de version pour chaque objet dans le manifeste. Si vous n’incluez pas d’ID de version pour un objet, S3 Batch Operations supprime l’ensemble d’étiquettes de la dernière version de chaque objet. Pour plus d'informations sur les manifestes Batch Operations, consultez [Spécification d’un manifeste](batch-ops-create-job.md#specify-batchjob-manifest). 

Pour plus d’informations sur le balisage des objets, consultez [Catégorisation de vos objets à l’aide de balises](object-tagging.md) dans ce guide ainsi que [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) et [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) dans la *Référence des API Amazon Simple Storage Service*.

**Avertissement**  
L’exécution de cette tâche supprime tous les ensembles d’étiquettes sur chaque objet répertorié dans le manifeste. 

Pour utiliser la console afin de créer une tâche **Supprimer toutes les balises d’objet**, consultez [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md).

## Restrictions et limitations
<a name="batch-ops-delete-object-tagging-restrictions"></a>

Lorsque vous utilisez les opérations par lot pour supprimer des balises d’objets, les restrictions et limites suivantes s’appliquent :
+ Le rôle Gestion des identités et des accès AWS (IAM) que vous spécifiez pour exécuter la tâche doit disposer des autorisations nécessaires pour effectuer l'`DeleteObjectTagging`opération Amazon S3 sous-jacente. Pour plus d’informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) dans la *Référence d’API Amazon Simple Storage Service*.
+ Les opérations par lot S3 utilisent l’opération Amazon S3 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) pour supprimer les ensembles de balises de chaque objet du manifeste. Toutes les restrictions et limitations qui s’appliquent à l’opération sous-jacente s’appliquent également aux tâches S3 Batch Opérations. 
+ Une seule tâche de suppression de balises d’objets peut prendre en charge un manifeste contenant jusqu’à 20 milliards d’objets.

# AWS Lambda Fonction Invoke
<a name="batch-ops-invoke-lambda"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. L'opération **Invoke AWS Lambda function** Batch Operations lance des AWS Lambda fonctions pour effectuer des actions personnalisées sur des objets répertoriés dans un manifeste. Cette section décrit comment créer une fonction Lambda à utiliser avec S3 Batch Operations et comment créer une tâche pour invoquer la fonction. La tâche S3 Batch Operations utilise l’opération `LambdaInvoke` pour exécuter une fonction Lambda sur chaque objet répertorié dans un manifeste.

Vous pouvez utiliser S3 Batch Operations à l'aide de la console Amazon S3, AWS Command Line Interface (AWS CLI) ou de l'API REST Amazon S3. AWS SDKs Pour plus d’informations sur l’utilisation de Lambda, consultez [Mise en route avec AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) dans le *Guide du développeur AWS Lambda *. 

Les sections suivantes expliquent comment commencer à utiliser les opérations par lot S3 avec Lambda.

**Topics**
+ [Utilisation de Lambda avec Batch Operations](#batch-ops-invoke-lambda-using)
+ [Création d’une fonction Lambda à utiliser avec S3 Batch Operations](#batch-ops-invoke-lambda-custom-functions)
+ [Création d’une tâche d’opérations par lot S3 qui invoque une fonction Lambda](#batch-ops-invoke-lambda-create-job)
+ [Fourniture d’informations au niveau des tâches dans les manifestes Lambda](#storing-task-level-information-in-lambda)
+ [Tutoriel des opérations par lots S3](#batch-ops-tutorials-lambda)

## Utilisation de Lambda avec Batch Operations
<a name="batch-ops-invoke-lambda-using"></a>

Lorsque vous utilisez S3 Batch Operations avec AWS Lambda, vous devez créer de nouvelles fonctions Lambda spécifiquement destinées à être utilisées avec S3 Batch Operations. Vous ne pouvez pas réutiliser les fonctions basées sur des événements Amazon S3 existantes avec S3 Batch Operations. Les fonctions d’événements peuvent seulement recevoir des messages. Elles ne peuvent pas en renvoyer. Les fonctions Lambda utilisées avec S3 Batch Operations doivent accepter et renvoyer des messages. Pour plus d'informations sur l'utilisation de Lambda avec les événements Amazon S3, consultez la section [Utilisation AWS Lambda avec Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html) dans le manuel du *AWS Lambda développeur*.

Vous créez une tâche S3 Batch Operations qui invoque votre fonction Lambda. La tâche exécute la même fonction Lambda pour tous les objets répertoriés dans votre manifeste. Vous pouvez contrôler les versions de votre fonction Lambda à utiliser lors du traitement des objets de votre manifeste. Les opérations par lots S3 prennent en charge les noms de ressources Amazon (ARNs) non qualifiés, les alias et les versions spécifiques. Pour plus d'informations, consultez la section [Introduction au AWS Lambda versionnement](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html) dans le *guide du AWS Lambda développeur*.

Si vous donnez un ARN de fonction qui utilise un alias ou le qualificatif `$LATEST` à la tâche S3 Batch Operations, et que vous mettez à jour la version vers laquelle l’un de ces points pointe, S3 Batch Operations commence à appeler la nouvelle version de votre fonction Lambda. Cela peut être utile lorsque vous souhaitez mettre à jour la fonctionnalité en cours de traitement d’une tâche importante. Si vous ne souhaitez pas que S3 Batch Operations modifie la version utilisée, indiquez la version spécifique dans le paramètre `FunctionARN` lorsque vous créez la tâche.

Une seule AWS Lambda tâche avec S3 Batch Operations peut prendre en charge un manifeste contenant jusqu'à 20 milliards d'objets.

### Utilisation de Lambda et de Batch Operations avec des compartiments de répertoires
<a name="batch-ops-invoke-lambda-directory-buckets"></a>

Les compartiments de répertoires sont un type de compartiment Amazon S3 conçu pour les charges de travail ou les applications critiques en termes de performances qui nécessitent une latence constante inférieure à dix millisecondes. Pour plus d’informations, consultez [Compartiments de répertoires](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).

L’utilisation d’opérations par lots pour invoquer des fonctions Lambda agissant sur des compartiments de répertoires est soumise à des exigences particulières. Par exemple, vous devez structurer votre demande Lambda à l’aide d’un schéma JSON mis à jour et spécifier [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-InvocationSchemaVersion](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-InvocationSchemaVersion) 2.0 (pas 1.0) lorsque vous créez la tâche. Ce schéma mis à jour vous permet de spécifier des paires clé-valeur facultatives pour [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-UserArguments](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-UserArguments), que vous pouvez utiliser pour modifier certains paramètres des fonctions Lambda existantes. Pour plus d'informations, consultez [Automatiser le traitement des objets dans les compartiments d'annuaire Amazon S3 avec S3 Batch Operations et AWS Lambda](https://aws.amazon.com/blogs/storage/automate-object-processing-in-amazon-s3-directory-buckets-with-s3-batch-operations-and-aws-lambda/) sur le blog AWS de stockage.

### Codes de réponse et de résultat
<a name="batch-ops-invoke-lambda-response-codes"></a>

S3 Batch Operations invoque la fonction Lambda avec une ou plusieurs clés, chacune étant associée à un `TaskID`. Les opérations par lot S3 s’attendent à recevoir un code de résultat par clé de la part des fonctions Lambda. Toute tâche IDs envoyée dans la demande qui n'est pas renvoyée avec un code de résultat par clé recevra le code de résultat indiqué `treatMissingKeysAs` dans le champ. `treatMissingKeysAs`est un champ de demande facultatif dont la valeur par défaut est. `TemporaryFailure` Le tableau suivant contient les autres codes de résultat et valeurs possibles pour le champ `treatMissingKeysAs`. 


| Code de réponse | Description | 
| --- | --- | 
| Succeeded | La tâche s’est achevée normalement. Si vous avez demandé un rapport de fin de tâche, la chaîne de résultat de la tâche est comprise dans le rapport. | 
| TemporaryFailure | La tâche a fait l’objet d’un échec temporaire et sera relancée avant la fin de la tâche. La chaîne de résultat est ignorée. Si c’est le relancement final, le message d’erreur est inclus dans le rapport final. | 
| PermanentFailure | La tâche a fait l’objet d’un échec permanent. Si vous avez demandé un rapport de fin de tâche, la tâche est marquée comme Failed et inclut la chaîne de message d’erreur. Les chaînes de résultats provenant de tâches échouées sont ignorées. | 

## Création d’une fonction Lambda à utiliser avec S3 Batch Operations
<a name="batch-ops-invoke-lambda-custom-functions"></a>

Cette section fournit des exemples d'autorisations Gestion des identités et des accès AWS (IAM) que vous devez utiliser avec votre fonction Lambda. Elle contient également un exemple de fonction Lambda à utiliser avec S3 Batch Operations. Si vous n'avez jamais créé de fonction Lambda auparavant, consultez [Tutoriel : Utilisation AWS Lambda avec Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) dans le Guide du *AWS Lambda développeur*.

Vous devez créer des fonctions Lambda spécifiques à utiliser avec les opérations par lot S3. Vous ne pouvez pas réutiliser les fonctions Lambda basées sur des événements Amazon S3, car les fonctions Lambda utilisées pour S3 Batch Operations doivent accepter et renvoyer des champs de données spéciaux. 

**Important**  
AWS Lambda les fonctions écrites en Java acceptent l'une [https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestHandler.java](https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestHandler.java)ou l'autre des [https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestStreamHandler.java](https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestStreamHandler.java)interfaces de gestion. Cependant, pour prendre en charge le format de demande et de réponse S3 Batch Operations, AWS Lambda il faut une `RequestStreamHandler` interface pour la sérialisation personnalisée et la désérialisation d'une demande et d'une réponse. Cette interface permet à Lambda de transmettre un InputStream et OutputStream à la méthode Java`handleRequest`.   
Assurez-vous d’utiliser l’interface `RequestStreamHandler` lorsque vous utilisez les fonctions Lambda avec S3 Batch Operations. Si vous utilisez une interface `RequestHandler`, la tâche par lot échouera avec « JSON non valide retourné dans la charge utile Lambda » dans le rapport de fin.   
Pour plus d’informations, consultez [Interfaces du gestionnaire](https://docs.aws.amazon.com//lambda/latest/dg/java-handler.html#java-handler-interfaces) dans le *Guide de l’utilisateur AWS Lambda *.

### Exemples d’autorisations IAM
<a name="batch-ops-invoke-lambda-custom-functions-iam"></a>

Voici des exemples d’autorisations IAM nécessaires à l’utilisation d’une fonction Lambda avec S3 Batch Operations. 

**Example - Stratégie d’approbation de S3 Batch Operations**  
Voici un exemple de stratégie d’approbation que vous pouvez utiliser pour le rôle IAM Batch Operations. Ce rôle IAM est spécifié lorsque vous créez la tâche et donne à Batch Operations l’autorisation d’endosser le rôle IAM.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "batchoperations.s3.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**Example - Politique IAM Lambda**  
Voici un exemple de politique IAM qui donne à S3 Batch Operations l’autorisation d’invoquer la fonction Lambda et de lire le manifeste d’entrée.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "BatchOperationsLambdaPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "lambda:InvokeFunction"
            ],
            "Resource": "*"
        }
    ]
}
```

### Exemple de demande et de réponse
<a name="batch-ops-invoke-lambda-custom-functions-request"></a>

Cette section fournit des exemples de demandes et réponses pour la fonction Lambda.

**Example Demande**  
L’exemple suivant est un exemple JSON de requête pour la fonction Lambda.  

```
{
    "invocationSchemaVersion": "1.0",
    "invocationId": "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
    "job": {
        "id": "f3cc4f60-61f6-4a2b-8a21-d07600c373ce"
    },
    "tasks": [
        {
            "taskId": "dGFza2lkZ29lc2hlcmUK",
            "s3Key": "customerImage1.jpg",
            "s3VersionId": "1",
            "s3BucketArn": "arn:aws:s3:us-east-1:0123456788:amzn-s3-demo-bucket1"
        }
    ]
}
```

**Example Réponse**  
L’exemple suivant est un exemple JSON de réponse pour la fonction Lambda.  

```
{
  "invocationSchemaVersion": "1.0",
  "treatMissingKeysAs" : "PermanentFailure",
  "invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
  "results": [
    {
      "taskId": "dGFza2lkZ29lc2hlcmUK",
      "resultCode": "Succeeded",
      "resultString": "[\"Mary Major", \"John Stiles\"]"
    }
  ]
}
```

### Exemple de fonction Lambda pour les opérations par lot S3
<a name="batch-ops-invoke-lambda-custom-functions-example"></a>

L’exemple suivant Python Lambda supprime un marqueur de suppression d’un objet versionné.

Comme l’exemple le montre, les clés des opérations par lot S3 sont encodées par URL. Pour utiliser Amazon S3 avec d'autres AWS services, il est important de décoder par URL la clé transmise par S3 Batch Operations.

```
import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel("INFO")

s3 = boto3.client("s3")


def lambda_handler(event, context):
    """
    Removes a delete marker from the specified versioned object.

    :param event: The S3 batch event that contains the ID of the delete marker
                  to remove.
    :param context: Context about the event.
    :return: A result structure that Amazon S3 uses to interpret the result of the
             operation. When the result code is TemporaryFailure, S3 retries the
             operation.
    """
    # Parse job parameters from Amazon S3 batch operations
    invocation_id = event["invocationId"]
    invocation_schema_version = event["invocationSchemaVersion"]

    results = []
    result_code = None
    result_string = None

    task = event["tasks"][0]
    task_id = task["taskId"]

    try:
        obj_key = parse.unquote_plus(task["s3Key"], encoding="utf-8")
        obj_version_id = task["s3VersionId"]
        bucket_name = task["s3BucketArn"].split(":")[-1]

        logger.info(
            "Got task: remove delete marker %s from object %s.", obj_version_id, obj_key
        )

        try:
            # If this call does not raise an error, the object version is not a delete
            # marker and should not be deleted.
            response = s3.head_object(
                Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id
            )
            result_code = "PermanentFailure"
            result_string = (
                f"Object {obj_key}, ID {obj_version_id} is not " f"a delete marker."
            )

            logger.debug(response)
            logger.warning(result_string)
        except ClientError as error:
            delete_marker = error.response["ResponseMetadata"]["HTTPHeaders"].get(
                "x-amz-delete-marker", "false"
            )
            if delete_marker == "true":
                logger.info(
                    "Object %s, version %s is a delete marker.", obj_key, obj_version_id
                )
                try:
                    s3.delete_object(
                        Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id
                    )
                    result_code = "Succeeded"
                    result_string = (
                        f"Successfully removed delete marker "
                        f"{obj_version_id} from object {obj_key}."
                    )
                    logger.info(result_string)
                except ClientError as error:
                    # Mark request timeout as a temporary failure so it will be retried.
                    if error.response["Error"]["Code"] == "RequestTimeout":
                        result_code = "TemporaryFailure"
                        result_string = (
                            f"Attempt to remove delete marker from  "
                            f"object {obj_key} timed out."
                        )
                        logger.info(result_string)
                    else:
                        raise
            else:
                raise ValueError(
                    f"The x-amz-delete-marker header is either not "
                    f"present or is not 'true'."
                )
    except Exception as error:
        # Mark all other exceptions as permanent failures.
        result_code = "PermanentFailure"
        result_string = str(error)
        logger.exception(error)
    finally:
        results.append(
            {
                "taskId": task_id,
                "resultCode": result_code,
                "resultString": result_string,
            }
        )
    return {
        "invocationSchemaVersion": invocation_schema_version,
        "treatMissingKeysAs": "PermanentFailure",
        "invocationId": invocation_id,
        "results": results,
    }
```

## Création d’une tâche d’opérations par lot S3 qui invoque une fonction Lambda
<a name="batch-ops-invoke-lambda-create-job"></a>

Lors de la création d’une tâche d’opérations par lot S3 pour appeler une fonction Lambda, vous devez fournir les éléments suivants :
+ L’ARN de votre fonction Lambda (qui peut inclure l’alias de fonction ou le numéro de version spécifique)
+ Un rôle IAM doté de l’autorisation d’invoquer la fonction
+ Le paramètre d’action `LambdaInvokeFunction`

Pour plus d’informations sur la création d’une tâche d’opérations par lots S3, consultez [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md) et [Opérations prises en charge par les opérations par lot S3](batch-ops-operations.md).

L’exemple suivant crée une tâche d’opérations par lot S3 qui invoque une fonction Lambda à l’aide de l’ AWS CLI. Pour utiliser cet exemple, remplacez les *`user input placeholders`* par vos propres informations.

```
aws s3control create-job
    --account-id account-id
    --operation  '{"LambdaInvoke": { "FunctionArn": "arn:aws:lambda:region:account-id:function:LambdaFunctionName" } }'
    --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket","ETag":"ManifestETag"}}'
    --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-bucket","Format":"Report_CSV_20180820","Enabled":true,"Prefix":"ReportPrefix","ReportScope":"AllTasks"}'
    --priority 2
    --role-arn arn:aws:iam::account-id:role/BatchOperationsRole
    --region region
    --description "Lambda Function"
```

## Fourniture d’informations au niveau des tâches dans les manifestes Lambda
<a name="storing-task-level-information-in-lambda"></a>

Lorsque vous utilisez AWS Lambda des fonctions avec S3 Batch Operations, vous souhaiterez peut-être que des données supplémentaires accompagnent chaque tâche ou clé exécutée. Par exemple, vous pouvez souhaiter que la clé d’objet source et la nouvelle clé d’objet soient fournies. Votre fonction Lambda peut alors copier la clé source vers un nouveau compartiment S3 avec un nouveau nom. Par défaut, les opérations par lot vous permettent de spécifier uniquement le compartiment de destination et une liste de clés source dans le manifeste d’entrée dans votre tâche. Les exemples suivants décrivent comment inclure des données supplémentaires dans le manifeste afin que vous puissiez exécuter des fonctions Lambda plus complexes.

Pour spécifier des paramètres individuels pour chaque clé dans votre manifeste d’opérations par lot S3 à utiliser dans le code de votre fonction Lambda, utilisez le format JSON codé en URL suivant. Le champ `key` est transmis à votre fonction Lambda comme s’il s’agissait d’une clé d’objet Amazon S3. La fonction Lambda peut cependant considérer qu’il contient d’autres valeurs ou plusieurs clés, comme illustré dans les exemples suivants. 

**Note**  
Dans le manifeste, le nombre maximal de caractères pour le champ `key` est 1 024.

**Example - Manifeste substituant les « clés Amazon S3 » par des chaînes JSON**  
La version codée URL est fournie aux opérations par lot S3.  

```
amzn-s3-demo-bucket,{"origKey": "object1key", "newKey": "newObject1Key"}
amzn-s3-demo-bucket,{"origKey": "object2key", "newKey": "newObject2Key"}
amzn-s3-demo-bucket,{"origKey": "object3key", "newKey": "newObject3Key"}
```

**Example - Manifeste codé en URL**  
Cette version codée en URL doit être fournie aux opérations par lot S3. La non-URL-encoded version ne fonctionne pas.  

```
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object1key%22%2C%20%22newKey%22%3A%20%22newObject1Key%22%7D
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object2key%22%2C%20%22newKey%22%3A%20%22newObject2Key%22%7D
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object3key%22%2C%20%22newKey%22%3A%20%22newObject3Key%22%7D
```

**Example - Fonction Lambda avec format de manifeste écrivant les résultats dans le rapport de la tâche**  
Cet exemple de manifeste codé par URL contient des clés d’objet délimitées par des barres verticales, que la fonction Lambda suivante doit analyser.  

```
amzn-s3-demo-bucket,object1key%7Clower
amzn-s3-demo-bucket,object2key%7Cupper
amzn-s3-demo-bucket,object3key%7Creverse
amzn-s3-demo-bucket,object4key%7Cdelete
```
Cette fonction Lambda montre comment analyser une tâche séparée par une barre verticale, qui est codée dans le manifeste des opérations par lot S3. La tâche indique l’opération de révision qui est appliquée à l’objet spécifié.  

```
import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel("INFO")

s3 = boto3.resource("s3")


def lambda_handler(event, context):
    """
    Applies the specified revision to the specified object.

    :param event: The Amazon S3 batch event that contains the ID of the object to
                  revise and the revision type to apply.
    :param context: Context about the event.
    :return: A result structure that Amazon S3 uses to interpret the result of the
             operation.
    """
    # Parse job parameters from Amazon S3 batch operations
    invocation_id = event["invocationId"]
    invocation_schema_version = event["invocationSchemaVersion"]

    results = []
    result_code = None
    result_string = None

    task = event["tasks"][0]
    task_id = task["taskId"]
    # The revision type is packed with the object key as a pipe-delimited string.
    obj_key, revision = parse.unquote_plus(task["s3Key"], encoding="utf-8").split("|")
    bucket_name = task["s3BucketArn"].split(":")[-1]

    logger.info("Got task: apply revision %s to %s.", revision, obj_key)

    try:
        stanza_obj = s3.Bucket(bucket_name).Object(obj_key)
        stanza = stanza_obj.get()["Body"].read().decode("utf-8")
        if revision == "lower":
            stanza = stanza.lower()
        elif revision == "upper":
            stanza = stanza.upper()
        elif revision == "reverse":
            stanza = stanza[::-1]
        elif revision == "delete":
            pass
        else:
            raise TypeError(f"Can't handle revision type '{revision}'.")

        if revision == "delete":
            stanza_obj.delete()
            result_string = f"Deleted stanza {stanza_obj.key}."
        else:
            stanza_obj.put(Body=bytes(stanza, "utf-8"))
            result_string = (
                f"Applied revision type '{revision}' to " f"stanza {stanza_obj.key}."
            )

        logger.info(result_string)
        result_code = "Succeeded"
    except ClientError as error:
        if error.response["Error"]["Code"] == "NoSuchKey":
            result_code = "Succeeded"
            result_string = (
                f"Stanza {obj_key} not found, assuming it was deleted "
                f"in an earlier revision."
            )
            logger.info(result_string)
        else:
            result_code = "PermanentFailure"
            result_string = (
                f"Got exception when applying revision type '{revision}' "
                f"to {obj_key}: {error}."
            )
            logger.exception(result_string)
    finally:
        results.append(
            {
                "taskId": task_id,
                "resultCode": result_code,
                "resultString": result_string,
            }
        )
    return {
        "invocationSchemaVersion": invocation_schema_version,
        "treatMissingKeysAs": "PermanentFailure",
        "invocationId": invocation_id,
        "results": results,
    }
```

## Tutoriel des opérations par lots S3
<a name="batch-ops-tutorials-lambda"></a>

Le didacticiel suivant présente des end-to-end procédures complètes pour certaines tâches d'opérations par lots avec Lambda. Dans ce didacticiel, vous apprendrez à configurer les opérations par lot S3 pour invoquer une fonction Lambda pour le transcodage par lot de vidéos stockées dans un compartiment source S3. La fonction Lambda appelle AWS Elemental MediaConvert pour transcoder les vidéos. 
+ [Didacticiel : transcodage par lot de vidéos avec les opérations par lot S3](tutorial-s3-batchops-lambda-mediaconvert-video.md)

# Replace all object tags (Remplacer toutes les étiquettes des objets)
<a name="batch-ops-put-object-tagging"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. L’opération **Remplacer toutes les balises d’objet** remplace les balises de chaque objet répertorié dans le manifeste. Une balise d’objet est une paire clé/valeur de chaînes que vous pouvez utiliser pour stocker les métadonnées relatives à un objet.

Pour créer une tâche de remplacement de toutes les balises d’objet****, vous devez fournir un ensemble de balises à appliquer. S3 Batch Operations applique le même ensemble d’étiquettes à chaque objet. Le jeu d’étiquettes que vous fournissez remplace les jeux d’étiquettes déjà associés aux objets du manifeste. Les opérations par lot S3 ne permettent pas d’ajouter des balises aux objets tout en laissant les balises existantes en place.

Si les objets de votre manifeste se trouvent dans un compartiment versionné, vous pouvez appliquer l’ensemble d’étiquettes à des versions spécifiques de chaque objet. Pour ce faire, spécifiez un ID de version pour chaque objet dans le manifeste. Si vous n’incluez pas d’ID de version pour les objets, les opérations par lot S3 applique l’ensemble de balises à la dernière version de l’objet. Pour plus d’informations sur les manifestes Batch Operations, consultez [Spécification d’un manifeste](batch-ops-create-job.md#specify-batchjob-manifest). 

Pour plus d’informations sur le balisage d’objets, consultez [Catégorisation de vos objets à l’aide de balises](object-tagging.md) dans ce guide. Consultez aussi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) et [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) dans la *Référence des API Amazon Simple Storage Service*.

Pour utiliser la console afin de créer une tâche **Remplacer toutes les balises d’objets**, consultez [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md).

## Restrictions et limitations
<a name="batch-ops-set-tagging-restrictions"></a>

Lorsque vous utilisez les opérations par lot pour remplacer des balises d’objet, les restrictions et limites suivantes s’appliquent :
+ Le rôle Gestion des identités et des accès AWS (IAM) que vous spécifiez pour exécuter la tâche Batch Operations doit disposer des autorisations nécessaires pour effectuer l'`PutObjectTagging`opération sous-jacente. Pour plus d’informations sur les autorisations nécessaires, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) dans la *Référence d’API Amazon Simple Storage Service*.
+ Les opérations par lot S3 utilisent l’opération Amazon S3 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) pour appliquer des balises à chaque objet du manifeste. Toutes les restrictions et limitations qui s’appliquent à l’opération sous-jacente s’appliquent également aux tâches S3 Batch Opérations.
+ Une seule tâche de remplacement de balises d’objets peut prendre en charge un manifeste contenant jusqu’à 20 milliards d’objets.

# Remplacer une liste de contrôle d’accès (ACL)
<a name="batch-ops-put-object-acl"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. L'opération **Remplacer la liste de contrôle d'accès (ACL)** remplace les listes de contrôle d'accès (ACLs) pour chaque objet répertorié dans le manifeste. En utilisant ACLs, vous pouvez définir les personnes autorisées à accéder à un objet et les actions qu'elles peuvent effectuer.

**Note**  
La majorité des cas d'utilisation modernes d'Amazon S3 ne nécessitent plus l'utilisation de ACLs. Nous vous recommandons de rester ACLs désactivé, sauf dans les cas où vous devez contrôler l'accès à chaque objet individuellement. Lorsque cette ACLs option est désactivée, vous pouvez utiliser des politiques pour contrôler l'accès à tous les objets de votre compartiment, quelle que soit la personne qui les a chargés dans votre compartiment. Pour de plus amples informations, veuillez consulter [Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment](about-object-ownership.md).

S3 Batch Operations prend en charge les autorisations personnalisées ACLs que vous définissez et les ACLs versions prédéfinies fournies par Amazon S3 avec un ensemble prédéfini d'autorisations d'accès.

Si les objets de votre manifeste se trouvent dans un compartiment versionné, vous pouvez les appliquer ACLs à des versions spécifiques de chaque objet. Pour ce faire, spécifiez un ID de version pour chaque objet dans le manifeste. Si vous n’incluez aucun ID de version pour les objets, les opérations par lot S3 appliquent la liste de contrôle d’accès à la dernière version de l’objet.

Pour plus d'informations sur ACLs Amazon S3, consultez[Présentation de la liste de contrôle d’accès (ACL)](acl-overview.md).

**S3 Block Public Access**  
Si vous souhaitez limiter l'accès public à tous les objets d'un compartiment, nous vous recommandons d'utiliser Amazon S3 Block Public Access au lieu d'utiliser S3 Batch Operations pour vous appliquer ACLs. Le blocage de l’accès publique permet de limiter l’accès par compartiment ou par compte via une seule opération simple et rapide. Le blocage de l’accès public Amazon S3 est préférable lorsque votre objectif est de contrôler l’accès public à tous les objets d’un compartiment ou d’un compte. N’utilisez les opérations par lot S3 que lorsque vous devez appliquer une liste de contrôle d’accès (ACL) prédéfinie à chaque objet du manifeste. Pour de plus amples informations sur le blocage de l’accès public S3, consultez [Blocage de l’accès public à votre stockage Amazon S3](access-control-block-public-access.md).

**Propriété de l’objet S3**  
Si les objets du manifeste se trouvent dans un compartiment qui utilise le paramètre **imposé par le propriétaire du compartiment** pour la propriété des objets, l'opération **Remplacer la liste de contrôle d'accès (ACL)** peut uniquement spécifier un objet ACLs qui accorde un contrôle total au propriétaire du compartiment. Dans ce cas, l'opération **Remplacer la liste de contrôle d'accès (ACL)** ne peut pas accorder d'autorisations ACL d'objets à d'autres Comptes AWS ou à des groupes. Pour de plus amples informations, veuillez consulter [Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment](about-object-ownership.md).

## Restrictions et limitations
<a name="batch-ops-put-object-acl-restrictions"></a>

Lorsque vous utilisez Batch Operations pour remplacer ACLs, les restrictions et limitations suivantes s'appliquent : 
+ Le rôle Gestion des identités et des accès AWS (IAM) que vous spécifiez pour exécuter la tâche de **remplacement de la liste de contrôle d'accès (ACL)** doit disposer des autorisations nécessaires pour effectuer l'`PutObjectAcl`opération Amazon S3 sous-jacente. Pour plus d’informations sur les autorisations nécessaires, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) dans la *Référence d’API Amazon Simple Storage Service*.
+ Les opérations par lot S3 utilisent l’opération Amazon S3 `PutObjectAcl` pour appliquer la liste de contrôle d’accès ACL spécifiée à chaque objet du manifeste. Par conséquent, toutes les restrictions et limites qui s’appliquent à l’opération `PutObjectAcl` sous-jacente s’appliquent également aux tâches d’opérations par lot S3 **Remplacer une liste de contrôle d’accès (ACL)**.
+ Une seule tâche de remplacement de listes de contrôle d’accès peut prendre en charge un manifeste contenant jusqu’à 20 milliards d’objets.

# Restauration d’objets à l’aide d’opérations par lot
<a name="batch-ops-initiate-restore-object"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. L’opération **Restaurer** lance des demandes de restauration pour les objets Amazon S3 archivés, répertoriés dans votre manifeste. Les objets archivés suivants doivent être restaurés pour qu’il soit possible d’y accéder en temps réel :
+ Objets archivés dans les classes de stockage S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive
+ Objets archivés via la classe de stockage S3 Intelligent-Tiering dans les niveaux Archive Access ou Deep Archive Access

L’utilisation d’une opération **Restaurer** ([https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html)) dans votre tâche d’opérations par lot S3 entraîne une demande `RestoreObject` pour chaque objet spécifié dans le manifeste.

**Important**  
La tâche **Restaurer** *initie* uniquement la demande de restauration d’objets. S3 Batch Operations indique que la tâche est terminée pour chaque objet après que la demande a été lancée pour l’objet. Amazon S3 ne met pas à jour la tâche ou ne vous avertit pas lorsque les objets ont été restaurés. Toutefois, vous pouvez utiliser des notifications d’événements S3 pour recevoir des notifications lorsque les objets sont disponibles dans Amazon S3. Pour de plus amples informations, veuillez consulter [Notifications d'événements Amazon S3](EventNotifications.md).

Lorsque vous créez une tâche **Restaurer**, les arguments suivants sont disponibles :

**ExpirationInDays**  
Cet argument spécifie combien de temps l’objet S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive reste disponible dans Amazon S3. Les tâches **Restaurer** qui ciblent des objets S3 Glacier Flexible Retrieval et S3 Glacier Deep Archive exigent que vous définissiez `ExpirationInDays` sur `1` ou plus.  
Ne définissez pas `ExpirationInDays` lors de la création de tâches d’opération **Restaurer**, qui ciblent des objets de niveau Archive Access ou Deep Archive Access de S3 Intelligent-Tiering. Les objets des niveaux Archive Access de S3 Intelligent-Tiering ne sont pas soumis à l’expiration de la restauration. Par conséquent, spécifier `ExpirationInDays` entraîne un échec de la demande `RestoreObject`.

**GlacierJobTier**  
Amazon S3 peut restaurer des objets en utilisant un des trois niveaux de récupération suivants : `EXPEDITED`, `STANDARD` ou `BULK`. Toutefois, la fonction S3 Batch Operations prend en charge uniquement les niveaux de récupération `STANDARD` et `BULK`. Pour plus d’informations sur les différences entre les niveaux de récupération, consultez [Présentation des options de récupération d’archives](restoring-objects-retrieval-options.md).   
Pour plus d’informations sur la tarification de chaque niveau, consultez la section **Demandes et récupérations de données** dans la page [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/).

## Différences entre la restauration depuis S3 Glacier et S3 Intelligent-Tiering
<a name="batch-ops-initiate-restore-diff"></a>

La restauration de fichiers archivés à partir des classes de stockage S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive diffère de la restauration de fichiers de la classe de stockage S3 Intelligent-Tiering dans les niveaux d’accès Archive ou Deep Archive.
+ Lorsque vous effectuez une restauration à partir de S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive, une *copie* temporaire de l’objet est créée. Amazon S3 supprime cette copie après l’expiration de la valeur que vous avez spécifiée dans l’argument `ExpirationInDays`. Une fois la copie temporaire supprimée, vous devez soumettre une demande de restauration supplémentaire pour accéder à l’objet.
+ Lors de la restauration d’objets S3 Intelligent-Tiering archivés, *ne spécifiez pas* l’argument `ExpirationInDays`. Lorsque vous restaurez un objet depuis le niveau Archive Access ou Deep Archive Access de S3 Intelligent-Tiering, l’objet repasse au niveau d’accès fréquent de S3 Intelligent-Tiering. Après un minimum de 90 jours consécutifs sans accès, l’objet passe automatiquement au niveau Archive Access. Après un minimum de 180 jours consécutifs sans accès, l’objet passe automatiquement au niveau Deep Archive Access. 
+ Les tâches d'opérations par lot peuvent fonctionner sur les objets de classe de stockage S3 Glacier Flexible Retrieval et S3 Glacier Deep Archive, *ou* sur les objets des niveaux de stockage Archive Access et Deep Archive Access de S3 Intelligent-Tiering. Les opérations par lot ne peuvent pas fonctionner sur les deux types d’objets archivés dans la même tâche. Pour restaurer des objets des deux types, vous *devez* créer des tâches Batch Operations. 

## Chevauchement de restaurations
<a name="batch-ops-initiate-restore-object-in-progress"></a>

Si la tâche [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html) essaie de restaurer un objet dont la restauration est déjà en cours, les opérations par lot S3 procèdent comme suit.

La restauration de l’objet aboutit si l’une des conditions suivantes est vraie :
+ Comparée à la demande de restauration en cours, la valeur `ExpirationInDays` de cette tâche est la même et sa valeur `GlacierJobTier` est plus rapide.
+ La demande de restauration précédente est déjà terminée, et l’objet est actuellement disponible. Dans ce cas, les opérations par lot mettent à jour la date d’expiration de l’objet restauré pour qu’elle corresponde à la valeur `ExpirationInDays` spécifiée dans la demande de restauration en cours.

L’opération de restauration échoue pour l’objet si l’une des conditions suivantes est vraie :
+ La demande de restauration en cours n’est pas encore terminée, et la durée de restauration de cette tâche (spécifiée par la valeur `ExpirationInDays`) diffère de la durée de restauration spécifiée dans la demande de restauration en cours.
+ Le niveau de restauration de cette tâche (spécifié par la valeur `GlacierJobTier`) est inférieur ou égal au niveau de restauration spécifié dans la demande de restauration en cours.

## Limitations
<a name="batch-ops-initiate-restore-object-limitations"></a>

Les tâches `S3InitiateRestoreObjectOperation` présentent les limites suivantes :
+ Vous devez créer la tâche dans la même Région que les objets archivés.
+ Les opérations par lot S3 ne prennent pas en charge le niveau d’extraction `EXPEDITED`.
+ Une seule tâche de restauration de Batch Operations peut prendre en charge un manifeste contenant jusqu’à 4 milliards d’objets.

Pour plus d’informations sur la restauration des objets, consultez [Restauration d’un objet archivé](restoring-objects.md).

# Mettre à jour le chiffrement des objets
<a name="batch-ops-update-encryption"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. L'[https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html)opération Batch Operations met à jour le type de chiffrement côté serveur de plusieurs objets Amazon S3 avec une seule demande. Une seule `UpdateObjectEncryption` opération peut prendre en charge un manifeste contenant jusqu'à 20 milliards d'objets.

L'`UpdateObjectEncryption`opération est prise en charge pour toutes les classes de stockage Amazon S3 prises en charge par des buckets à usage général. Vous pouvez utiliser cette `UpdateObjectEncryption` opération pour remplacer le [chiffrement côté serveur par des clés gérées par Amazon S3 (SSE-S3) par des clés du [service de gestion des AWS clés (AWS KMS) (SSE-KMS), ou pour appliquer des clés](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingKMSEncryption.html) de compartiment](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingServerSideEncryption.html) S3. Vous pouvez également utiliser cette `UpdateObjectEncryption` opération pour modifier la clé KMS gérée par le client utilisée pour chiffrer vos données afin de vous conformer aux normes personnalisées de rotation des clés.

 Lorsque vous créez une tâche Batch Operations, vous pouvez générer une liste d'objets en fonction de l'emplacement de la source et des critères de filtre que vous spécifiez. Vous pouvez utiliser le `MatchAnyObjectEncryption` filtre pour générer une liste d'objets à partir de votre bucket que vous souhaitez mettre à jour et inclure dans votre manifeste. La liste d'objets générée inclut uniquement les objets du compartiment source avec le type de chiffrement côté serveur indiqué. Si vous sélectionnez SSE-KMS, vous pouvez éventuellement filtrer davantage vos résultats en spécifiant un ARN de clé KMS spécifique et un statut d'activation de la clé de compartiment. Pour plus d'informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html)et consultez [le `SSEKMSFilter` manuel *Amazon S3API Reference*](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SSEKMSFilter.html).

## Restrictions et considérations
<a name="batch-ops-encrypt-object-restrictions"></a>

Lorsque vous utilisez l'opération Batch `UpdateObjectEncryption` Operations, les restrictions et considérations suivantes s'appliquent :
+ L'`UpdateObjectEncryption`opération ne prend pas en charge les objets non chiffrés ni les objets chiffrés à l'aide d'un chiffrement double couche côté serveur (DSSE-KMS) ou de clés de chiffrement fournies par le client AWS KMS keys (SSE-C). En outre, vous ne pouvez pas spécifier le type `UpdateObjectEncryption` de demande de chiffrement SSE-S3.
+ Vous pouvez utiliser cette `UpdateObjectEncryption` opération pour mettre à jour des objets dans des compartiments sur lesquels le contrôle de version S3 est activé. Pour mettre à jour le type de chiffrement d'une version donnée, vous devez spécifier un ID de version dans votre `UpdateObjectEncryption` demande. Si vous ne spécifiez pas d'ID de version, la `UpdateObjectEncryption` demande agit sur la version actuelle de l'objet. Pour plus d’informations sur la gestion des versions S3, consultez [Conservation de plusieurs versions d’objets grâce à la gestion des versions S3](Versioning.md).
+ L'`UpdateObjectEncryption`opération échoue sur tout objet auquel un mode de rétention S3 Object Lock ou un blocage légal est appliqué. Si un objet est soumis à une période de conservation en mode gouvernance ou à une suspension légale, vous devez d'abord supprimer le statut Object Lock de l'objet avant d'émettre votre `UpdateObjectEncryption` demande. Vous ne pouvez pas utiliser cette `UpdateObjectEncryption` opération avec des objets auxquels une période de conservation du mode de conformité Object Lock est appliquée. Pour plus d'informations sur la fonctionnalité de verrouillage des objets S3, veuillez consulter [Verrouillage d’objets avec la fonctionnalité de verrouillage d’objet](object-lock.md).
+ `UpdateObjectEncryption`les requêtes sur les compartiments source pour lesquels la réplication en direct est activée ne déclencheront pas d'événements de réplication dans le compartiment de destination. Si vous souhaitez modifier le type de chiffrement des objets dans vos compartiments source et de destination, vous devez lancer des `UpdateObjectEncryption` demandes distinctes sur les objets des compartiments source et de destination.
+ Par défaut, toutes les `UpdateObjectEncryption` demandes qui spécifient une clé KMS gérée par le client sont limitées aux clés KMS détenues par le propriétaire du bucket. Compte AWS Si vous utilisez AWS Organizations, vous pouvez demander la possibilité d'utiliser des comptes AWS KMS keys appartenant à d'autres membres au sein de votre organisation en contactant AWS Support.
+ Si vous utilisez S3 Batch Replication pour répliquer des ensembles de données entre régions et que le type de chiffrement côté serveur de vos objets a déjà été mis à jour de SSE-S3 à SSE-KMS, vous aurez peut-être besoin d'autorisations supplémentaires. Dans le compartiment de la région source, vous devez disposer `kms:decrypt` d'autorisations. Ensuite, vous aurez besoin des `kms:encrypt` autorisations `kms:decrypt` et pour le compartiment dans la région de destination.
+ Fournissez un ARN de clé KMS complet dans votre `UpdateObjectEncryption` demande. Vous ne pouvez pas utiliser de nom d'alias ou d'ARN d'alias. Vous pouvez déterminer l'ARN complet de la clé KMS dans la console AWS KMS ou à l'aide de l'`DescribeKey`API AWS KMS.
+ Pour améliorer les performances de génération de manifestes lors de l'utilisation du `KmsKeyArn` filtre, utilisez-le conjointement avec d'autres filtres de métadonnées d'objets. Par exemple, vous pouvez combiner `KmsKeyArn` avec `MatchAnyPrefix``CreatedAfter`, ou `MatchAnyStorageClass` lorsque vous générez automatiquement un manifeste dans S3 Batch Operations.

Pour plus d’informations sur `UpdateObjectEncryption`, consultez [Mise à jour du chiffrement côté serveur pour les données existantes](update-sse-encryption.md).

## Autorisations requises
<a name="batch-ops-required-permissions"></a>

Pour effectuer l'`UpdateObjectEncryption`opération, ajoutez la politique Gestion des identités et des accès AWS (IAM) suivante à votre principal IAM (utilisateur, rôle ou groupe). Pour utiliser cette politique, *`amzn-s3-demo-bucket`* remplacez-la par le nom du compartiment contenant les objets pour lesquels vous souhaitez mettre à jour le chiffrement. Remplacez-le `amzn-s3-demo-manifest-bucket` par le nom du compartiment qui contient votre manifeste et remplacez-le `amzn-s3-demo-completion-report-bucket` par le nom du compartiment dans lequel vous souhaitez stocker votre rapport d'achèvement.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                 "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        },
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

Pour connaître la politique de confiance et la politique d'autorisations que vous devez associer au rôle IAM que le directeur du service S3 Batch Operations suppose d'exécuter les tâches Batch Operations en votre nom, consultez [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md) et[Mettre à jour le chiffrement des objets](batch-ops-iam-role-policies.md#batch-ops-update-encryption-policies).

# Création d'une tâche Batch Operations pour mettre à jour le chiffrement des objets
<a name="batch-ops-update"></a>

Pour mettre à jour le type de chiffrement côté serveur de plusieurs objets Amazon S3 avec une seule demande, vous pouvez utiliser S3 Batch Operations. Vous pouvez utiliser S3 Batch Operations via la console Amazon S3 AWS Command Line Interface (AWS CLI) AWS SDKs ou l'API REST Amazon S3.

## À l'aide du AWS CLI
<a name="batch-ops-example-cli-update-job"></a>

Pour exécuter les commandes suivantes, vous devez les avoir AWS CLI installées et configurées. Si ce n'est pas le cas AWS CLI , consultez la section [Installer ou mettre à jour vers la dernière version du AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) *Guide de l'AWS Command Line Interface utilisateur*.

Vous pouvez également exécuter des AWS CLI commandes depuis la console en utilisant AWS CloudShell. AWS CloudShell est un shell pré-authentifié basé sur un navigateur que vous pouvez lancer directement depuis le. AWS Management Console Pour plus d'informations, voir [Qu'est-ce que c'est CloudShell ?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) et [Mise en route AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) dans le *guide de AWS CloudShell l'utilisateur*.

**Example 1 — Créez une tâche Batch Operations qui met à jour les objets chiffrés d'une clé KMS AWS KMS key à l'autre**  
L'exemple suivant montre comment créer une tâche S3 Batch Operations qui met à jour les paramètres de chiffrement pour plusieurs objets de votre bucket à usage général. Cette commande crée une tâche qui modifie les objets chiffrés avec une clé AWS Key Management Service (AWS KMS) pour utiliser une autre clé KMS. Cette tâche génère et enregistre également un manifeste des objets concernés et crée un rapport des résultats. Pour utiliser cette commande, remplacez les `user input placeholders` par vos propres informations.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSEKMS": { "KmsKeyArn": "kms-key-ARN-to-match" } }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Pour de meilleures performances, nous vous recommandons d'utiliser le `KmsKeyArn` filtre conjointement avec d'autres filtres de métadonnées d'objets`MatchAnyPrefix`, tels que`CreatedAfter`, ou`MatchAnyStorageClass`.

**Example 2 — Créez une tâche Batch Operations qui met à jour les objets chiffrés SSE-S3 en SSE-KMS**  
L'exemple suivant montre comment créer une tâche S3 Batch Operations qui met à jour les paramètres de chiffrement pour plusieurs objets de votre bucket à usage général. Cette commande crée une tâche qui modifie les objets chiffrés en utilisant le chiffrement côté serveur avec les clés gérées Amazon S3 (SSE-S3) pour utiliser le chiffrement côté serveur avec les clés () AWS Key Management Service (SSE-KMS AWS KMS) à la place. Cette tâche génère et enregistre également un manifeste des objets concernés et crée un rapport des résultats. Pour utiliser cette commande, remplacez les `user input placeholders` par vos propres informations.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSES3": {} }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Pour de meilleures performances, nous vous recommandons d'utiliser le `KmsKeyArn` filtre conjointement avec d'autres filtres de métadonnées d'objets`MatchAnyPrefix`, tels que`CreatedAfter`, ou`MatchAnyStorageClass`.

# Conservation d’un verrouillage d’objet S3
<a name="batch-ops-retention-date"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. Vous pouvez utiliser l’opération de **Rétention Verrouillage d’objet** pour appliquer des dates de rétention à vos objets en mode *gouvernance* ou en mode *conformité*. Ces modes de rétention appliquent différents niveaux de protection. Vous pouvez appliquer l’un ou l’autre des modes de rétention à n’importe quelle version d’objet. Les dates de rétention, comme les conservations légales, empêchent l’écrasement ou la suppression d’un objet. Amazon S3 stocke la date de fin de rétention (*Rétention jusqu’à la date*) spécifiée dans les métadonnées de l’objet et protège la version spécifiée de cette version de l’objet jusqu’à l’expiration de la période de rétention.

Vous pouvez utiliser les opérations par lot S3 avec le verrouillage d’objet pour gérer simultanément les dates de rétention de nombreux objets Amazon S3. Vous spécifiez la liste des objets cibles dans votre manifeste et l’envoyez à Batch Operations pour les finaliser. Pour plus d’informations, consultez Verrouillage d’objet S3 [Périodes de rétention](object-lock.md#object-lock-retention-periods). 

Votre tâche d’opérations par lot S3 avec des dates de conservation s’exécute jusqu’à la fin, jusqu’à son annulation ou jusqu’à ce qu’un état d’échec soit atteint. Nous vous recommandons d’utiliser les opérations par lot S3 et la rétention du verrouillage d’objet S3 lorsque vous souhaitez ajouter, modifier ou supprimer la date de rétention de nombreux objets avec une seule demande. 

Batch Operations vérifie que le verrouillage d’objet est activé sur votre compartiment avant de traiter les clés du manifeste. Pour effectuer les opérations et la validation, Batch Operations a besoin des `s3:PutObjectRetention` autorisations `s3:GetBucketObjectLockConfiguration` et d'un rôle Gestion des identités et des accès AWS (IAM) pour permettre à Batch Operations d'appeler Object Lock en votre nom. Pour de plus amples informations, veuillez consulter [Considérations relatives au verrouillage d’objet](object-lock-managing.md).

Pour plus d’informations sur l’utilisation de cette opération avec l’API REST, consultez `S3PutObjectRetention` dans l’opération [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) dans la *Référence d’API Amazon Simple Storage Service*. 

Pour un exemple AWS Command Line Interface (AWS CLI) d'utilisation de cette opération, consultez[À l'aide du AWS CLI](batch-ops-object-lock-retention.md#batch-ops-cli-object-lock-retention-example). Pour un AWS SDK pour Java exemple, voir[Utilisation du AWS SDK pour Java](batch-ops-object-lock-retention.md#batch-ops-examples-java-object-lock-retention). 

## Restrictions et limitations
<a name="batch-ops-retention-date-restrictions"></a>

Lorsque vous utilisez les opérations par lot pour appliquer des périodes de conservation du verrouillage d’objet, les restrictions et limites suivantes s’appliquent : 
+ Les opérations par lot S3 n’apportent aucune modification au niveau du compartiment.
+ La gestion des versions et le verrouillage d’objet S3 doivent être configurés sur le compartiment où la tâche est effectuée.
+ Tous les objets répertoriés dans le manifeste doivent se trouver dans le même compartiment.
+ L’opération fonctionne sur la dernière version de l’objet, sauf si une version est explicitement spécifiée dans le manifeste.
+ Vous avez besoin d’une autorisation `s3:PutObjectRetention` dans votre rôle IAM pour utiliser une tâche de **Rétention Verrouillage d’objet**.
+ L’autorisation IAM `s3:GetBucketObjectLockConfiguration` est nécessaire pour confirmer que le verrouillage d’objet est activé pour le compartiment S3 pour lequel vous effectuez cette tâche. 
+ Vous ne pouvez prolonger la période de rétention des objets qu’avec des dates de rétention en mode `COMPLIANCE` appliquées. Cette période de rétention ne peut pas être raccourcie.
+ Une seule tâche de rétention du verrouillage d’objet S3 peut prendre en charge un manifeste contenant jusqu’à 20 milliards d’objets.

# Mise en suspens juridique du verrouillage des objets S3
<a name="batch-ops-legal-hold"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 pour effectuer des opérations par lot à grande échelle au niveau d’objets Amazon S3. Vous pouvez utiliser l’opération **Conservation légale du verrouillage d’objet** pour activer la conservation légale d’une version d’objet. À l’instar d’une période de rétention, une conservation légale empêche une version d’objet d’être remplacée ou supprimée. Cependant, une conservation légale n’est associée à aucune période de rétention et reste en vigueur jusqu’à sa suppression. 

Vous pouvez utiliser les opérations par lot S3 avec le verrouillage d’objet pour ajouter des conservations légales à plusieurs objets Amazon S3 à la fois. Pour ce faire, spécifiez une liste des objets cibles dans votre manifeste et envoyez cette liste aux opérations par lot. Votre tâche d’opérations par lot S3 **Conservation légale du verrouillage d’objet** s’exécute jusqu’à la fin, jusqu’à son annulation ou jusqu’à ce qu’un état d’échec soit atteint.

S3 Batch Operations vérifie que le verrouillage d’objet est activé sur votre compartiment S3 avant de traiter les objets du manifeste. Pour effectuer les opérations sur les objets et la validation au niveau du compartiment, S3 Batch Operations a besoin du rôle `s3:PutObjectLegalHold` and `s3:GetBucketObjectLockConfiguration` in an Gestion des identités et des accès AWS (IAM). Ces autorisations permettent aux opérations par lot S3 d’appeler le verrouillage d’objet S3 en votre nom. 

Lorsque vous créez la tâche d’opérations par lot S3 pour supprimer la conservation légale, il vous suffit de spécifier `Off` comme statut de la conservation légale. Pour de plus amples informations, veuillez consulter [Considérations relatives au verrouillage d’objet](object-lock-managing.md).

Pour plus d’informations sur l’utilisation de cette opération avec l’API REST Amazon S3, consultez `S3PutObjectLegalHold` dans l’opération [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) dans la *Référence des API Amazon Simple Storage Service*. 

Pour un exemple d’utilisation de cette opération, consultez [Utilisation du AWS SDK pour Java](batch-ops-legal-hold-off.md#batch-ops-examples-java-object-lock-legalhold). 

## Restrictions et limitations
<a name="batch-ops-legal-hold-restrictions"></a>

Lorsque vous utilisez les opérations par lot pour appliquer ou supprimer une conservation légale du verrouillage d’objet, les restrictions et limites suivantes s’appliquent : 
+ Les opérations par lot S3 n’apportent aucune modification au niveau du compartiment.
+ Tous les objets répertoriés dans le manifeste doivent se trouver dans le même compartiment.
+ La gestion des versions et le verrouillage d’objet S3 doivent être configurés sur le compartiment où la tâche est effectuée.
+ L’opération **Conservation légale du verrouillage d’objet** fonctionne sur la dernière version de l’objet, sauf si une version est explicitement spécifiée dans le manifeste.
+ L’autorisation `s3:PutObjectLegalHold` est nécessaire dans votre rôle IAM pour ajouter ou supprimer une conservation légale des objets.
+ L’autorisation IAM `s3:GetBucketObjectLockConfiguration` est nécessaire pour confirmer que le verrouillage d’objet est activé pour le compartiment S3 pour lequel vous effectuez cette tâche. 
+ Une seule tâche de conservation légale du verrouillage d’objet S3 peut prendre en charge un manifeste contenant jusqu’à 20 milliards d’objets.
+ [Copie d’objets](batch-ops-copy-object.md)
+ [Calcul des sommes de contrôle](batch-ops-compute-checksums.md)
+ [Delete all object tags (Supprimer toutes les étiquettes des objets)](batch-ops-delete-object-tagging.md)
+ [AWS Lambda Fonction Invoke](batch-ops-invoke-lambda.md)
+ [Replace all object tags (Remplacer toutes les étiquettes des objets)](batch-ops-put-object-tagging.md)
+ [Remplacer une liste de contrôle d’accès (ACL)](batch-ops-put-object-acl.md)
+ [Restauration d’objets à l’aide d’opérations par lot](batch-ops-initiate-restore-object.md)
+ [Mettre à jour le chiffrement des objets](batch-ops-update-encryption.md)
+ [Réplication d’objets existants via la réplication par lot](s3-batch-replication-batch.md)
+ [Conservation d’un verrouillage d’objet S3](batch-ops-retention-date.md)
+ [Mise en suspens juridique du verrouillage des objets S3](batch-ops-legal-hold.md)

# Gestion des tâches d’opérations par lot S3
<a name="batch-ops-managing-jobs"></a>

Simple Storage Service (Amazon S3) fournit un ensemble d’outils puissants pour vous aider à gérer vos tâches d’opérations par lot S3 après les avoir créées. Cette section décrit les opérations que vous pouvez utiliser pour gérer et suivre vos tâches à l'aide de la console Amazon S3 AWS Command Line Interface (AWS CLI) ou de l'API REST Amazon S3. AWS SDKs

**Topics**
+ [Utilisation de la console Simple Storage Service (Amazon S3) pour gérer vos tâches d’opérations par lot S3](#batch-ops-manage-console)
+ [Liste des tâches](batch-ops-list-jobs.md)
+ [Affichage des détails de la tâche](batch-ops-job-details.md)
+ [Affectation d’une priorité de tâche](batch-ops-job-priority.md)

## Utilisation de la console Simple Storage Service (Amazon S3) pour gérer vos tâches d’opérations par lot S3
<a name="batch-ops-manage-console"></a>

À l’aide de la console, vous pouvez gérer vos tâches d’opérations par lot S3. Par exemple, vous pouvez :
+ Afficher les tâches actives et mises en file d’attente
+ Vérifier le statut d'une tâche
+ Modifier la priorité d’une tâche
+ Confirmer et exécuter une tâche
+ Cloner une tâche
+ Annuler une tâche

**Pour gérer les opérations par lot via la console**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Opérations par lot**.

1. Choisissez le travail que vous souhaitez gérer.

# Liste des tâches
<a name="batch-ops-list-jobs"></a>

Vous pouvez récupérer une liste des tâches d’opérations par lot S3. La liste fournit des informations sur les tâches qui ne sont pas encore terminées et sur les tâches terminées au cours des 90 derniers jours. Pour chaque tâche, la liste inclut des détails tels que l'identifiant de la tâche, la description, la priorité, le statut actuel et le nombre de tâches réussies et échouées.

Vous pouvez filtrer la liste de tâches par statut. Si vous récupérez la liste à l'aide de la console, vous pouvez également rechercher vos offres d'emploi par description ou par identifiant et les filtrer par Région AWS.

## Génération d’une liste des tâches `Active` et `Complete`
<a name="batch-ops-example-cli-active-jobs"></a>

L' AWS CLI exemple suivant permet d'obtenir une liste de `Complete` tâches `Active` et. Pour utiliser cet exemple, remplacez les *`user input placeholders`* par vos propres informations.

```
aws s3control list-jobs \
    --region us-west-2 \
    --account-id account-id \
    --job-statuses '["Active","Complete"]' \
    --max-results 20
```

Pour plus d'informations et des exemples, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/list-jobs.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/list-jobs.html) dans la *Référence des commandes AWS CLI *.

# Affichage des détails de la tâche
<a name="batch-ops-job-details"></a>

Si vous souhaitez obtenir plus d'informations sur une tâche Amazon S3 Batch Operations que celles que vous pouvez obtenir en répertoriant les tâches, vous pouvez consulter tous les détails d'une seule tâche. Vous pouvez consulter les détails des tâches qui ne sont pas encore terminées ou des tâches terminées au cours des 90 derniers jours. Outre les informations renvoyées dans une liste de tâches, les détails d'une seule tâche incluent des informations telles que : 
+ Les paramètres de fonctionnement.
+ Informations sur le manifeste.
+ Informations sur le rapport d'achèvement, si vous en avez configuré un lors de la création de la tâche.
+ Le nom de ressource Amazon (ARN) du rôle Gestion des identités et des accès AWS (IAM) que vous avez attribué pour exécuter la tâche.

En affichant les détails d’une tâche individuelle, vous pouvez accéder à la totalité de la configuration d’une tâche. Pour consulter les détails d'une tâche, vous pouvez utiliser la console Amazon S3 ou le AWS Command Line Interface (AWS CLI).

## Obtenir la description d’une tâche d’opérations par lot S3 dans la console Amazon S3
<a name="batch-ops-console-job-description"></a>

**Pour afficher la description d’une tâche d’opérations par lot à l’aide de la console**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Opérations par lot**.

1. Choisissez l’ID de la tâche spécifique pour en afficher les détails.

## Obtenez une description du poste de S3 Batch Operations dans le AWS CLI
<a name="batch-ops-example-cli-job-description"></a>

L’exemple suivant permet d’obtenir la description d’une tâche d’opérations par lot S3 à l’aide de l’ AWS CLI. Pour utiliser l’exemple de commande suivant, remplacez les *`user input placeholders`* par vos propres informations.

```
aws s3control describe-job \
--region us-west-2 \
--account-id account-id \
--job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
```

Pour plus d'informations et des exemples, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/describe-job.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/describe-job.html) dans la *Référence des commandes AWS CLI *.

# Affectation d’une priorité de tâche
<a name="batch-ops-job-priority"></a>

Vous pouvez attribuer à chaque tâche d’opérations par lot Amazon S3 une priorité numérique, qui peut être n’importe quel entier positif. Les opérations par lot S3 classent les tâches par ordre de priorité en fonction de la priorité attribuée. Les tâches avec une priorité élevée (ou une valeur d’entier supérieure pour le paramètre de priorité) sont évaluées en premier. La priorité est déterminée par ordre décroissant. Par exemple, une file d’attente de tâches avec une valeur de priorité 10 se voit accorder la préférence en termes de planification par rapport à une file d’attente de tâches avec une valeur de priorité 1. 

Vous pouvez modifier la priorité d’une tâche pendant son exécution. Si vous envoyez une nouvelle tâche avec une priorité supérieure alors qu’une tâche est en cours d’exécution, la tâche avec la priorité inférieure peut s’interrompre pour permettre à la tâche avec la priorité supérieure de s’exécuter.

La modification de la priorité d’une tâche n’affecte pas sa vitesse de traitement.

**Note**  
Les opérations par lot S3 respectent les priorités de tâche dans la mesure du possible. Bien que les tâches avec des priorités supérieures soient généralement prioritaires sur les tâches avec des priorités inférieures, Amazon S3 ne garantit pas un ordre strict des tâches.

## Utilisation de la console S3
<a name="batch-ops-example-console-update-job-priority"></a>

**Comment mettre à jour la priorité des tâches dans la console Amazon S3**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Batch Operations** (Opérations par lot).

1. Sélectionnez la tâche spécifique que vous souhaitez gérer.

1. Choisissez **Actions**. Dans la liste déroulante, choisissez **Update priority** (Mettre à jour la priorité).

## À l'aide du AWS CLI
<a name="batch-ops-example-cli-update-job-priority"></a>

L’exemple suivant met à jour la priorité de la tâche à l’aide de l’ AWS CLI. Un nombre plus élevé indique une priorité d’exécution plus élevée. Pour utiliser l’exemple de commande suivant, remplacez les *`user input placeholders`* par vos propres informations.

```
aws s3control update-job-priority \
    --region us-west-2 \
    --account-id account-id \
    --priority 98 \
    --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
```

## À l'aide du AWS SDK pour Java
<a name="batch-ops-examples-java-update-job-priority."></a>

Pour mettre à jour la priorité d'une tâche S3 Batch Operations à l'aide du AWS SDK for Java, vous pouvez utiliser le client S3Control pour modifier la priorité d'exécution de la tâche, qui détermine l'ordre dans lequel les tâches sont traitées par rapport aux autres tâches de la file d'attente.

Pour plus d’informations sur la priorité des tâches, consultez [Affectation d’une priorité de tâche](#batch-ops-job-priority).

Pour des exemples de mise à jour de la priorité d'une tâche avec le AWS SDK for Java, [consultez la section Mettre à jour la priorité d'une tâche par lots](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobPriority_section.html) dans *le manuel Amazon S3 API Reference*.

# Suivi de l’état de la tâche et des rapports d’achèvement
<a name="batch-ops-job-status"></a>

Grâce à S3 Batch Operations, vous pouvez afficher et mettre à jour l’état d’une tâche, ajouter des notifications et effectuer la journalisation, suivre les échecs de tâche et générer des rapports d’achèvements. 

**Topics**
+ [Statuts de la tâche](#batch-ops-job-status-table)
+ [Mise à jour de l’état](#updating-job-statuses)
+ [Notifications et journalisation](#batch-ops-notifications)
+ [Suivi de l’échec d’une tâche](#batch-ops-job-status-failure)
+ [Rapports de fin de tâche](#batch-ops-completion-report)
+ [Exemples : suivi d'une tâche S3 Batch Operations sur Amazon EventBridge via AWS CloudTrail](batch-ops-examples-event-bridge-cloud-trail.md)
+ [Exemples : Rapports de fin de tâche d’opérations par lot S3](batch-ops-examples-reports.md)

## Statuts de la tâche
<a name="batch-ops-job-status-table"></a>

Après la création et l’exécution d’une tâche, celle-ci passe par une série d’états. Le tableau suivant décrit les statuts et les transitions possibles entre eux. 


| Statut | Description | Transitions | 
| --- | --- | --- | 
| `New` | Une tâche commence à l’état `New` lorsque vous la créez. | Une tâche passe automatiquement au statut `Preparing` quand Amazon S3 commence à traiter l’objet de manifeste. | 
| `Preparing` | Amazon S3 traite l’objet manifeste et d’autres paramètres de tâche pour configurer et exécuter la tâche. | Une tâche passe automatiquement au statut `Ready` une fois qu’Amazon S3 a terminé de traiter l’objet de manifeste et les autres paramètres. La tâche peut ensuite exécuter l’opération spécifiée pour les objets répertoriés dans le manifeste.Si la tâche nécessite une confirmation avant l’exécution, ce qui est, par exemple, le cas lors de la création d’une tâche avec la console Amazon S3, celle-ci passe du statut `Preparing` à `Suspended`. Elle reste dans l’état `Suspended` jusqu’à ce que vous confirmiez son exécution. | 
| `Suspended` | La tâche nécessite que vous confirmiez son exécution. Seules les tâches créées avec la console Amazon S3 nécessitent une confirmation. Une tâche créée à l’aide de la console passe à l’état `Suspended` juste après `Preparing`. Une fois que vous confirmez que vous souhaitez exécuter la tâche et que la tâche passe à l’était `Ready`, elle ne revient jamais à l’état `Suspended`. | Une fois que vous confirmez que vous souhaitez exécuter la tâche, son état devient `Ready`. | 
| `Ready` | Amazon S3 peut commencer à exécuter les opérations demandées pour les objets. | Une tâche passe automatiquement au statut `Active` quand Amazon S3 commence à l’exécuter. La durée pendant laquelle une tâche reste dans l’état `Ready` dépend du niveau de priorité et de la durée des autres tâches qui sont déjà en cours d’exécution. | 
| `Active` | Amazon S3 effectue l’opération demandée pour les objets répertoriés dans le manifeste. Pendant qu'une tâche est en cours`Active`, vous pouvez suivre sa progression à l'aide de la console Amazon S3 ou de l'`DescribeJob`opération via l'API REST AWS CLI, ou AWS SDKs. | Une tâche quitte l’état `Active` lorsque plus aucune opération n’est exécutée sur les objets. Ce comportement peut se produire automatiquement, par exemple lorsqu’une tâche aboutit ou échoue. Ce comportement peut également être le résultat d’une action utilisateur, telle que l’annulation d’une tâche. L’état dans lequel passe la tâche dépend de la raison de la transition. | 
| `Pausing` | La tâche passe d’un certain état à `Paused`. | Une tâche passe automatiquement à l’état `Paused` quand l’étape `Pausing` est terminée. | 
| `Paused` | Une tâche peut passer à l’état `Paused` si vous soumettez une autre tâche de priorité plus élevée alors que cette tâche est exécutée. | Une tâche `Paused` retourne automatiquement à l’état `Active` lorsque les tâches de priorité plus élevée qui bloquent l’exécution de cette tâche se terminent, échouent ou sont suspendues. | 
| `Completing` | La tâche passe d’un certain état à `Complete`. | Une tâche passe automatiquement à l’état `Complete` quand l’étape `Completing` est terminée. | 
| `Complete` | La tâche a fini d’effectuer l’opération demandée sur tous les objets répertoriés dans le manifeste. L’opération peut avoir abouti ou échoué pour chaque objet. Si vous avez configuré la tâche de sorte à générer un rapport d’achèvement, ce rapport est disponible dès que la tâche passe à l’état `Complete`. | `Complete` est un état final. Une fois qu’une tâche atteint l’état `Complete`, elle ne passe plus à aucun autre état. | 
| `Cancelling` | La tâche passe à l’état `Cancelled`. | Une tâche passe automatiquement à l'état `Cancelled` quand l'étape `Cancelling` est terminée. | 
| `Cancelled` | Vous avez demandé que la tâche soit annulée, ce qui a été fait par les opérations par lot S3. Cette tâche n’enverra plus de nouvelles demandes à Amazon S3. | `Cancelled` est un état final. Après qu’une tâche atteint l’état `Cancelled`, elle ne passe plus à aucun autre état. | 
| `Failing` | La tâche passe à l'état `Failed`. | Une tâche passe automatiquement à l’état `Failed` une fois que l’étape `Failing` est terminée. | 
| `Failed` | La tâche a échoué et n’est plus en cours d’exécution. Pour de plus amples informations sur les échecs de tâche, consultez [Suivi de l’échec d’une tâche](#batch-ops-job-status-failure). | `Failed` est un état final. Après qu’une tâche atteint l’état `Failed`, elle ne passe plus à aucun autre état. | 

## Mise à jour de l’état
<a name="updating-job-statuses"></a>

Les AWS SDK pour Java exemples suivants AWS CLI mettent à jour le statut d'une tâche Batch Operations. Pour plus d’informations sur l’utilisation de la console Amazon S3 pour gérer les tâches d’opérations par lot, consultez [Utilisation de la console Simple Storage Service (Amazon S3) pour gérer vos tâches d’opérations par lot S3](batch-ops-managing-jobs.md#batch-ops-manage-console).

### À l'aide du AWS CLI
<a name="batch-ops-example-cli-update-job-status"></a>

Pour utiliser les exemples de commandes suivants, remplacez les *`user input placeholders`* par vos propres informations. 
+ Si vous n’avez pas spécifié le paramètre `--no-confirmation-required` dans la commande `create-job` précédente, la tâche reste à l’état suspendu jusqu’à ce que vous confirmiez cette tâche en définissant son statut sur `Ready`. Amazon S3 rend ensuite la tâche éligible à l’exécution.

  ```
  aws s3control update-job-status \
      --region us-west-2 \
      --account-id 123456789012 \
      --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
      --requested-job-status 'Ready'
  ```
+ Annulez la tâche en définissant son statut sur `Cancelled`.

  ```
  aws s3control update-job-status \
       --region us-west-2 \
       --account-id 123456789012 \
       --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
       --status-update-reason "No longer needed" \
       --requested-job-status Cancelled
  ```

### Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-update-job-status"></a>

Pour des exemples de mise à jour du statut d'une tâche avec le AWS SDK for Java, [consultez la section Mettre à jour le statut d'une tâche par lots](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobStatus_section.html) dans *le manuel Amazon S3 API Reference*.

## Notifications et journalisation
<a name="batch-ops-notifications"></a>

En plus de demander des rapports d’achèvement, vous pouvez également capturer, examiner et auditer l’activité de Batch Operations à l’aide d’ AWS CloudTrail. Puisque les opérations par lot utilisent des opérations d’API Amazon S3 existantes pour exécuter des tâches, ces dernières émettent également les mêmes événements que si vous les appeliez directement. Dès lors, vous pouvez suivre et enregistrer la progression de votre tâche et l’ensemble de ses tâches à l’aide des mêmes outils et processus de notification, de journalisation et d’audit que vous utilisez déjà avec Amazon S3. Pour plus d’informations, consultez les exemples dans les sections suivantes.

**Note**  
Batch Operations génère à la fois des événements de gestion et de données CloudTrail lors de l'exécution des tâches. Le volume de ces événements évolue avec le nombre de clés dans le manifeste de chaque tâche. Pour plus d'informations, consultez la page de [CloudTrail tarification](https://aws.amazon.com/cloudtrail/pricing/), qui contient des exemples illustrant la façon dont les prix changent en fonction du nombre de sentiers que vous avez configurés dans votre compte. Pour découvrir comment configurer et journaliser des événements en fonction de vos besoins, consultez [Création de votre premier journal d’activité](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-tutorial.html#tutorial-step2) dans le *Guide de l’utilisateur AWS CloudTrail *.

Pour de plus amples informations sur les évènements Amazon S3, consultez [Notifications d'événements Amazon S3](EventNotifications.md). 

## Suivi de l’échec d’une tâche
<a name="batch-ops-job-status-failure"></a>

Si une tâche d’opérations par lot S3 rencontre un problème qui l’empêche de s’exécuter avec succès, comme le fait de ne pas pouvoir lire le manifeste spécifié, elle échoue. Lorsqu’une tâche échoue, elle génère un ou plusieurs codes d’échec ou causes d’échec. La fonctionnalité d’opérations par lot S3 stocke les codes et les causes d’échec avec la tâche afin que vous puissiez les consulter en demandant les détails de la tâche. Si vous avez demandé un rapport d’achèvement, ce dernier inclut également les codes et les raisons d’échec.

Pour empêcher les tâches d’exécuter un grand nombre d’opérations infructueuses, Amazon S3 impose un seuil d’échec à chaque tâche d’opérations par lot. Lorsqu’une tâche a exécuté au moins 1 000 tâches, Amazon S3 surveille le taux d’échec. Si, à un moment donné, le taux d’échec (le nombre de tâches ayant échoué par rapport au nombre total de tâches exécutées) dépasse 50 %, la tâche échoue. Lorsqu’une tâche échoue parce qu’elle dépasse ce seul, vous pouvez identifier la cause de cet échec. Il se peut, par exemple, que vous ayez inclus par erreur des objets dans le manifeste qui ne sont pas dans le compartiment spécifié. Après avoir corrigé les erreurs, vous pouvez renvoyer la tâche.

**Note**  
La fonctionnalité d’opérations par lot S3 fonctionne de manière asynchrone et n’exécute pas nécessairement les tâches dans l’ordre d’apparition des objets dans le manifeste. Dès lors, vous ne pouvez pas utiliser l’ordre du manifeste pour déterminer les tâches d’objets qui réussissent et celles qui échouent. Vous pouvez plutôt examiner le rapport d'achèvement de la tâche (si vous en avez demandé un) ou consulter vos journaux d' AWS CloudTrail événements pour déterminer la source des échecs.

## Rapports de fin de tâche
<a name="batch-ops-completion-report"></a>

Lorsque vous créez une tâche, vous pouvez demander un rapport d’achèvement. Si S3 Batch Operations invoque avec succès au moins une tâche, Amazon S3 génère un rapport d’achèvement après avoir terminé l’exécution des tâches, après avoir échoué ou après avoir été annulé. Vous pouvez configurer le rapport d’achèvement pour y inclure toutes les tâches ou uniquement celles ayant échoué. 

Le rapport d’achèvement inclut la configuration et le statut des tâches, ainsi que des informations sur chaque tâche, y compris la clé d’objet et la version, le statut, les codes d’erreur et la description des erreurs. Les rapports d’achèvement fournissent un moyen facile de consulter les résultats de vos tâches dans un format consolidé sans nécessiter de configuration supplémentaire. Les rapports d’achèvement sont chiffrés à l’aide du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). Pour obtenir un exemple de rapport d’achèvement, consultez [Exemples : Rapports de fin de tâche d’opérations par lot S3](batch-ops-examples-reports.md). 

Si vous ne configurez pas de rapport d'achèvement, vous pouvez toujours surveiller et auditer votre tâche et ses tâches à l'aide d' CloudTrail Amazon CloudWatch. Pour plus d’informations, consultez les rubriques suivantes :

**Topics**
+ [Statuts de la tâche](#batch-ops-job-status-table)
+ [Mise à jour de l’état](#updating-job-statuses)
+ [Notifications et journalisation](#batch-ops-notifications)
+ [Suivi de l’échec d’une tâche](#batch-ops-job-status-failure)
+ [Rapports de fin de tâche](#batch-ops-completion-report)
+ [Exemples : suivi d'une tâche S3 Batch Operations sur Amazon EventBridge via AWS CloudTrail](batch-ops-examples-event-bridge-cloud-trail.md)
+ [Exemples : Rapports de fin de tâche d’opérations par lot S3](batch-ops-examples-reports.md)

# Exemples : suivi d'une tâche S3 Batch Operations sur Amazon EventBridge via AWS CloudTrail
<a name="batch-ops-examples-event-bridge-cloud-trail"></a>

L’activité de la tâche d’opérations par lot Amazon S3 est enregistrée en tant qu’événements dans AWS CloudTrail. Vous pouvez créer une règle personnalisée dans Amazon EventBridge et envoyer ces événements à la ressource de notification cible de votre choix, telle qu'Amazon Simple Notification Service (Amazon SNS). 

**Note**  
Amazon EventBridge est le moyen préféré pour gérer vos événements. Amazon CloudWatch Events est le même service sous-jacent et la même API, mais EventBridge ils EventBridge fournissent davantage de fonctionnalités. Les modifications que vous apportez dans l'une CloudWatch ou l'autre console ou qui EventBridge apparaissent dans chaque console. Pour plus d'informations, consultez le *[guide de EventBridge l'utilisateur Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*.

**Topics**
+ [Événements S3 Batch Operations enregistrés dans CloudTrail](#batch-ops-examples-cloud-trail-events)
+ [EventBridge règle de suivi des événements liés aux tâches S3 Batch Operations](#batch-ops-examples-event-bridge)

## Événements S3 Batch Operations enregistrés dans CloudTrail
<a name="batch-ops-examples-cloud-trail-events"></a>



Lorsqu'une tâche Batch Operations est créée, elle est enregistrée en tant qu'`JobCreated`événement dans CloudTrail. Au fur et à mesure que la tâche s'exécute, elle change d'état pendant le traitement et d'autres `JobStatusChanged` événements sont enregistrés dans CloudTrail. Vous pouvez afficher ces événements sur la [consoleCloudTrail ](https://console.aws.amazon.com/cloudtrail). Pour plus d'informations CloudTrail, consultez le [https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html).

**Note**  
Seuls les `status-change` événements du job S3 Batch Operations sont enregistrés dans CloudTrail.

**Example — Événement d'achèvement de la tâche S3 Batch Operations enregistré par CloudTrail**  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-05T18:25:30Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "f907577b-bf3d-4c53-b9ed-8a83a118a554",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "recipientAccountId": "123412341234",
    "serviceEventDetails": {
        "jobId": "d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "jobArn": "arn:aws:s3:us-west-2:181572960644:job/d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "status": "Complete",
        "jobEventId": "b268784cf0a66749f1a05bce259804f5",
        "failureCodes": [],
        "statusChangeReason": []
    }
}
```

## EventBridge règle de suivi des événements liés aux tâches S3 Batch Operations
<a name="batch-ops-examples-event-bridge"></a>

L'exemple suivant montre comment créer une règle dans Amazon EventBridge pour capturer les événements S3 Batch Operations enregistrés par AWS CloudTrail une cible de votre choix.

Pour ce faire, vous devez créer une règle en suivant toutes les étapes de la section [Création de EventBridge règles réagissant aux événements](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html). Vous collez la stratégie de modèle d’événement personnalisé d’opérations par lot S3 suivante, le cas échéant, et vous choisissez le service cible de votre choix.

**Stratégie de modèle d’événement personnalisé d’opérations par lots S3**

```
{
    "source": [
        "aws.s3"
    ],
    "detail-type": [
        "AWS Service Event via CloudTrail"
    ],
    "detail": {
        "eventSource": [
            "s3.amazonaws.com"
        ],
        "eventName": [
            "JobCreated",
            "JobStatusChanged"
        ]
    }
}
```

 Les exemples suivants présentent deux événements Batch Operations envoyés à Amazon Simple Queue Service (Amazon SQS) à partir EventBridge d'une règle d'événement. Une tâche d’opérations par lot passe par de nombreux états différents pendant son traitement (`New`, `Preparing`, `Active`, etc.), de sorte que vous pouvez vous attendre à recevoir plusieurs messages pour chaque tâche.

**Example - Exemple d’événement JobCreated**  

```
{
    "version": "0",
    "id": "51dc8145-541c-5518-2349-56d7dffdf2d8",
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.s3",
    "account": "123456789012",
    "time": "2020-02-27T15:25:49Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "11112223334444",
            "invokedBy": "s3.amazonaws.com"
        },
        "eventTime": "2020-02-27T15:25:49Z",
        "eventSource": "s3.amazonaws.com",
        "eventName": "JobCreated",
        "awsRegion": "us-east-1",
        "sourceIPAddress": "s3.amazonaws.com",
        "userAgent": "s3.amazonaws.com",
        "eventID": "7c38220f-f80b-4239-8b78-2ed867b7d3fa",
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
            "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
            "status": "New",
            "jobEventId": "f177ff24f1f097b69768e327038f30ac",
            "failureCodes": [],
            "statusChangeReason": []
        }
    }
}
```

**Example — Événement de fin de tâche JobStatusChanged**  

```
{
  "version": "0",
  "id": "c8791abf-2af8-c754-0435-fd869ce25233",
  "detail-type": "AWS Service Event via CloudTrail",
  "source": "aws.s3",
  "account": "123456789012",
  "time": "2020-02-27T15:26:42Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "eventVersion": "1.05",
    "userIdentity": {
      "accountId": "1111222233334444",
      "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-27T15:26:42Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "eventID": "0238c1f7-c2b0-440b-8dbd-1ed5e5833afb",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "serviceEventDetails": {
      "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
      "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
      "status": "Complete",
      "jobEventId": "51f5ac17dba408301d56cd1b2c8d1e9e",
      "failureCodes": [],
      "statusChangeReason": []
    }
  }
}
```

# Exemples : Rapports de fin de tâche d’opérations par lot S3
<a name="batch-ops-examples-reports"></a>

Lorsque vous créez une tâche S3 Batch Operations, vous pouvez demander un rapport d’achèvement 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, la fonctionnalité d’opérations par lot S3 génère un rapport pour les tâches qui ont été achevées, qui ont échoué ou qui ont été annulées.

Le rapport de fin contient des informations complémentaires pour chaque tâche, y compris le nom et la version des clés d’objets, le statut, les codes d’erreurs et les descriptions des erreurs éventuelles. La description des erreurs pour chaque tâche ayant échoué peut être utilisée pour diagnostiquer les problèmes pendant la création de tâches, par exemple les autorisations. Pour les tâches **Calculer la somme de contrôle**, le rapport d’achèvement contient les valeurs de somme de contrôle de chaque objet.

**Note**  
Les rapports d’achèvement sont toujours chiffrés avec des clés gérées par Amazon S3 (SSE-S3).

**Example - Fichier de résultats de manifeste de niveau supérieur**  
Le fichier `manifest.json` de niveau supérieur contient les emplacements de chaque rapport réussi et (si la tâche a présenté des échecs) l’emplacement des rapports ayant échoué, comme montré dans l’exemple suivant.  

```
{
    "Format": "Report_CSV_20180820",
    "ReportCreationDate": "2019-04-05T17:48:39.725Z",
    "Results": [
        {
            "TaskExecutionStatus": "succeeded",
            "Bucket": "my-job-reports",
            "MD5Checksum": "83b1c4cbe93fc893f54053697e10fd6e",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/6217b0fab0de85c408b4be96aeaca9b195a7daa5.csv"
        },
        {
            "TaskExecutionStatus": "failed",
            "Bucket": "my-job-reports",
            "MD5Checksum": "22ee037f3515975f7719699e5c416eaa",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/b2ddad417e94331e9f37b44f1faf8c7ed5873f2e.csv"
        }
    ],
    "ReportSchema": "Bucket, Key, VersionId, TaskStatus, ErrorCode, HTTPStatusCode, ResultMessage"
}
```

**Rapport des tâches réussies**

Les rapports des tâches réussies contiennent les éléments suivants pour toutes les tâches *réussies* :
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Rapports des tâches ayant échoué**

Les rapports des tâches ayant échoué contiennent les informations suivantes sur toutes les tâches *ayant échoué* :
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Example — Rapport des tâches sur la fonction Lambda**  
Dans l’exemple suivant, la fonction Lambda a copié avec succès l’objet Amazon S3 dans un autre compartiment. La réponse d’Amazon S3 est renvoyée à S3 Batch Operations, puis écrite dans le rapport d’achèvement final.  

```
amzn-s3-demo-bucket1,image_17775,,succeeded,200,,"{u'CopySourceVersionId': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'RequestId': '3ED5852152014362', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'x-amz-copy-source-version-id': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', 'server': 'AmazonS3', 'x-amz-request-id': '3ED5852152014362', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17763,,succeeded,200,,"{u'CopySourceVersionId': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'RequestId': '1BC9F5B1B95D7000', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'x-amz-copy-source-version-id': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', 'server': 'AmazonS3', 'x-amz-request-id': '1BC9F5B1B95D7000', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17860,,succeeded,200,,"{u'CopySourceVersionId': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 40, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'RequestId': '8D9CA56A56813DF3', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'x-amz-copy-source-version-id': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', 'server': 'AmazonS3', 'x-amz-request-id': '8D9CA56A56813DF3', 'date': 'Fri, 05 Apr 2019 17:35:40 GMT', 'content-type': 'application/xml'}}}"
```
L'exemple de rapport suivant montre un cas où la AWS Lambda fonction a expiré, entraînant des défaillances dépassant le seuil de défaillance. La mention `PermanentFailure` est ajoutée.  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:21.155Z 2845ca0d-38d9-4c4b-abcf-379dc749c452 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15897,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.610Z 2d0a330b-de9b-425f-b511-29232fde5fe4 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_14819,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:22.362Z fcf5efde-74d4-4e6d-b37a-c7f18827f551 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15930,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.809Z 3dd5b57c-4a4a-48aa-8a35-cbf027b7957e Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17644,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:46.025Z 10a764e4-2b26-4d8c-9056-1e1072b4723f Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17398,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:44.661Z 1e306352-4c54-4eba-aee8-4d02f8c0235c Task timed out after 3.00 seconds""}"
```

**Example — Rapport des tâches Calculer la somme de contrôle**  
Dans l’exemple suivant, l’opération **Calculer la somme de contrôle** a correctement calculé la somme de contrôle de l’objet chargé au repos. La réponse d’Amazon S3 est renvoyée à S3 Batch Operations, puis écrite dans le rapport d’achèvement final :  

```
amzn-s3-demo-bucket1,s3-standard-1mb-test-object,,succeeded,200,,"{""checksum_base64"":""bS9TOQ\u003d\u003d"",""etag"":""3c3c1813042989094598e4b57ecbdc82"",""checksumAlgorithm"":""CRC32"",""checksumType"":""FULL_OBJECT"",""checksum_hex"":""6D2F5339""}"
```
L’exemple de rapport suivant montre ce qui se passe lorsqu’une opération **Calculer la somme de contrôle** échoue, entraînant la génération d’un rapport d’échec de tâche :  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 SSE-C encryption type is not supported for this operation", ""errorCode"": "400"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Key not found", ""errorCode"": "404"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Internal server error, please retry", ""errorCode"": "500"}"
```

# Contrôle de l’accès et étiquetage des tâches à l’aide d’étiquettes
<a name="batch-ops-job-tags"></a>

Vous pouvez étiqueter et contrôler l'accès à vos tâches d'opérations par lot S3 en ajoutant des *étiquettes*. Les étiquettes peuvent être utilisées pour identifier la personne qui est responsable d’une tâche 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. Vous pouvez créer des tâches avec des balises qui leur sont attachées et ajouter des balises aux tâches une fois qu’elles ont été créées. Chaque étiquette est une paire clé-valeur que vous pouvez ajouter lors de la création de la tâche ou de sa mise à jour ultérieure.

**Avertissement**  
Assurez-vous que les balises de tâche ne contiennent aucune information confidentielle ni donnée personnelle.

Prenons l’exemple d’étiquetage suivant : supposons que vous souhaitez que votre service Finance crée une tâche d’opérations par lot. Vous pouvez écrire une politique Gestion des identités et des accès AWS (IAM) qui permet à un utilisateur d'invoquer`CreateJob`, à condition que la tâche soit créée avec la valeur `Finance` attribuée à la `Department` balise. En outre, vous pouvez attacher cette stratégie à tous les utilisateurs qui sont membres du département des finances.

En continuant avec cet exemple, vous pouvez écrire une stratégie qui permet à un utilisateur de mettre à jour la priorité de n’importe quelle tâche comportant les étiquettes souhaitées, ou d’annuler toute tâche qui les possède. Pour de plus amples informations, veuillez consulter [Contrôle des autorisations pour les opérations par lot à l’aide de balises de tâche](batch-ops-job-tags-examples.md).

Vous pouvez ajouter des identifications à de nouvelles tâches d’opérations par lot S3 lors de leur création ou les ajouter aux tâches existantes. 

Notez les restrictions suivantes liées aux étiquettes :
+ Vous pouvez associer jusqu’à 50 étiquettes à une tâche, à condition qu’elles aient des clés d’étiquette uniques.
+ Une clé d'étiquette peut comporter jusqu'à 128 caractères Unicode et les valeurs d'étiquette peuvent comporter jusqu'à 256 caractères Unicode.
+ La clé et les valeurs sont sensibles à la casse.

Pour de plus amples informations sur les restrictions liées aux étiquettes, consultez [Restrictions encadrant les étiquettes définies par l'utilisateur](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) dans le *Guide de l’utilisateur AWS Billing and Cost Management *.

## Opérations d’API liées au balisage des tâches d’opérations par lot S3
<a name="batch-ops-job-tags-api"></a>

Amazon S3 prend en charge les opérations d’API suivantes qui sont spécifiques au balisage des tâches d’opérations par lot S3 :
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html) – renvoie l’ensemble de balises associé à une tâche d’opérations par lot. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html) – Remplace l’ensemble de balises associé à une tâche. Il existe deux scénarios de gestion d’étiquettes de tâches S3 Batch Operations à l’aide de cette API :
  + La tâche n’a pas de balise : vous pouvez ajouter un ensemble de balises à une tâche (la tâche n’a pas de balises antérieures).
  + La tâche a un ensemble de balises : pour modifier cet ensemble de balises, vous pouvez soit le remplacer entièrement, soit y apporter des modifications en extrayant l’ensemble de balises à l’aide de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html), en apportant les modifications nécessaires et en utilisant cette action d’API pour remplacer l’ensemble de balises par celui que vous avez modifié.
**Note**  
Si vous envoyez cette demande avec un ensemble d’étiquettes vide, la fonctionnalité d’opérations par lot S3 supprime l’ensemble d’étiquettes existant de l’objet. Si vous employez cette méthode, une demande de Niveau 1 (`PUT`) vous est facturée. Pour de plus amples informations, veuillez consulter [Tarification Amazon S3](https://aws.amazon.com/s3/pricing).  
Pour supprimer des étiquettes existantes pour votre tâche d’opérations par lot, l’action `DeleteJobTagging` est préférable, car elle permet d’obtenir le même résultat sans frais.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html) – Supprime l’ensemble de balises associé à une tâche d’opérations par lot. 

# Création d’une tâche d’opérations par lot avec des étiquettes de tâche utilisées pour l’étiquetage
<a name="batch-ops-tags-create"></a>

Vous pouvez étiqueter et contrôler l’accès à vos tâches d’opérations par lot Amazon S3 en ajoutant des *balises*. Les étiquettes peuvent être utilisées pour identifier la personne qui est responsable d’une tâche d’opérations par lot. Vous pouvez créer des tâches avec des étiquettes qui leur sont attachées et ajouter des étiquettes aux tâches une fois qu’elles ont été créées. Pour de plus amples informations, veuillez consulter [Contrôle de l’accès et étiquetage des tâches à l’aide d’étiquettes](batch-ops-job-tags.md).

## À l'aide du AWS CLI
<a name="batch-ops-example-cli-job-tags-create-job"></a>

L' AWS CLI exemple suivant crée une `S3PutObjectCopy` tâche S3 Batch Operations en utilisant des balises de tâche comme étiquettes pour la tâche. 

1. Sélectionnez l’action ou `OPERATION` que la tâche d’opérations par lot doit exécuter et choisissez votre élément `TargetResource`.

   ```
   read -d '' OPERATION <<EOF
   {
     "S3PutObjectCopy": {
       "TargetResource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
     }
   }
   EOF
   ```

1. Identifiez les `TAGS` de tâche que vous voulez pour la tâche. Dans ce cas, vous appliquez deux étiquettes, `department` et `FiscalYear`, avec les valeurs `Marketing` et `2020` respectivement.

   ```
   read -d '' TAGS <<EOF
   [
     {
       "Key": "department",
       "Value": "Marketing"
     },
     {
       "Key": "FiscalYear",
       "Value": "2020"
     }
   ]
   EOF
   ```

1. Spécifiez l’élément `MANIFEST` pour la tâche d’opérations par lot.

   ```
   read -d '' MANIFEST <<EOF
   {
     "Spec": {
       "Format": "EXAMPLE_S3BatchOperations_CSV_20180820",
       "Fields": [
         "Bucket",
         "Key"
       ]
     },
     "Location": {
       "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/example_manifest.csv",
       "ETag": "example-5dc7a8bfb90808fc5d546218"
     }
   }
   EOF
   ```

1. Configurez l’élément `REPORT` pour la tâche d’opérations par lot.

   ```
   read -d '' REPORT <<EOF
   {
     "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
     "Format": "Example_Report_CSV_20180820",
     "Enabled": true,
     "Prefix": "reports/copy-with-replace-metadata",
     "ReportScope": "AllTasks"
   }
   EOF
   ```

1. Exécutez l’action `create-job` pour créer votre tâche d’opérations par lot avec les entrées définies dans les étapes précédentes.

   ```
   aws \
       s3control create-job \
       --account-id 123456789012 \
       --manifest "${MANIFEST//$'\n'}" \
       --operation "${OPERATION//$'\n'/}" \
       --report "${REPORT//$'\n'}" \
       --priority 10 \
       --role-arn arn:aws:iam::123456789012:role/batch-operations-role \
       --tags "${TAGS//$'\n'/}" \
       --client-request-token "$(uuidgen)" \
       --region us-west-2 \
       --description "Copy with Replace Metadata";
   ```

## Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-job-with-tags-create"></a>

Pour créer une tâche S3 Batch Operations avec des balises à l'aide du AWS SDK pour Java, vous pouvez utiliser le client S3Control pour configurer les paramètres de la tâche, notamment l'emplacement du manifeste, les opérations de tâche, les paramètres de reporting et les balises à des fins d'organisation et de suivi.

Pour des exemples de création de tâches S3 Batch Operations avec des balises à l'aide du AWS SDK for Java, [consultez la section Créer une tâche par lots pour copier](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) des objets dans *le manuel Amazon S3 API* Reference.

# Suppression des étiquettes d’une tâche d’opérations par lot S3
<a name="delete-job-tags"></a>

Vous pouvez utiliser ces exemples pour supprimer les balises d’une tâche d’opérations par lot Amazon S3.

## À l'aide du AWS CLI
<a name="batch-ops-example-cli-job-tags-delete-job-tagging"></a>

L’exemple suivant supprime les étiquettes d’une tâche d’opérations par lot à l’aide de la AWS CLI.

```
aws \
    s3control delete-job-tagging \
    --account-id 123456789012 \
    --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
    --region us-east-1
```

## Supprimer les étiquettes d’une tâche d’opérations par lot
<a name="batch-ops-examples-java-job-with-tags-delete"></a>

Pour supprimer les balises d'une tâche S3 Batch Operations à l'aide du AWS SDK for Java, vous pouvez utiliser le client S3Control avec l'ID de la tâche pour supprimer toutes les balises associées à la tâche d'opérations par lots.

Pour des exemples de suppression de balises de tâche à l'aide du AWS SDK pour Java, [consultez la section Supprimer les balises d'une tâche par lots](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_DeleteJobTagging_section.html) dans *le manuel Amazon S3 API* Reference.

# Ajout de balises dans une tâche d’opérations par lot existante
<a name="put-job-tags"></a>

Vous pouvez utiliser l’opération d’API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html) pour ajouter des balises à vos tâches d’opérations par lot Amazon S3 existantes. Pour plus d’informations, consultez les exemples suivants.

## À l'aide du AWS CLI
<a name="batch-ops-example-cli-job-tags-put-job-tagging"></a>

Voici un exemple d’utilisation de `s3control put-job-tagging` pour ajouter des balises à une tâche d’opérations par lot S3 à l’aide de l’ AWS CLI. Pour utiliser ces exemples, remplacez *`user input placeholders`* par vos propres informations.

**Note**  
Si vous envoyez cette demande avec un ensemble de balises vide, la fonctionnalité d’opérations par lot supprime l’ensemble de balises existant de l’objet. Cependant, si vous utilisez cette méthode, une demande de Niveau 1 (`PUT`) vous est facturée. Pour plus d’informations, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing).  
Au lieu de cela, pour supprimer des balises existantes pour votre tâche d’opérations par lot, nous vous recommandons d’utiliser l’opération `DeleteJobTagging`, car elle permet d’obtenir le même résultat sans frais.

1. Identifiez les `TAGS` de tâche que vous voulez pour la tâche. Dans ce cas, vous appliquez deux étiquettes, `department` et `FiscalYear`, avec les valeurs `Marketing` et `2020` respectivement.

   ```
   read -d '' TAGS <<EOF
   [
     {
       "Key": "department",
       "Value": "Marketing"
     },
     {
       "Key": "FiscalYear",
       "Value": "2020"
     }
   ]
   EOF
   ```

1. Exécutez la commande `put-job-tagging` suivante avec les paramètres requis :

   ```
   aws \
       s3control put-job-tagging \
       --account-id 123456789012 \
       --tags "${TAGS//$'\n'/}" \
       --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
       --region us-east-1
   ```

## Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-job-with-tags-put"></a>

Pour ajouter des balises à une tâche S3 Batch Operations à l'aide du AWS SDK for Java, vous pouvez utiliser le client S3Control pour ajouter ou mettre à jour des balises avec des paires clé-valeur à des fins d'organisation et de suivi.

Pour des exemples sur la façon d'insérer des balises de tâche dans le AWS SDK pour Java, [consultez la section Ajouter des balises à une tâche par lots](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_PutJobTagging_section.html) dans *le manuel Amazon S3 API Reference*.

# Obtention des étiquettes d’une tâche d’opérations par lot S3
<a name="get-job-tags"></a>

Pour récupérer les balises d’une tâche d’opérations par lot Amazon S3, vous pouvez utiliser l’opération d’API `GetJobTagging`. Pour plus d’informations, consultez les exemples suivants.

## À l'aide du AWS CLI
<a name="batch-ops-example-cli-job-tags-get-job-tagging"></a>

L’exemple suivant permet d’obtenir les étiquettes d’une tâche d’opérations par lot à l’aide de la AWS CLI. Pour utiliser cet exemple, remplacez les *`user input placeholders`* par vos propres informations.

```
aws \
    s3control get-job-tagging \
    --account-id 123456789012 \
    --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
    --region us-east-1
```

## Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-job-with-tags-get"></a>

Pour obtenir les balises d'une tâche S3 Batch Operations à l'aide du AWS SDK for Java, vous pouvez utiliser le client S3Control avec l'ID de tâche pour récupérer toutes les balises associées à la tâche d'opérations par lots et les renvoyer sous forme de liste.

Pour des exemples expliquant comment obtenir des balises de tâche avec le AWS SDK pour Java, [consultez la section Obtenir des balises à partir d'une tâche par lots](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_GetJobTagging_section.html) dans *le manuel Amazon S3 API Reference*.

# Contrôle des autorisations pour les opérations par lot à l’aide de balises de tâche
<a name="batch-ops-job-tags-examples"></a>

Pour faciliter la gestion des tâches d’opérations par lot Amazon S3, vous pouvez ajouter des *balises de tâche*. Les étiquettes de tâche vous permettent de contrôler l’accès à vos tâches d’opérations par lot et d’imposer l’application d’étiquettes lors de la création de toute tâche. 

Vous pouvez appliquer jusqu’à 50 étiquettes de tâche à chaque tâche d’opérations par lot. L’utilisation de balises vous permet de définir des politiques granulaires limitant l’ensemble d’utilisateurs qui peuvent modifier la tâche. Les étiquettes de tâche peuvent 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. En outre, vous pouvez exiger l’application d’étiquettes à toutes les nouvelles tâches et spécifier les paires clé-valeur autorisées pour les étiquettes. Vous pouvez exprimer toutes ces conditions en utilisant le même [langage de politique Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html). Pour plus d’informations, consultez [Actions, ressources et clés de condition pour Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) dans la *Référence de l’autorisation de service*.

Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).

L’exemple suivant montre comment utiliser des étiquettes de tâche d’opérations par lot S3 pour accorder aux utilisateurs l’autorisation de créer et de modifier uniquement les tâches exécutées au sein d’un service spécifique (par exemple, le service Finance ou Conformité). Vous pouvez également affecter des tâches en fonction du stade de développement auquel elles sont liées, notamment l’assurance qualité ou la production.

Dans cet exemple, vous utilisez les balises de la tâche d’opérations par lot S3 dans les politique IAM pour accorder aux utilisateurs l’autorisation de créer et de modifier uniquement les tâches exécutées au sein de leur service. Vous affectez des tâches en fonction du stade de développement auquel elles sont liées, telles que l’assurance qualité ou la production. 

Les exemples suivants utilisent les services suivants, chacun utilisant les tâches d’opérations par lot de différentes manières :
+ Finance
+ Conformité
+ Business Intelligence
+ Ingénierie

**Topics**
+ [Contrôler l’accès en affectant des étiquettes aux utilisateurs et aux ressources](#job-tags-examples-attaching-tags)
+ [Balisage des tâches d’opérations par lot par étape et application de limites sur la priorité des tâches](#tagging-jobs-by-stage-and-enforcing-limits-on-job-priority)

## Contrôler l’accès en affectant des étiquettes aux utilisateurs et aux ressources
<a name="job-tags-examples-attaching-tags"></a>

Dans ce scénario, les administrateurs utilisent le [contrôle d’accès basé sur les attributs (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html). ABAC est une stratégie d'autorisation IAM qui définit les autorisations en attachant des balises aux utilisateurs et AWS aux ressources.

Les utilisateurs et les tâches se voient attribuer l’une des étiquettes de service suivantes :

**Clé : Valeur**
+ `department : Finance`
+ `department : Compliance`
+ `department : BusinessIntelligence`
+ `department : Engineering`
**Note**  
Les clés et valeurs d’étiquette sont sensibles à la casse.

À l’aide de la stratégie de contrôle d’accès ABAC, vous accordez à un utilisateur du service Finance l’autorisation de créer et de gérer des tâches d’opérations par lot S3 au sein de son service en associant l’étiquette `department=Finance` à son utilisateur.

En outre, vous pouvez attacher à l’utilisateur IAM une stratégie gérée qui permet à tout utilisateur de son entreprise de créer ou de modifier des tâches d’opérations par lot S3 au sein des différents services. 

La stratégie de cet exemple comprend trois déclarations de stratégie :
+ La première déclaration de la stratégie permet à l’utilisateur de créer une tâche d’opérations par lot à condition que la demande de création de tâche comprenne une étiquette de tâche correspondant à son service. Ceci est exprimé à l’aide de la syntaxe `"${aws:PrincipalTag/department}"`, qui est remplacée par l’étiquette du service de l’utilisateur au moment de l’évaluation de la stratégie. La condition est remplie lorsque la valeur fournie pour l’étiquette du service dans la demande `("aws:RequestTag/department")` correspond au département de l’utilisateur. 
+ La deuxième déclaration de la stratégie permet aux utilisateurs de modifier la priorité des tâches ou de mettre à jour le statut d’une tâche, à condition que la tâche mise à jour corresponde au service de l’utilisateur. 
+ La troisième déclaration permet à un utilisateur de mettre à jour les étiquettes d’une tâche d’opérations par lot à tout moment via une demande `PutJobTagging`, à condition que (1) l’étiquette de son service soit conservée et (2) la tâche qu’il met à jour se trouve dans son département. 

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
            {
                  "Effect": "Allow",
                  "Action": "s3:CreateJob",
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:RequestTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        },
            {
                  "Effect": "Allow",
                  "Action": [
                        "s3:UpdateJobPriority",
                        "s3:UpdateJobStatus"      
            ],
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:ResourceTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        },
            {
                  "Effect": "Allow",
                  "Action": "s3:PutJobTagging",
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                              "aws:ResourceTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        }  
    ]
}
```

------

## Balisage des tâches d’opérations par lot par étape et application de limites sur la priorité des tâches
<a name="tagging-jobs-by-stage-and-enforcing-limits-on-job-priority"></a>

Toutes les tâches d’opérations par lot S3 ont une priorité numérique, qu’Amazon S3 utilise pour décider de leur ordre d’exécution. Dans cet exemple, vous limitez la priorité maximale que la plupart des utilisateurs peuvent affecter aux tâches, avec des plages de priorité plus élevées réservées à un ensemble limité d’utilisateurs privilégiés, comme suit :
+ Plage de priorité de l’étape assurance qualité (faible) : 1-100
+ Plage de priorité de l’étape production (élevée) : 1-300

Pour ce faire, introduisez un nouveau jeu d’étiquettes représentant l’étape de la tâche :

**Clé : Valeur**
+ `stage : QA`
+ `stage : Production`

### Création et mise à jour de tâches à faible priorité au sein d’un service
<a name="creating-and-updating-low-priority-jobs"></a>

Cette stratégie introduit deux nouvelles restrictions sur la création et la mise à jour de tâches d’opérations par lot S3, en plus de la restriction basée sur le service :
+ Les utilisateurs peuvent créer ou mettre à jour des tâches dans leur service avec une nouvelle condition qui exige que la tâche inclue l’étiquette `stage=QA`.
+ Les utilisateurs peuvent créer ou mettre à jour la priorité d’une tâche jusqu’à une nouvelle priorité maximale de 100.

```
{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
        {
        "Effect": "Allow",
        "Action": "s3:CreateJob",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:UpdateJobStatus"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:UpdateJobPriority",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:ResourceTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:PutJobTagging",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department" : "${aws:PrincipalTag/department}",
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA",
                "aws:ResourceTag/stage": "QA"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:GetJobTagging",
        "Resource": "*"
    }
    ]
}
```

### Création et mise à jour de tâches hautement prioritaires au sein d’un service
<a name="creating-and-updating-high-priority-jobs"></a>

Un petit nombre d’utilisateurs peut avoir besoin de créer des tâches hautement prioritaires dans les services de l’assurance qualité ou de la production. Pour répondre à ce besoin, vous créez une stratégie gérée adaptée à la stratégie de faible priorité décrite dans la section précédente. 

Cette stratégie effectue les opérations suivantes : 
+ Elle permet aux utilisateurs de créer ou de mettre à jour des tâches dans leur service avec l’étiquette `stage=QA` ou `stage=Production`.
+ Elle permet aux utilisateurs de créer ou de mettre à jour la priorité d’une tâche jusqu’à un maximum de 300.

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
                "Effect": "Allow",
                "Action": "s3:CreateJob",
                "Resource": "*",
                "Condition": {
                      "ForAnyValue:StringEquals": {
                            "aws:RequestTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                },
                      "StringEquals": {
                            "aws:RequestTag/department": "${aws:PrincipalTag/department}"      
                },
                      "NumericLessThanEquals": {
                            "s3:RequestJobPriority": 300      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": [
                      "s3:UpdateJobStatus"    
            ],
                "Resource": "*",
                "Condition": {
                      "StringEquals": {
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": "s3:UpdateJobPriority",
                "Resource": "*",
                "Condition": {
                      "ForAnyValue:StringEquals": {
                            "aws:ResourceTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                },
                      "StringEquals": {
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                },
                      "NumericLessThanEquals": {
                            "s3:RequestJobPriority": 300      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": "s3:PutJobTagging",
                "Resource": "*",
                "Condition": {
                      "StringEquals": {
                            "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                },
                      "ForAnyValue:StringEquals": {
                            "aws:RequestTag/stage": [
                                  "QA",
                                  "Production"        
                    ],
                            "aws:ResourceTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                }    
            }  
        }  
    ]
}
```

------

# Gestion du verrouillage des objets S3 à l’aide des opérations par lot S3
<a name="managing-object-lock-batchops"></a>

Vous pouvez utiliser les opérations par lot S3 pour effectuer des opérations par lot à grande échelle sur des objets Amazon S3. Les opérations par lot S3 peuvent effectuer une seule opération sur les listes d’objets Amazon S3 que vous spécifiez. Une seule tâche peut effectuer une opération spécifiée sur des milliards d’objets contenant des exaoctets de données. Amazon S3 suit la progression, envoie des notifications et stocke un rapport de fin d’opérations détaillé sur toutes les actions, offrant ainsi une expérience sans serveur entièrement gérée et contrôlable. Vous pouvez utiliser S3 Batch Operations via la console Amazon S3 ou AWS SDKs l'API REST Amazon S3. AWS CLI

Avec le verrouillage d’objets S3, vous pouvez aussi mettre en place une conservation légale sur une version d’objet. À l’instar d’une période de rétention, une conservation légale empêche une version d’objet d’être remplacée ou supprimée. Cependant, une conservation légale n’est associée à aucune période de rétention et reste en vigueur jusqu’à sa suppression. Pour de plus amples informations, veuillez consulter [Mise en suspens juridique du verrouillage des objets S3](batch-ops-legal-hold.md).

Pour utiliser les opérations par lot S3 avec le verrouillage d’objet pour attribuer des conservations légales à plusieurs objets Amazon S3 à la fois, consultez les rubriques suivantes.

**Topics**
+ [Activation du verrouillage des objets S3 à l’aide des opérations par lot S3](batch-ops-object-lock.md)
+ [Définition de la rétention du verrouillage des objets à l’aide des opérations par lot](batch-ops-object-lock-retention.md)
+ [Utilisation de la fonctionnalité d’opérations par lot S3 avec le mode de conformité de rétention du verrouillage des objets S3](batch-ops-compliance-mode.md)
+ [Utiliser la fonctionnalité d’opérations par lot S3 avec le mode de gouvernance de rétention du verrouillage des objets S3](batch-ops-governance-mode.md)
+ [Utilisation de la fonctionnalité d’opérations par lot S3 pour désactiver la conservation légale du verrouillage d’objet S3](batch-ops-legal-hold-off.md)

# Activation du verrouillage des objets S3 à l’aide des opérations par lot S3
<a name="batch-ops-object-lock"></a>

Vous pouvez utiliser la fonctionnalité d’opérations par lot Amazon S3 avec le verrouillage d’objet S3 pour gérer la rétention ou activer la conservation légale de nombreux objets Amazon S3 à la fois. Vous spécifiez la liste des objets cibles dans votre manifeste et l’envoyez aux tâches d’opérations par lot pour terminer. Pour plus d’informations, consultez [Conservation d’un verrouillage d’objet S3](batch-ops-retention-date.md) et [Mise en suspens juridique du verrouillage des objets S3](batch-ops-legal-hold.md). 

Les exemples suivants montrent comment créer un rôle Gestion des identités et des accès AWS (IAM) avec des autorisations S3 Batch Operations et comment mettre à jour les autorisations de rôle pour créer des tâches qui activent Object Lock. Vous devez également disposer d’un manifeste `CSV` qui identifie les objets de votre tâche d’opérations par lot S3. Pour de plus amples informations, veuillez consulter [Spécification d’un manifeste](batch-ops-create-job.md#specify-batchjob-manifest).

Pour utiliser les exemples suivants, remplacez *`user input placeholders`* par vos propres informations. 

## À l'aide du AWS CLI
<a name="batchops-example-cli-object-lock"></a>

1. Créez un rôle IAM et autorisez les tâches d’opérations par lot S3 à s’exécuter.

   Cette étape est obligatoire pour toutes les tâches d’opérations par lot S3.

   ```
   export AWS_PROFILE='aws-user'
   
   read -d '' batch_operations_trust_policy <<EOF
   {
     "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "batchoperations.s3.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   EOF
   aws iam create-role --role-name batch_operations-objectlock \
   --assume-role-policy-document "${batch_operations_trust_policy}"
   ```

1. Configurez l’exécution des tâches d’opérations par lot S3 avec la fonctionnalité de verrouillage des objets S3.

   Dans cette étape, vous autorisez le rôle à effectuer les opérations suivantes :

   1. Exécutez la tâche de verrouillage des objets sur le compartiment S3 qui contient les objets cibles sur lesquels vous souhaitez exécuter la fonctionnalité d’opérations par lot.

   1. Lisez le compartiment S3 où se trouvent le fichier CSV manifeste et les objets.

   1. Écrivez les résultats de la tâche d’opérations par lot S3 dans le compartiment de rapports.

   ```
   read -d '' batch_operations_permissions <<EOF
   {
       "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:GetBucketObjectLockConfiguration",
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "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}}/*"
               ]
           }
       ]
   }
   EOF
   
   aws iam put-role-policy --role-name batch_operations-objectlock \
   --policy-name object-lock-permissions \
   --policy-document "${batch_operations_permissions}"
   ```

## Utilisation du AWS SDK pour Java
<a name="batchops-examples-java-object-lock"></a>

Vous pouvez créer un rôle IAM avec des autorisations S3 Batch Operations et mettre à jour les autorisations du rôle pour créer des tâches qui activent le verrouillage d’objet à l’aide du kit AWS SDK pour Java. Vous devez également disposer d’un manifeste `CSV` identifiant les objets de votre tâche d’opérations par lot S3. Pour de plus amples informations, veuillez consulter [Spécification d’un manifeste](batch-ops-create-job.md#specify-batchjob-manifest).

Procédez comme suit :

1. Créez un rôle IAM et autorisez les tâches d’opérations par lot S3 à s’exécuter. Cette étape est obligatoire pour toutes les tâches d’opérations par lot S3.

1. Configurez l'exécution des tâches d'opérations par lot S3 avec la fonctionnalité de verrouillage des objets S3.

   Vous autorisez le rôle à effectuer les opérations suivantes :

   1. Exécutez la tâche de verrouillage des objets sur le compartiment S3 qui contient les objets cibles sur lesquels vous souhaitez exécuter la fonctionnalité d'opérations par lot.

   1. Lisez le compartiment S3 où se trouvent le fichier CSV manifeste et les objets.

   1. Écrivez les résultats de la tâche d’opérations par lot S3 dans le compartiment de rapports.

Pour un exemple de code qui montre comment créer un rôle IAM pour activer S3 Object Lock à l'aide de S3 Batch Operations avec le AWS SDK pour Java, [CreateObjectLockRoleconsultez](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/batch/CreateObjectLockRole.java) .java dans les exemples de code du *SDK AWS pour Java 2.x*.

# Définition de la rétention du verrouillage des objets à l’aide des opérations par lot
<a name="batch-ops-object-lock-retention"></a>

Vous pouvez utiliser les opérations par lot Amazon S3 avec le verrouillage d’objet S3 pour gérer la conservation de nombreux objets Amazon S3 à la fois. Vous spécifiez la liste des objets cibles dans votre manifeste et l’envoyez aux tâches d’opérations par lot pour terminer. Pour plus d’informations, consultez [Conservation d’un verrouillage d’objet S3](batch-ops-retention-date.md) et [Mise en suspens juridique du verrouillage des objets S3](batch-ops-legal-hold.md). 

Les exemples suivants montrent comment créer un rôle Gestion des identités et des accès AWS (IAM) avec des autorisations S3 Batch Operations et comment mettre à jour les autorisations du rôle pour inclure les `s3:PutObjectRetention` autorisations afin que vous puissiez exécuter la rétention S3 Object Lock sur les objets de votre compartiment manifeste. Vous devez également disposer d’un manifeste `CSV` qui identifie les objets de votre tâche d’opérations par lot S3. Pour de plus amples informations, veuillez consulter [Spécification d’un manifeste](batch-ops-create-job.md#specify-batchjob-manifest).

Pour utiliser les exemples suivants, remplacez *`user input placeholders`* par vos propres informations. 

## À l'aide du AWS CLI
<a name="batch-ops-cli-object-lock-retention-example"></a>

L' AWS CLI exemple suivant montre comment utiliser Batch Operations pour appliquer la rétention S3 Object Lock à plusieurs objets.

```
export AWS_PROFILE='aws-user'

read -d '' retention_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectRetention"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}/*"
            ]
        }
    ]
}
EOF

aws iam put-role-policy --role-name batch_operations-objectlock --policy-name retention-permissions --policy-document "${retention_permissions}"
```

## Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-object-lock-retention"></a>

Pour des exemples d'utilisation des opérations par lots pour appliquer la rétention S3 Object Lock à plusieurs objets avec le AWS SDK for Java, [consultez la section CreateJob Utilisation avec AWS un SDK ou une CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) dans le manuel *Amazon S3 API Reference*.

# Utilisation de la fonctionnalité d’opérations par lot S3 avec le mode de conformité de rétention du verrouillage des objets S3
<a name="batch-ops-compliance-mode"></a>

L’exemple suivant s’appuie sur les exemples précédents de création d’une stratégie d’approbation et de définition des autorisations de configuration pour les opérations par lot S3 et le verrouillage des objets S3 sur vos objets. Cet exemple définit le mode de conservation sur `COMPLIANCE` et fixe la date `retain until date` au 1er janvier 2025. Cet exemple crée une tâche qui cible les objets du compartiment manifeste et signale les résultats dans le compartiment de rapports que vous avez identifié.

Pour utiliser les exemples suivants, remplacez *`user input placeholders`* par vos propres informations. 

## À l'aide du AWS CLI
<a name="batch-ops-cli-object-lock-compliance-example"></a>

Les AWS CLI exemples suivants montrent comment utiliser Batch Operations pour appliquer le mode de conformité de rétention S3 Object Lock à plusieurs objets.

**Example  : défini le mode de conformité de rétention du verrouillage d’objet S3 sur plusieurs objets**  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-01T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::ReportBucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "amzn-s3-demo-completion-report-bucket/compliance-objects-batch-operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Set compliance retain-until to 1 Jul 2030";
```

**Example — Prolonger la date `retain until date` du mode `COMPLIANCE` jusqu’au 15 janvier 2025**  
L’exemple suivant étend la `COMPLIANCE` du mode `retain until date` jusqu’au 15 janvier 2025.  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-15T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/compliance-objects-batch_operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Extend compliance retention to 15 Jan 2025";
```

## Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-object-lock-compliance"></a>

Les exemples de AWS SDK pour Java suivants montrent comment utiliser Batch Operations pour appliquer le mode de conservation S3 Object Lock à plusieurs objets, notamment en définissant le mode de rétention sur COMPLIANCE avec une rétention jusqu'à date et en prolongeant le mode de conservation COMPLIANCE jusqu'à date.

Pour des exemples d'utilisation des opérations par lots pour appliquer le mode de conformité de rétention S3 Object Lock à plusieurs objets avec le AWS SDK for Java, [consultez la section CreateJob Utilisation avec AWS un SDK ou une CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) dans le manuel *Amazon S3 API Reference*.

# Utiliser la fonctionnalité d’opérations par lot S3 avec le mode de gouvernance de rétention du verrouillage des objets S3
<a name="batch-ops-governance-mode"></a>

L’exemple suivant s’appuie sur les exemples précédents de création d’une stratégie d’approbation et de définition des autorisations de configuration pour les opérations par lot S3 et le verrouillage des objets S3. Cet exemple illustre comment appliquer la gouvernance de conservation du verrouillage d’objet S3 avec la date `retain until date` fixée au 30 janvier 2025 sur plusieurs objets. Il crée une tâche d’opérations par lot qui utilise le compartiment manifeste et signale les résultats dans le compartiment de rapports.

Pour utiliser les exemples suivants, remplacez *`user input placeholders`* par vos propres informations. 

## À l'aide du AWS CLI
<a name="batch-ops-cli-object-lock-governance-example"></a>

Les AWS CLI exemples suivants montrent comment utiliser Batch Operations pour appliquer le mode de gouvernance de rétention S3 Object Lock à plusieurs objets.

**Example — Appliquer la gouvernance de conservation du verrouillage d’objet S3 sur plusieurs objets avec la date de fin de conservation fixée au 30 janvier 2025**  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-30T00:00:00",
      "Mode":"GOVERNANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/governance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucketT",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/governance-objects",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Put governance retention";
```

**Example — Contourner la gouvernance de conservation sur plusieurs objets**  
L’exemple suivant s’appuie sur les exemples précédents de création d’une stratégie d’approbation et de définition des autorisations de configuration pour les opérations par lot S3 et le verrouillage des objets S3. Il montre comment contourner la gouvernance de rétention entre plusieurs objets et crée une tâche d’opérations par lot qui utilise le compartiment manifeste et signale les résultats dans le compartiment de rapports.  

```
export AWS_PROFILE='aws-user'

read -d '' bypass_governance_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:BypassGovernanceRetention"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        }
    ]
}
EOF

aws iam put-role-policy --role-name batch-operations-objectlock --policy-name bypass-governance-permissions --policy-document "${bypass_governance_permissions}"

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "BypassGovernanceRetention": true,
    "Retention": {
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/governance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/batch_operations-governance",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Remove governance retention";
```

## Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-object-lock-governance"></a>

Les exemples de AWS SDK pour Java suivants montrent comment appliquer la gouvernance de rétention d'Object Lock dans S3 (jusqu'`retain until date`au 30 janvier 2025) à plusieurs objets, notamment en appliquant la gouvernance de rétention Object Lock à plusieurs objets avec une date limite de conservation et en contournant la gouvernance de rétention sur plusieurs objets.

Pour des exemples d'utilisation des opérations par lots avec le mode de gouvernance de rétention S3 Object Lock avec le AWS SDK pour Java, [consultez la section CreateJob Utilisation avec AWS un SDK ou une CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) dans le manuel *Amazon S3 API Reference*.

# Utilisation de la fonctionnalité d’opérations par lot S3 pour désactiver la conservation légale du verrouillage d’objet S3
<a name="batch-ops-legal-hold-off"></a>

L’exemple suivant s’appuie sur les exemples précédents de création d’une stratégie d’approbation et de définition des autorisations de configuration pour les opérations par lot S3 et le verrouillage des objets S3. Cet exemple montre comment désactiver la conservation légale du verrouillage des objets à l’aide de la fonctionnalité d’opérations par lot. 

Cet exemple met d’abord à jour le rôle afin d’accorder des autorisations `s3:PutObjectLegalHold`, crée une tâche d’opérations par lot qui désactive (supprime) la conservation légale des objets identifiés dans le manifeste, puis établit un rapport à ce sujet.

Pour utiliser les exemples suivants, remplacez *`user input placeholders`* par vos propres informations. 

## À l'aide du AWS CLI
<a name="batch-ops-cli-object-lock-legalhold-example"></a>

Les AWS CLI exemples suivants montrent comment utiliser Batch Operations pour désactiver les blocages légaux de S3 Object Lock sur plusieurs objets.

**Example — Met à jour le rôle pour accorder des autorisations `s3:PutObjectLegalHold`**  

```
export AWS_PROFILE='aws-user'

read -d '' legal_hold_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectLegalHold"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        }
    ]

EOF

aws iam put-role-policy --role-name batch_operations-objectlock --policy-name legal-hold-permissions --policy-document "${legal_hold_permissions}"
```

**Example — Désactiver la conservation légale**  
L’exemple suivant désactive la conservation légale.  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectLegalHold": {
    "LegalHold": {
      "Status":"OFF"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/legalhold-object-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/legalhold-objects-batch_operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Turn off legal hold";
```

## Utilisation du AWS SDK pour Java
<a name="batch-ops-examples-java-object-lock-legalhold"></a>

Pour des exemples d'utilisation de S3 Batch Operations pour désactiver le blocage légal de S3 Object Lock avec le AWS SDK pour Java, [consultez la section CreateJob Utilisation avec AWS un SDK ou une CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) dans le manuel *Amazon S3 API Reference*.

# Didacticiel : transcodage par lot de vidéos avec les opérations par lot S3
<a name="tutorial-s3-batchops-lambda-mediaconvert-video"></a>

Les consommateurs de vidéos utilisent des appareils de toutes formes, tailles et millésimes pour profiter des contenus multimédia. Ce large éventail de services représente un défi pour les créateurs et distributeurs de contenus. Au lieu d'être dans un one-size-fits-all format, les vidéos doivent être converties afin qu'elles puissent couvrir une large gamme de tailles, de formats et de débits. Cette tâche de conversion est encore plus difficile lorsque vous avez un grand nombre de vidéos à convertir.

AWS vous propose une méthode pour créer une architecture distribuée évolutive qui effectue les opérations suivantes : 
+ Intégrer les vidéos d’entrée
+ Traiter les vidéos en vue de leur lecture sur un large éventail d’appareils
+ Stocker les fichiers multimédias transcodés
+ Fournir les fichiers multimédias de sortie pour répondre à la demande

Si vous disposez de référentiels vidéo étendus stockés dans Amazon S3, vous pouvez transcoder ces vidéos à partir de leurs formats source en plusieurs types de fichiers dans la taille, la résolution et le format requis par un lecteur vidéo ou un appareil particulier. Plus précisément, [S3 Batch Operations](https://aws.amazon.com/s3/features/batch-operations) vous fournit une solution pour invoquer AWS Lambda des fonctions pour les vidéos d'entrée existantes dans un compartiment source S3. Ensuite, les fonctions Lambda appellent [AWS Elemental MediaConvert](https://aws.amazon.com/mediaconvert/) pour effectuer des tâches de transcodage de vidéos à grande échelle. Les fichiers multimédias de sortie convertis sont stockés dans un compartiment de destination S3. 

![\[Schéma du flux de travail de transcodage par lot.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/batchops-example-image-global.png)


**Objectif**  
Dans ce didacticiel, vous apprendrez à configurer S3 Batch Operations pour invoquer une fonction Lambda pour le transcodage par lots de vidéos stockées dans un compartiment source S3. La fonction Lambda appelle MediaConvert pour transcoder les vidéos. Les sorties de chaque vidéo dans le compartiment source S3 se présentent comme suit :
+ Un flux à débit adaptatif [HTTP Live Streaming (HLS)](http://wikipedia.org/wiki/HTTP_Live_Streaming) pour lecture sur des appareils de diverses tailles et des largeurs de bande passante variables
+ Un fichier MP4 vidéo
+ Images miniatures collectées à intervalles

**Topics**
+ [Conditions préalables](#batchops-s3-prerequisites)
+ [Étape 1 : créer un compartiment S3 pour les fichiers multimédias de sortie](#batchops-s3-step1)
+ [Étape 2 : créer un rôle IAM pour MediaConvert](#batchops-s3-step2)
+ [Étape 3 : créer un rôle IAM pour votre fonction Lambda](#batchops-s3-step3)
+ [Étape 4 : créer une fonction Lambda pour le transcodage vidéo](#batchops-s3-step4)
+ [Étape 5 : configurer S3 Inventory pour votre compartiment source S3](#batchops-s3-step5)
+ [Étape 6 : créer un rôle IAM pour S3 Batch Operations](#batchops-s3-step6)
+ [Étape 7 : configurer et exécuter une tâche S3 Batch Operations](#batchops-s3-step7)
+ [Étape 8 : vérifier les fichiers multimédias de sortie à partir de votre compartiment de destination S3](#batchops-s3-step8)
+ [Étape 9 : nettoyer](#batchops-s3-step9)
+ [Étapes suivantes](#batchops-s3-next-steps)

## Conditions préalables
<a name="batchops-s3-prerequisites"></a>

Avant de commencer à suivre ce didacticiel, vous devez disposer d’un compartiment source Amazon S3 (par exemple `amzn-s3-demo-source-bucket`) avec des vidéos à transcoder déjà stockées.

Vous pouvez donner un autre nom au compartiment si vous le souhaitez. Pour en savoir plus sur les règles d’attribution de noms de compartiment dans Amazon S3, consultez [Règles de dénomination des compartiments à usage général](bucketnamingrules.md).

Pour le compartiment source S3, conservez les paramètres associés aux **Paramètres de blocage de l’accès public à ce compartiment** définis pour les valeurs par défaut (**Block *all* public access (Bloquer tous les accès publics)** est activé). Pour plus d’informations, consultez [Création d’un compartiment à usage général](create-bucket-overview.md). 

Pour en savoir plus sur le téléchargement de vidéos vers le compartiment source S3, consultez [Chargement d’objets](upload-objects.md). Lorsque vous téléchargez de nombreux fichiers vidéo volumineux sur S3, vous pouvez également utiliser [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration) pour configurer des transferts de fichiers rapides et sécurisés. Transfer Acceleration peut accélérer le chargement de vidéos vers votre compartiment S3 pour le transfert à longue distance de vidéos plus volumineuses. Pour plus d’informations, consultez [Configuration de transferts de fichiers rapides et sécurisés à l’aide d’Amazon S3 Transfer Acceleration](transfer-acceleration.md). 

## Étape 1 : créer un compartiment S3 pour les fichiers multimédias de sortie
<a name="batchops-s3-step1"></a>

Dans cette étape, vous créez un compartiment de destination S3 pour stocker les fichiers multimédias de sortie convertis. Vous créez également une configuration CORS (Cross Origin Resource Sharing) pour autoriser l’accès croisé aux fichiers multimédias transcodés stockés dans votre compartiment de destination S3. 

**Topics**
+ [Créer un compartiment pour les fichiers multimédias de sortie](#batchops-s3-step1-create-bucket)
+ [Ajouter une configuration CORS à un compartiment de sortie S3](#batchops-s3-step1-cors)

### Créer un compartiment pour les fichiers multimédias de sortie
<a name="batchops-s3-step1-create-bucket"></a>



1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Choisissez **Créer un compartiment**. 

1. Pour **Bucket Name (Nom du compartiment)**, indiquez le nom de votre compartiment, (par exemple, `amzn-s3-demo-destination-bucket1`). 

1. Pour **Région**, choisissez l' Région AWS endroit où vous souhaitez que le compartiment réside. 

1. Pour garantir l’accès public à vos fichiers multimédias de sortie, dans **Paramètres de blocage de l’accès public à ce compartiment**, désactivez **Bloquer *tous* les accès publics**. 
**Avertissement**  
Avant de terminer cette étape, revoyez [Blocage de l’accès public à votre stockage Amazon S3](access-control-block-public-access.md) pour vous assurer que vous comprenez et acceptez les risques liés à l’autorisation d’accès public. Lorsque vous désactivez les paramètres de blocage de l’accès public pour rendre votre compartiment public, toute personne sur Internet peut accéder à votre compartiment. Nous vous recommandons de bloquer tous les accès publics à vos compartiments.  
Si vous ne souhaitez pas effacer les paramètres de blocage de l'accès public, vous pouvez utiliser Amazon CloudFront pour transmettre les fichiers multimédia transcodés aux spectateurs (utilisateurs finaux). Pour de plus amples informations, veuillez consulter [Tutoriel : Hébergement de vidéos en streaming à la demande avec Amazon S3 CloudFront, Amazon et Amazon Route 53](tutorial-s3-cloudfront-route53-video-streaming.md). 

1. Cochez la case pour **Je reconnais que les paramètres actuels pourraient rendre ce compartiment et les objets qu’il contient accessibles publiquement.**

1. Conservez les paramètres restants définis sur les valeurs par défaut. 

1. Choisissez **Créer un compartiment**.

### Ajouter une configuration CORS à un compartiment de sortie S3
<a name="batchops-s3-step1-cors"></a>

Une configuration JSON CORS définit un moyen pour les applications Web clientes (lecteurs vidéo dans ce contexte) chargées dans un domaine particulier de lire des fichiers multimédias de sortie transcodés dans un autre domaine. 

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le nom du compartiment que vous avez créé précédemment (par ex., `amzn-s3-demo-destination-bucket1`).

1. Sélectionnez l’onglet **Autorisations**.

1. Dans la section **Partage des ressources cross-origin (CORS)**, choisissez **Modifier**.

1. Dans la zone de texte de configuration CORS, copiez-collez la configuration CORS ci-dessous.

   La configuration CORS doit être au format JSON. Dans cet exemple, l’attribut `AllowedOrigins` utilise le caractère générique (`*`) pour spécifier toutes les origines. Si vous connaissez votre origine précise, vous pouvez restreindre l’attribut `AllowedOrigins` à l’URL de votre lecteur spécifique. Pour plus d’informations sur la configuration de cet attribut et d’autres, consultez [Éléments d’une configuration CORS](ManageCorsUsing.md).

   ```
   [
       {
           "AllowedOrigins": [
               "*"
           ],
           "AllowedMethods": [
               "GET"
           ],
           "AllowedHeaders": [
               "*"
           ],
           "ExposeHeaders": []
   
       }
   ]
   ```

1. Sélectionnez **Enregistrer les modifications**.

## Étape 2 : créer un rôle IAM pour MediaConvert
<a name="batchops-s3-step2"></a>

 AWS Elemental MediaConvert Pour pouvoir transcoder des vidéos d'entrée stockées dans votre compartiment S3, vous devez disposer d'un rôle de service Gestion des identités et des accès AWS (IAM) qui octroie MediaConvert les autorisations de lecture et d'écriture de fichiers vidéo depuis et vers vos compartiments source et destination S3. Lorsque vous exécutez des tâches de transcodage, la MediaConvert console utilise ce rôle. 

**Pour créer un rôle IAM pour MediaConvert**

1. Créez un rôle IAM avec un nom de rôle que vous choisissez (par exemple, **tutorial-mediaconvert-role**). Pour créer ce rôle, suivez les étapes décrites dans la section [Créer votre MediaConvert rôle dans IAM (console)](https://docs.aws.amazon.com/mediaconvert/latest/ug/creating-the-iam-role-in-iam.html) dans le *guide de l'AWS Elemental MediaConvert utilisateur*.

1. Après avoir créé le rôle IAM pour MediaConvert, dans la liste des **rôles**, choisissez le nom du rôle pour MediaConvert lequel vous avez créé (par exemple,**tutorial-mediaconvert-role**).

1. Dans la page **Summary (Récapitulatif)**, copiez l’**ARN du rôle** (commençant par `arn:aws:iam::`), puis enregistrez l’ARN en vue d’une utilisation ultérieure. 

   Pour plus d'informations ARNs, consultez [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) dans le manuel de *référence AWS général*. 

## Étape 3 : créer un rôle IAM pour votre fonction Lambda
<a name="batchops-s3-step3"></a>

Pour transcoder des vidéos par lots avec MediaConvert S3 Batch Operations, vous utilisez une fonction Lambda pour connecter ces deux services afin de convertir des vidéos. Cette fonction Lambda doit avoir un rôle IAM qui accorde à la fonction Lambda des autorisations d'accès et MediaConvert des opérations de traitement par lots S3. 

**Topics**
+ [Créer un rôle IAM pour votre fonction Lambda](#batchops-s3-step3-role)
+ [Intégrez une politique en ligne pour le rôle IAM de votre fonction Lambda](#batchops-s3-step3-inline-policy)

### Créer un rôle IAM pour votre fonction Lambda
<a name="batchops-s3-step3-role"></a>

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation de gauche, choisissez **Rôles**, puis **Créer un rôle**. 

1. Cliquez sur le type de rôle de **service AWS **, puis, sous **Common use cases (Cas d’utilisation courants)**, choisissez **Lambda**. 

1. Choisissez **Suivant : Autorisations**. 

1. Sur la page **Attach Permissions policies (Attacher les stratégies d’autorisations)**, saisissez **AWSLambdaBasicExecutionRole** dans la case **Filter policies (Politiques de filtrage)**. Pour associer la politique gérée **AWSLambdaBasicExecutionRole**à ce rôle afin d'accorder des autorisations d'écriture à Amazon CloudWatch Logs, cochez la case à côté de **AWSLambdaBasicExecutionRole**.

1. Choisissez **Suivant**.

1. Pour le **Nom du rôle**, saisissez **tutorial-lambda-transcode-role**.

1. (Facultatif) Ajoutez des balises à la stratégie gérée.

1. Choisissez **Créer un rôle**.

### Intégrez une politique en ligne pour le rôle IAM de votre fonction Lambda
<a name="batchops-s3-step3-inline-policy"></a>

Pour accorder des autorisations à la MediaConvert ressource nécessaire à l'exécution de la fonction Lambda, vous devez utiliser une politique intégrée.

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation de gauche, choisissez **Rôles**. 

1. Dans la liste **Roles (Rôles)**, choisissez le nom du rôle IAM que vous avez créé précédemment pour votre fonction Lambda (par exemple, **tutorial-lambda-transcode-role**).

1. Sélectionnez l'onglet **Autorisations**.

1. Sélectionnez **Ajouter une politique en ligne**.

1. Choisissez l’onglet **JSON**, puis copiez et collez la stratégie JSON suivante.

   Dans la politique JSON, remplacez l'exemple de valeur `Resource` d'ARN de par le rôle ARN du rôle IAM MediaConvert que vous avez créé à l'[étape 2](#batchops-s3-step2) (par exemple,**tutorial-mediaconvert-role**).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": "*",
               "Effect": "Allow",
               "Sid": "Logging"
           },
           {
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/tutorial-mediaconvert-role"
               ],
               "Effect": "Allow",
               "Sid": "PassRole"
           },
           {
               "Action": [
                   "mediaconvert:*"
               ],
               "Resource": [
                   "*"
               ],
               "Effect": "Allow",
               "Sid": "MediaConvertService"
           },
           {
               "Action": [
                   "s3:*"
               ],
               "Resource": [
                   "*"
               ],
               "Effect": "Allow",
               "Sid": "S3Service"
           }
       ]
   }
   ```

------

1. Choisissez **Review Policy (Examiner une stratégie)**.

1. Pour **Nom**, saisissez **tutorial-lambda-policy**.

1. Choisissez **Create Policy** (Créer une politique).

   Lorsque vous aurez créé une politique en ligne, elle sera automatiquement intégrée au rôle IAM de votre fonction Lambda.

## Étape 4 : créer une fonction Lambda pour le transcodage vidéo
<a name="batchops-s3-step4"></a>

Dans cette section du didacticiel, vous allez créer une fonction Lambda à l'aide du SDK pour Python afin de l'intégrer à S3 Batch Operations et. MediaConvert Pour commencer à transcoder les vidéos déjà stockées dans votre compartiment source S3, vous exécutez une tâche d’opérations par lot S3 qui invoque directement la fonction Lambda pour chaque vidéo du compartiment source S3. Ensuite, la fonction Lambda soumet une tâche de transcodage pour chaque vidéo à. MediaConvert

**Topics**
+ [Écrire le code de la fonction Lambda et créer un package de déploiement](#batchops-s3-step4-write-function)
+ [Créer une fonction Lambda à l’aide d’un rôle d’exécution (console)](#batchops-s3-step4-create-function)
+ [Déployez votre fonction Lambda avec les archives de fichiers .zip, puis configurez la fonction Lambda (console)](#batchops-s3-step4-deploy-function)

### Écrire le code de la fonction Lambda et créer un package de déploiement
<a name="batchops-s3-step4-write-function"></a>

1. Sur votre ordinateur local, créez un dossier nommé `batch-transcode`.

1. Dans le dossier `batch-transcode`, créez un fichier contenant les paramètres de la tâche JSON. Par exemple, vous pouvez utiliser les paramètres fournis dans cette section et nommer le fichier `job.json`. 

   Un fichier `job.json` spécifie les éléments suivants : 
   + Quels fichiers transcoder
   + Comment transcoder vos vidéos d’entrée
   + Quels fichiers multimédias de sortie vous souhaitez créer
   + Quel nom à attribuer aux fichiers transcodés
   + Où enregistrer les fichiers transcodés
   + Quelles fonctions avancées appliquer, et ainsi de suite

   Dans ce didacticiel, nous utiliserons le fichier `job.json` suivant pour créer les sorties suivantes pour chaque vidéo dans le compartiment source S3 :
   + Un flux à débit adaptatif HTTP Live Streaming (HLS) pour lecture sur plusieurs appareils de diverses tailles et des largeurs de bande passante variables
   + Un fichier MP4 vidéo
   + Images miniatures collectées à intervalles

   Ce fichier d’exemple `job.json` utilise le débit variable selon la qualité (QVBR) pour optimiser la qualité de la vidéo. La sortie HLS est conforme aux applications d’Apple (fichier audio séparé du fichier vidéo, durée de segment de 6 secondes et qualité vidéo optimisée via QVBR automatique). 

   Si vous ne souhaitez pas utiliser les exemples de paramètres fournis ici, vous pouvez générer une spécification `job.json` basée sur votre cas d’utilisation. Pour assurer la cohérence entre vos sorties, vérifiez que vos fichiers d’entrée ont des configurations vidéo et audio similaires. Créez des automatisations distinctes (paramètres `job.json` uniques) pour tous les fichiers d’entrée avec différentes configurations vidéo et audio. Pour plus d’informations, consultez [Exemples de paramètres de tâche AWS Elemental MediaConvert en JSON](https://docs.aws.amazon.com/mediaconvert/latest/ug/example-job-settings.html) dans le *Guide de l’utilisateur AWS Elemental MediaConvert *. 

   ```
   {
     "OutputGroups": [
       {
         "CustomName": "HLS",
         "Name": "Apple HLS",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 640,
               "ScalingBehavior": "DEFAULT",
               "Height": 360,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 1200000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_360"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "TimedMetadataPid": 502,
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 960,
               "ScalingBehavior": "DEFAULT",
               "Height": 540,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 3500000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_540"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 5000000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_720"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {}
             },
             "AudioDescriptions": [
               {
                 "AudioSourceName": "Audio Selector 1",
                 "CodecSettings": {
                   "Codec": "AAC",
                   "AacSettings": {
                     "Bitrate": 96000,
                     "CodingMode": "CODING_MODE_2_0",
                     "SampleRate": 48000
                   }
                 }
               }
             ],
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioTrackType": "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT"
               }
             },
             "NameModifier": "_audio"
           }
         ],
         "OutputGroupSettings": {
           "Type": "HLS_GROUP_SETTINGS",
           "HlsGroupSettings": {
             "ManifestDurationFormat": "INTEGER",
             "SegmentLength": 6,
             "TimedMetadataId3Period": 10,
             "CaptionLanguageSetting": "OMIT",
             "Destination": "s3://EXAMPLE-BUCKET/HLS/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             },
             "TimedMetadataId3Frame": "PRIV",
             "CodecSpecification": "RFC_4281",
             "OutputSelection": "MANIFESTS_AND_SEGMENTS",
             "ProgramDateTimePeriod": 600,
             "MinSegmentLength": 0,
             "DirectoryStructure": "SINGLE_DIRECTORY",
             "ProgramDateTime": "EXCLUDE",
             "SegmentControl": "SEGMENTED_FILES",
             "ManifestCompression": "NONE",
             "ClientCache": "ENABLED",
             "StreamInfResolution": "INCLUDE"
           }
         }
       },
       {
         "CustomName": "MP4",
         "Name": "File Group",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "MP4",
               "Mp4Settings": {
                 "CslgAtom": "INCLUDE",
                 "FreeSpaceBox": "EXCLUDE",
                 "MoovPlacement": "PROGRESSIVE_DOWNLOAD"
               }
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 100,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "ParNumerator": 1,
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "HrdBufferInitialFillPercentage": 90,
                   "GopSize": 2,
                   "Slices": 2,
                   "GopBReference": "ENABLED",
                   "HrdBufferSize": 10000000,
                   "MaxBitrate": 5000000,
                   "ParDenominator": 1,
                   "EntropyEncoding": "CABAC",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "HIGH",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "AUTO",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "ENABLED",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "SPECIFIED",
                   "NumberBFramesBetweenReferenceFrames": 3,
                   "RepeatPps": "DISABLED",
                   "DynamicSubGop": "ADAPTIVE"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "AudioDescriptions": [
               {
                 "AudioTypeControl": "FOLLOW_INPUT",
                 "AudioSourceName": "Audio Selector 1",
                 "CodecSettings": {
                   "Codec": "AAC",
                   "AacSettings": {
                     "AudioDescriptionBroadcasterMix": "NORMAL",
                     "Bitrate": 160000,
                     "RateControlMode": "CBR",
                     "CodecProfile": "LC",
                     "CodingMode": "CODING_MODE_2_0",
                     "RawFormat": "NONE",
                     "SampleRate": 48000,
                     "Specification": "MPEG4"
                   }
                 },
                 "LanguageCodeControl": "FOLLOW_INPUT",
                 "AudioType": 0
               }
             ]
           }
         ],
         "OutputGroupSettings": {
           "Type": "FILE_GROUP_SETTINGS",
           "FileGroupSettings": {
             "Destination": "s3://EXAMPLE-BUCKET/MP4/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             }
           }
         }
       },
       {
         "CustomName": "Thumbnails",
         "Name": "File Group",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "RAW"
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "FRAME_CAPTURE",
                 "FrameCaptureSettings": {
                   "FramerateNumerator": 1,
                   "FramerateDenominator": 5,
                   "MaxCaptures": 500,
                   "Quality": 80
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             }
           }
         ],
         "OutputGroupSettings": {
           "Type": "FILE_GROUP_SETTINGS",
           "FileGroupSettings": {
             "Destination": "s3://EXAMPLE-BUCKET/Thumbnails/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             }
           }
         }
       }
     ],
     "AdAvailOffset": 0,
     "Inputs": [
       {
         "AudioSelectors": {
           "Audio Selector 1": {
             "Offset": 0,
             "DefaultSelection": "DEFAULT",
             "ProgramSelection": 1
           }
         },
         "VideoSelector": {
           "ColorSpace": "FOLLOW"
         },
         "FilterEnable": "AUTO",
         "PsiControl": "USE_PSI",
         "FilterStrength": 0,
         "DeblockFilter": "DISABLED",
         "DenoiseFilter": "DISABLED",
         "TimecodeSource": "EMBEDDED",
         "FileInput": "s3://EXAMPLE-INPUT-BUCKET/input.mp4"
       }
     ]
   }
   ```

1. Dans le dossier `batch-transcode`, créez un fichier avec une fonction Lambda. Vous pouvez utiliser l’exemple Python suivant et nommer le fichier `convert.py`.

   S3 Batch Operations envoie des données propres à la tâche à une fonction Lambda et demande des données de résultat en retour. Pour consulter des exemples de requête et de réponse pour la fonction Lambda, des informations sur les codes de réponse et de résultat, ainsi que des exemples de fonctions Lambda pour S3 Batch Operations, consultez [AWS Lambda Fonction Invoke](batch-ops-invoke-lambda.md). 

   ```
   import json
   import os
   from urllib.parse import urlparse
   import uuid
   import boto3
   
   """
   When you run an S3 Batch Operations job, your job  
   invokes this Lambda function. Specifically, the Lambda function is 
   invoked on each video object listed in the manifest that you specify 
   for the S3 Batch Operations job in Step 5.  
   
   Input parameter "event": The S3 Batch Operations event as a request
                            for the Lambda function.
   
   Input parameter "context": Context about the event.
   
   Output: A result structure that Amazon S3 uses to interpret the result 
           of the operation. It is a job response returned back to S3 Batch Operations.
   """
   def handler(event, context):
   
       invocation_schema_version = event['invocationSchemaVersion']
       invocation_id = event['invocationId']
       task_id = event['tasks'][0]['taskId']
   
       source_s3_key = event['tasks'][0]['s3Key']
       source_s3_bucket = event['tasks'][0]['s3BucketArn'].split(':::')[-1]
       source_s3 = 's3://' + source_s3_bucket + '/' + source_s3_key
   
       result_list = []
       result_code = 'Succeeded'
       result_string = 'The input video object was converted successfully.'
   
       # The type of output group determines which media players can play 
       # the files transcoded by MediaConvert.
       # For more information, see [Creating outputs with AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/creating-streaming-and-file-outputs.html).
       output_group_type_dict = {
           'HLS_GROUP_SETTINGS': 'HlsGroupSettings',
           'FILE_GROUP_SETTINGS': 'FileGroupSettings',
           'CMAF_GROUP_SETTINGS': 'CmafGroupSettings',
           'DASH_ISO_GROUP_SETTINGS': 'DashIsoGroupSettings',
           'MS_SMOOTH_GROUP_SETTINGS': 'MsSmoothGroupSettings'
       }
   
       try:
           job_name = 'Default'
           with open('job.json') as file:
               job_settings = json.load(file)
   
           job_settings['Inputs'][0]['FileInput'] = source_s3
   
           # The path of each output video is constructed based on the values of 
           # the attributes in each object of OutputGroups in the job.json file. 
           destination_s3 = 's3://{0}/{1}/{2}' \
               .format(os.environ['amzn-s3-demo-destination-bucket'],
                       os.path.splitext(os.path.basename(source_s3_key))[0],
                       os.path.splitext(os.path.basename(job_name))[0])
   
           for output_group in job_settings['OutputGroups']:
               output_group_type = output_group['OutputGroupSettings']['Type']
               if output_group_type in output_group_type_dict.keys():
                   output_group_type = output_group_type_dict[output_group_type]
                   output_group['OutputGroupSettings'][output_group_type]['Destination'] = \
                       "{0}{1}".format(destination_s3,
                                       urlparse(output_group['OutputGroupSettings'][output_group_type]['Destination']).path)
               else:
                   raise ValueError("Exception: Unknown Output Group Type {}."
                                    .format(output_group_type))
   
           job_metadata_dict = {
               'assetID': str(uuid.uuid4()),
               'application': os.environ['Application'],
               'input': source_s3,
               'settings': job_name
           }
   
           region = os.environ['AWS_DEFAULT_REGION']
           endpoints = boto3.client('mediaconvert', region_name=region) \
               .describe_endpoints()
           client = boto3.client('mediaconvert', region_name=region, 
                                  endpoint_url=endpoints['Endpoints'][0]['Url'], 
                                  verify=False)
   
           try:
               client.create_job(Role=os.environ['MediaConvertRole'], 
                                 UserMetadata=job_metadata_dict, 
                                 Settings=job_settings)
           # You can customize error handling based on different error codes that 
           # MediaConvert can return.
           # For more information, see [MediaConvert error codes](https://docs.aws.amazon.com/mediaconvert/latest/ug/mediaconvert_error_codes.html). 
           # When the result_code is TemporaryFailure, S3 Batch Operations retries 
           # the task before the job is completed. If this is the final retry, 
           # the error message is included in the final report.
           except Exception as error:
               result_code = 'TemporaryFailure'
               raise
       
       except Exception as error:
           if result_code != 'TemporaryFailure':
               result_code = 'PermanentFailure'
           result_string = str(error)
   
       finally:
           result_list.append({
               'taskId': task_id,
               'resultCode': result_code,
               'resultString': result_string,
           })
   
       return {
           'invocationSchemaVersion': invocation_schema_version,
           'treatMissingKeyAs': 'PermanentFailure',
           'invocationId': invocation_id,
           'results': result_list
       }
   ```

1. Pour créer un package de déploiement avec `convert.py` et `job.json` sous forme de fichier `.zip` nommé `lambda.zip`, dans votre terminal local, ouvrez le dossier `batch-transcode` que vous avez créé précédemment et exécutez la commande suivante.

   Pour les **utilisateurs macOS**, exécutez la commande suivante :

   ```
   zip -r lambda.zip convert.py job.json                
   ```

   Pour les **utilisateurs Windows**, exécutez les commandes suivantes :

   ```
   powershell Compress-Archive convert.py lambda.zip
   ```

   ```
   powershell Compress-Archive -update job.json lambda.zip                
   ```

### Créer une fonction Lambda à l’aide d’un rôle d’exécution (console)
<a name="batchops-s3-step4-create-function"></a>

1. 

   Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dans le volet de navigation de gauche, choisissez **Fonctions**.

1. Choisissez **Créer une fonction**.

1. Choisissez **Créer à partir de zéro**.

1. Sous **Informations de base**, procédez comme suit :

   1. Sous **Nom de la fonction**, saisissez **tutorial-lambda-convert**.

   1. Pour **Runtime**, choisissez **Python 3.13**.

1. Choisissez **Modifier le rôle d’exécution par défaut** et, sous **Rôle d’exécution**, choisissez **Utiliser un rôle existant**.

1. Sous **Existing role (Rôle existant)**, choisissez le nom du rôle IAM que vous avez créé pour votre fonction Lambda à l’[étape 3](#batchops-s3-step3) (par exemple, **tutorial-lambda-transcode-role**).

1. Pour les paramètres restants, conservez les paramètres par défaut.

1. Choisissez **Créer une fonction**.

### Déployez votre fonction Lambda avec les archives de fichiers .zip, puis configurez la fonction Lambda (console)
<a name="batchops-s3-step4-deploy-function"></a>

1. Dans la section **Code Source (Source du code)** de la page de la fonction Lambda que vous avez créée (par exemple, **tutorial-lambda-convert**), choisissez **Upload from (Télécharger à partir de)**, puis le **fichier .zip**.

1. Choisissez **Charger** pour sélectionner votre fichier `.zip` local.

1. Choisissez le fichier `lambda.zip` que vous avez créé précédemment, puis choisissez **Open (Ouvrir)**.

1. Choisissez **Enregistrer**.

1. Dans la section **Paramètres d’exécution**, choisissez **Modifier**. 

1. Pour indiquer à l’exécution Lambda la méthode de gestionnaire dans votre code de fonction Lambda à invoquer, saisissez **convert.handler** dans le champ **Gestionnaire**.

   Quand vous configurez une fonction dans Python, la valeur du paramètre de gestionnaire correspond au nom de fichier et au nom de module de gestionnaire, séparés par un point (`.`). Par exemple, `convert.handler` appelle la méthode `handler` définie dans le fichier `convert.py`.

1. Choisissez **Enregistrer**.

1. Dans la page de la fonction Lambda, choisissez l’onglet **Configuration**. Dans le volet de navigation de gauche de l’onglet **Configuration**, choisissez **Variables d’environnement**, puis **Modifier**.

1. Choisissez **Ajouter une variable d’environnement**. Ensuite, saisissez la **clé** et la **valeur** spécifiées pour chacune des variables d’environnement suivantes :
   + **Clé** : **Valeur** **DestinationBucket** : **amzn-s3-demo-destination-bucket1** 

     Cette valeur est le compartiment S3 pour les fichiers multimédias de sortie que vous avez créés à l’[étape 1](#batchops-s3-step1).
   + **Clé** : **Valeur** **MediaConvertRole** : **arn:aws:iam::*111122223333*:role/tutorial-mediaconvert-role** 

     Cette valeur est l'ARN du rôle IAM MediaConvert que vous avez créé à l'[étape 2.](#batchops-s3-step2) Assurez-vous de remplacer cet ARN par le véritable ARN de votre rôle IAM.
   + **Clé** : **Valeur** **Application** : **Batch-Transcoding** 

     Cette valeur est le nom de l’application.

1. Choisissez **Enregistrer**.

1. (Facultatif) Dans l’onglet **Configuration**, dans la section **Configuration générale** du volet de navigation de gauche, choisissez **Modifier**. Dans le champ **Délai d'expiration**, saisissez **2** min **0** sec. Ensuite, choisissez **Enregistrer**.

   Le **Délai d'expiration** est le temps que Lambda autorise pour l'exécution d'une fonction avant de l'arrêter. Le durée par défaut est de 3 secondes. La tarification est basée sur la quantité de mémoire configurée et la durée pendant laquelle votre code s'exécute. Pour en savoir plus, consultez [Pricing AWS Lambda](https://aws.amazon.com/lambda/pricing/?icmpid=docs_console_unmapped) (Tarification).

## Étape 5 : configurer S3 Inventory pour votre compartiment source S3
<a name="batchops-s3-step5"></a>

Après avoir configuré la fonction Lambda de transcodage, créez une tâche S3 Batch Operations pour transcoder un jeu de vidéos. Tout d’abord, vous avez besoin d’une liste d’objets vidéo d’entrée sur lesquels S3 Batch Operations devra exécuter l’action de transcodage indiquée. Pour obtenir une liste d’objets vidéo d’entrée, vous pouvez générer un rapport S3 Inventory pour votre compartiment source S3 (par exemple, `amzn-s3-demo-source-bucket`). 

**Topics**
+ [Créer et configurer un compartiment pour les rapports S3 Inventory des vidéos d’entrée](#batchops-s3-step5-bucket)
+ [Configurer Amazon S3 Inventory pour votre compartiment source S3 des vidéos](#batchops-s3-step5-inventory)
+ [Consultez le rapport d’inventaire pour votre compartiment source S3 de vidéos](#batchops-s3-step5-manifest)

### Créer et configurer un compartiment pour les rapports S3 Inventory des vidéos d’entrée
<a name="batchops-s3-step5-bucket"></a>

Pour stocker un rapport S3 Inventory qui répertorie les objets du compartiment source S3, créez un compartiment de destination S3 Inventory, puis configurez une stratégie de compartiment pour que le compartiment puisse écrire des fichiers d’inventaire dans le compartiment source S3.

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Choisissez **Créer un compartiment**. 

1. Pour **Bucket Name (Nom du compartiment)**, indiquez le nom de votre compartiment, (par exemple, `amzn-s3-demo-destination-bucket2`). 

1. Pour **Région AWS**, choisissez l' Région AWS endroit où vous souhaitez que le compartiment réside. 

   Le compartiment de destination de l'inventaire doit se trouver dans le même compartiment Région AWS que le compartiment source dans lequel vous configurez S3 Inventory. Le compartiment de destination d’inventaire peut être dans un autre Compte AWS. 

1. Dans **Block Public Access settings for this bucket (Bloquer les paramètres d’accès public pour ce compartiment)**, conservez les paramètres par défaut (**Block *all *public access** Bloquer tous les accès publics) est activé). 

1. Pour les paramètres restants, conservez les paramètres par défaut. 

1. Choisissez **Créer un compartiment**.

1. Dans la liste **Compartiments**, choisissez le nom du compartiment que vous venez de créer (par exemple, `amzn-s3-demo-destination-bucket2`).

1. Pour accorder à Amazon S3 l’autorisation d’écrire des données pour les rapports d’inventaire dans le compartiment de destination S3 Inventory, choisissez l’onglet **Permissions (Autorisations)**.

1. Faites défiler jusqu’à la section **Stratégie de compartiment**, puis choisissez **Modifier**. La page **Stratégie de compartiment** s’ouvre.

1. Pour accorder des autorisations pour S3 Inventory, dans le champ **Policy (Stratégie)**, collez la stratégie de compartiment suivante.

   Remplacez les trois exemples de valeurs par les valeurs suivantes : 
   + Le nom du compartiment que vous avez créé pour stocker les rapports d’inventaire (par exemple, `amzn-s3-demo-destination-bucket2`).
   + Le nom du compartiment source qui stocke les vidéos d’entrée (par exemple, `amzn-s3-demo-source-bucket`). 
   + L' Compte AWS ID que vous avez utilisé pour créer le compartiment de source vidéo S3 (par exemple,`111122223333`.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
       {
         "Sid":"InventoryAndAnalyticsExamplePolicy",
         "Effect":"Allow",
         "Principal": {"Service": "s3.amazonaws.com"},
         "Action":"s3:PutObject",
         "Resource":["arn:aws:s3:::amzn-s3-demo-destination-bucket2/*"],
         "Condition": {
             "ArnLike": {
                 "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
              },
            "StringEquals": {
                "aws:SourceAccount": "111122223333",
                "s3:x-amz-acl": "bucket-owner-full-control"
             }
          }
       }
     ]
   }
   ```

------

1. Sélectionnez **Enregistrer les modifications**.

### Configurer Amazon S3 Inventory pour votre compartiment source S3 des vidéos
<a name="batchops-s3-step5-inventory"></a>

Pour générer une liste de fichiers plats d’objets vidéo et de métadonnées, vous devez configurer S3 Inventory pour votre compartiment source S3 des vidéos. Ces rapports d’inventaire planifiés peuvent inclure tous les objets du compartiment ou les objets regroupés par un préfixe partagé. Dans ce didacticiel, le rapport S3 Inventory inclut tous les objets vidéo de votre compartiment source S3.

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Pour configurer un rapport S3 Inventory des vidéos d’entrée dans votre compartiment source S3, dans la liste **Compartiments**, choisissez le nom du compartiment source S3 (par exemple, `amzn-s3-demo-source-bucket`).

1. Choisissez l’onglet **Gestion**.

1. Faites défiler jusqu’à la section **Inventory configurations (Configurations d’inventaire)** et choisissez **Create inventory configuration (Créer une configuration d’inventaire)**. 

1. Pour le **Nom de la configuration d’inventaire**, saisissez un nom (par exemple, **tutorial-inventory-config**). 

1. Sous **Portée de l’inventaire**, choisissez **Version actuelle uniquement** pour **Versions d’objet** et conservez les autres paramètres **Portée de l’inventaire** définis sur les valeurs par défaut de ce didacticiel. 

1. Dans la section **Report details (Détails du rapport)**, pour **Destination bucket (Compartiment de destination)**, choisissez **This account (Ce compte)**. 

1. Pour **Destination**, choisissez **Browse S3 (Parcourir S3)**, puis choisissez le compartiment de destination que vous avez créé précédemment pour enregistrer les rapports d’inventaire (par exemple, `amzn-s3-demo-destination-bucket2`). Ensuite, choisissez **Choose path (Choisir un chemin)**. 

   Le compartiment de destination de l'inventaire doit se trouver dans le même compartiment Région AWS que le compartiment source dans lequel vous configurez S3 Inventory. Le compartiment de destination d'inventaire peut être dans un autre Compte AWS. 

   Sous le champ du compartiment **Destination**, l’**autorisation du compartiment de destination** est ajoutée à la politique du compartiment de destination afin de permettre à Amazon S3 de placer des données dans le compartiment de destination d’inventaire. Pour plus d’informations, consultez [Création d’une stratégie de compartiment de destination](configure-inventory.md#configure-inventory-destination-bucket-policy).

1. Pour **Frequency (Fréquence)**, choisissez **Daily (Quotidiennement)**.

1. Pour **Output format (Format de sortie)**, choisissez **CSV**. 

1. Pour **Statut**, choisissez **Activer**. 

1. Dans la section **Server-side encryption (Chiffrement côté serveur)**, choisissez **Disable (Désactiver)** pour ce didacticiel. 

   Pour plus d’informations, consultez [Configuration de l’inventaire à l’aide de la console S3](configure-inventory.md#configure-inventory-console) et [Octroi à Amazon S3 d’utiliser votre clé gérée par le client pour le chiffrement](configure-inventory.md#configure-inventory-kms-key-policy). 

1. Dans la section **Additional fields - *optional* (Champs supplémentaires – facultatif)**, sélectionnez **Size (Taille)** **Last modified (Dernière modification)** et **Storage class (Classe de stockage)**. 

1. Choisissez **Créer**.

Pour plus d’informations, consultez [Configuration de l’inventaire à l’aide de la console S3](configure-inventory.md#configure-inventory-console).

### Consultez le rapport d’inventaire pour votre compartiment source S3 de vidéos
<a name="batchops-s3-step5-manifest"></a>

Lorsqu’un rapport d’inventaire est publié, les fichiers manifestes sont envoyés au compartiment de destination S3 Inventory.

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste des **Compartiments**, choisissez le nom du compartiment source des vidéos (par exemple, `amzn-s3-demo-source-bucket`).

1. Choisissez **Gestion**.

1. Pour savoir si votre rapport S3 Inventory est prêt afin que vous puissiez créer une tâche S3 Batch Operations à l’[étape 7](#batchops-s3-step7), sous **Inventory configurations (Configurations d’inventaire)**, vérifiez si le bouton **Create job from manifest (Créer une tâche à partir du manifeste)** est activé.
**Note**  
La distribution du premier rapport d’inventaire peut prendre jusqu’à 48 heures. Si l’icône **Créer une tâche à partir du manifeste** est désactivé, cela signifie que le premier rapport d’inventaire n’a pas été remis. Attendez que le premier rapport d’inventaire soit livré et que le bouton **Create job from manifest (Créer une tâche à partir du manifeste)** soit activé pour créer une tâche S3 Batch Operations à l’[étape 7](#batchops-s3-step7). 

1. Pour vérifier un rapport S3 Inventory (`manifest.json`), dans la colonne **Destination**, choisissez le nom du compartiment de destination d’inventaire que vous avez créé précédemment pour stocker les rapports d’inventaire (par exemple, `amzn-s3-demo-destination-bucket2`).

1. Dans l’onglet **Objects (Objets)**, choisissez le dossier existant portant le nom de votre compartiment source S3 (par exemple, `amzn-s3-demo-source-bucket`). Choisissez ensuite le nom dans lequel vous avez saisi dans **Inventory configuration name (Nom de configuration d’inventaire)** lorsque vous avez créé la configuration d’inventaire précédemment (par exemple, **tutorial-inventory-config**).

   Vous pouvez afficher une liste de dossiers avec les dates de génération des rapports en guise de noms. 

1. Pour vérifier le rapport S3 Inventory quotidien à une date donnée, choisissez le dossier avec le nom de date de génération correspondant, puis choisissez `manifest.json`. 

1. Pour vérifier les détails du rapport d’inventaire à une date précise, dans la page **manifest.json**, choisissez **Télécharger** ou **Ouvrir**.

## Étape 6 : créer un rôle IAM pour S3 Batch Operations
<a name="batchops-s3-step6"></a>

Pour utiliser S3 Batch Operations à des fins de transcodage par lots, vous devez d’abord créer un rôle IAM pour permettre à Amazon S3 d’exécuter S3 Batch Operations. 

**Topics**
+ [Créer une politique IAM pour S3 Batch Operations](#batchops-s3-step6-policy)
+ [Créez un rôle IAM S3 Batch Operations et attachez les politiques d’autorisations](#batchops-s3-step6-role)

### Créer une politique IAM pour S3 Batch Operations
<a name="batchops-s3-step6-policy"></a>

Vous devez créer une politique IAM qui autorise S3 Batch Operations à lire le manifeste d’entrée, invoquer la fonction Lambda et écrire le rapport de fin de tâche S3 Batch Operations. 

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation de gauche, choisissez **Politiques**.

1. Choisissez **Créer une politique**.

1. Choisissez l'onglet **JSON**.

1. Dans le champ **JSON**, collez la politique JSON suivante.

   Dans la stratégie JSON, remplacez les quatre valeurs d’exemple par les valeurs suivantes :
   + Le nom du compartiment source qui stocke vos vidéos d’entrée (par exemple, `amzn-s3-demo-source-bucket`).
   + Le nom du compartiment de destination d’inventaire que vous avez créé à l’[étape 5](#batchops-s3-step5) pour stocker des fichiers `manifest.json` (par exemple, `amzn-s3-demo-destination-bucket2`).
   + Le nom du compartiment que vous avez créé à l’[étape 1](#batchops-s3-step1) pour stocker des fichiers multimédias de sortie (par exemple, `amzn-s3-demo-destination-bucket1`). Dans ce didacticiel, nous mettons les rapports d’achèvement dans le compartiment de destination des fichiers multimédias de sortie. 
   + L’ARN du rôle de la fonction Lambda que vous avez créée à l’[étape 4](#batchops-s3-step4). Pour rechercher et copier l’ARN de rôle de la fonction Lambda, procédez comme suit : 
     + Dans un nouvel onglet du navigateur, ouvrez la page **Functions (Fonctions)** de la console Lambda à l’adresse [https://console.aws.amazon.com/lambda/home#/functions](https://console.aws.amazon.com/lambda/home#/functions).
     + Dans la liste **Functions (Fonctions)**, choisissez le nom de la fonction Lambda que vous avez créée à l’[étape 4](#batchops-s3-step4) (par exemple, **tutorial-lambda-convert**).
     + Choisissez **Copier l'ARN**.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3Get",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
                   "arn:aws:s3:::amzn-s3-demo-destination-bucket2/*"
               ]
           },
           {
               "Sid": "S3PutJobCompletionReport",
               "Effect": "Allow",
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket1/*"
           },
           {
               "Sid": "S3BatchOperationsInvokeLambda",
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Resource": [
                   "arn:aws:lambda:us-west-2:111122223333:function:tutorial-lambda-convert"
               ]
           }
       ]
   }
   ```

------

1. Choisissez **Étape suivante : balises**.

1. Choisissez **Étape suivante : vérification)**.

1. Dans le champ **Nom**, saisissez **tutorial-s3batch-policy**.

1. Choisissez **Create Policy** (Créer une politique).

### Créez un rôle IAM S3 Batch Operations et attachez les politiques d’autorisations
<a name="batchops-s3-step6-role"></a>

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation de gauche, choisissez **Roles (Rôles)**, puis **Create role (Créer un rôle)**.

1. Choisissez le type de rôle **Service AWS**, puis le service **S3**.

1. Sous **Sélectionner votre cas d’utilisation**, choisissez **S3 Batch Operations**.

1. Choisissez **Suivant**.

1. Sous **Attacher des autorisations**, saisissez le nom de la politique IAM que vous avez créée précédemment (par exemple, **tutorial-s3batch-policy**) dans la zone de recherche pour filtrer la liste des politiques. Cochez la case en regard du nom de la stratégie (par exemple, **tutorial-s3batch-policy**). 

1. Choisissez **Suivant**.

1. Pour le **Nom du rôle**, saisissez **tutorial-s3batch-role**.

1. Choisissez **Créer un rôle**.

   Après avoir créé le rôle IAM pour S3 Batch Operations, la politique de confiance suivante sera automatiquement attachée au rôle. Cette stratégie d’approbation permet au principal du service S3 Batch Operations d’assumer le rôle IAM.

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":"batchoperations.s3.amazonaws.com"
            },
            "Action":"sts:AssumeRole"
         }
      ]
   }
   ```

------

## Étape 7 : configurer et exécuter une tâche S3 Batch Operations
<a name="batchops-s3-step7"></a>

Pour créer une tâche S3 Batch Operations aux fins de traiter les vidéos d’entrée dans votre compartiment source S3, vous devez préciser des paramètres pour cette tâche particulière.

**Note**  
Avant de commencer à créer une tâche S3 Batch Operations, vérifiez que le bouton **Create job from manifest (Créer une tâche à partir du manifeste)** est activé. Pour plus d’informations, consultez [Consultez le rapport d’inventaire pour votre compartiment source S3 de vidéos](#batchops-s3-step5-manifest). Si le bouton **Create job from manifest (Créer une tâche à partir du manifeste)** est désactivé, cela signifie que le premier rapport d’inventaire n’a pas été livré et vous devez attendre que le bouton soit activé. Après avoir configuré Amazon S3 Inventory pour votre compartiment source S3 à l’[étape 5](#batchops-s3-step5), la livraison du premier rapport d’inventaire peut prendre jusqu’à 48 heures.

**Topics**
+ [Créer une tâche S3 Batch Operations](#batchops-s3-step7-create-job)
+ [Exécutez la tâche d’opérations par lot S3 pour invoquer votre fonction Lambda](#batchops-s3-step7-run-job)
+ [(Facultatif) Vérifiez votre rapport d’achèvement](#batchops-s3-step7-check-report)
+ [(Facultatif) Contrôlez chaque invocation Lambda dans la console Lambda](#batchops-s3-step7-monitor-lambda)
+ [(Facultatif) Surveillez chaque tâche de MediaConvert transcodage vidéo dans la console MediaConvert](#batchops-s3-step7-monitor-mediaconvert)

### Créer une tâche S3 Batch Operations
<a name="batchops-s3-step7-create-job"></a>

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Opérations par lot**.

1. Choisissez **Créer une tâche**.

1. Pour **Région AWS**, choisissez la Région dans laquelle vous souhaitez créer votre tâche.

   Dans ce didacticiel, pour utiliser la tâche d’opérations par lot S3 aux fins d’invoquer une fonction Lambda, vous devez créer la tâche dans la même Région que le compartiment de source S3 des vidéos où se trouvent les objets référencés dans le manifeste.

1. Dans la section **Manifest (Manifeste)**, procédez comme suit :

   1. Pour **Manifest format** (Format du manifeste), choisissez **S3 Inventory report (manifest.json)** (Rapport d’inventaire S3 [manifest.json]).

   1. Pour **Manifest object (Objet du manifeste)**, choisissez **Browse S3 (Parcourir S3)** pour chercher le compartiment que vous avez créé à l’[étape 5](#batchops-s3-step5) pour stocker des rapports d’inventaire (par exemple, `amzn-s3-demo-destination-bucket2`). Sur la page **Manifest object (Objet manifeste)**, parcourez les noms des objets jusqu’à ce que vous trouviez un fichier `manifest.json` pour une date spécifique. Ce fichier répertorie les informations sur toutes les vidéos que vous souhaitez transcoder par lots. Lorsque vous avez trouvé le fichier `manifest.json` que vous souhaitez utiliser, choisissez le bouton d’option en regard de celui-ci. Ensuite, choisissez **Choose path (Choisir un chemin)**.

   1. (Facultatif) Pour **Manifest object version ID - *optional* (ID de version de l’objet manifeste - facultatif)**, saisissez l’ID de version de l’objet manifeste si vous souhaitez utiliser une autre version que la plus récente.

1. Choisissez **Suivant**.

1. Pour utiliser la fonction Lambda afin de transcoder tous les objets répertoriés dans le fichier `manifest.json` sélectionné, sous **Type d’opération**, choisissez **Invoquer la fonction AWS Lambda **.

1. Dans la section **Appeler une fonction Lambda**, procédez comme suit :

   1. Choisissez **Choisir parmi les fonctions dans votre compte**.

   1. Pour **Lambda function (Fonction Lambda)**, choisissez la fonction Lambda que vous avez créée à l’[étape 4](#batchops-s3-step4) (par exemple, **tutorial-lambda-convert**).

   1. Pour **Lambda function version (Version de la fonction Lambda)**, conservez la valeur par défaut **\$1LATEST**.

1. Choisissez **Suivant**. La page **Configure additional options (Configurer des options supplémentaires)** s’ouvre.

1. Dans la section **Additional options (Options supplémentaires)**, conservez les paramètres par défaut.

   Pour plus d’informations sur ces options, consultez [Éléments d’une demande de tâche d’opération par lot](batch-ops-create-job.md#batch-ops-create-job-request-elements).

1. Dans la section **Rapport d’achèvement**, pour **Chemin vers la destination du rapport d’achèvement**, choisissez **Parcourir S3**. Recherchez le compartiment que vous avez créé à l’[étape 1](#batchops-s3-step1) pour des fichiers multimédias de sortie (par exemple, `amzn-s3-demo-destination-bucket1`). Choisissez le bouton d’option en regard du nom de ce compartiment. Ensuite, choisissez **Choose path (Choisir un chemin)**.

   Pour les paramètres de **rapport d’achèvement** restants, conservez les paramètres par défaut. Pour en savoir plus sur les paramètres des rapports d’achèvement, consultez [Éléments d’une demande de tâche d’opération par lot](batch-ops-create-job.md#batch-ops-create-job-request-elements). Un rapport d’achèvement conserve un enregistrement des détails de la tâche et des opérations exécutées.

1. Dans la section **Permissions (Autorisations)**, choisissez **Choose from existing IAM roles (Choisir parmi les rôles IAM existants)**. Pour **Rôle IAM**, choisissez le rôle IAM pour votre tâche S3 Batch Operations job que vous avez créée à l’[étape 6](#batchops-s3-step6) (par exemple, **tutorial-s3batch-role**).

1. Choisissez **Suivant**.

1. Sur la page **Review (Vérification)**, vérifiez les paramètres. Ensuite, choisissez **Create job (Créer une tâche)**.

   Lorsque S3 termine la lecture du manifeste de votre tâche S3 Batch Operations, la tâche passe à l’**état** **Awaiting your confirmation to run (En attente de confirmation)**. Pour afficher les mises à jour de l’état de la tâche, actualisez la page. Vous ne pouvez pas exécuter votre tâche tant que son statut n’est pas **Awaiting your confirmation to run (En attente de confirmation)**.

### Exécutez la tâche d’opérations par lot S3 pour invoquer votre fonction Lambda
<a name="batchops-s3-step7-run-job"></a>

Exécutez votre tâche d’opérations par lots pour invoquer votre fonction Lambda aux fins de transcodage vidéo. Si votre tâche échoue, vous pouvez vérifier votre rapport d’achèvement pour identifier la cause.

**Pour exécuter la tâche S3 Batch Operations**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Batch Operations (Opérations par lot)**.

1. Dans la liste **Jobs (Tâches)**, choisissez l’**ID de tâche** de la tâche sur la première ligne, qui est la tâche S3 Batch Operations que vous avez créée précédemment.

1. Choisissez **Exécuter la tâche**. 

1. Vérifiez à nouveau les paramètres de votre tâche et confirmez que la valeur du **Nombre total d’objets répertoriés dans le manifeste** est le même que le nombre d’objets indiqué dans le manifeste. Ensuite, choisissez **Run job (Exécuter la tâche)**.

   La page de votre tâche S3 Batch Operations s’ouvre.

1. Lorsque la tâche aura commencé à s’exécuter, dans la page de votre tâche, sous **État**, vérifiez la progression de votre tâche S3 Batch Operations, par exemple **État**, ** % Terminé**, **Total réussi (débit)**,**Total échoué (débit)**, **Date de la résiliation**, et **Raison de la résiliation**.

   Lorsque la tâche S3 Batch Operations sera terminée, affichez les données dans la page de votre tâche pour confirmer qu’elle s’est achevée comme prévu. 

   Si plus de 50 % des opérations objet d’une tâche S3 Batch Operations échouent après que plus de 1 000 opérations aient été tentées, la tâche échouera automatiquement. Pour vérifier votre rapport d’achèvement afin d’identifier la cause des échecs, utilisez la procédure facultative ci-dessous.

### (Facultatif) Vérifiez votre rapport d’achèvement
<a name="batchops-s3-step7-check-report"></a>

Vous pouvez utiliser votre rapport d’achèvement pour déterminer quels objets ont échoué et la cause des échecs.

**Pour vérifier votre rapport d’achèvement afin d’obtenir plus de détails sur les objets qui ont échoué**

1. Dans la page de votre tâche S3 Batch Operations, faites défiler jusqu’à la section **Completion report (Rapport d’achèvement)**, puis cliquez sur le lien sous **Completion report destination (Destination du rapport d’achèvement)**.

   La page du compartiment de destination de sortie S3 s’ouvre.

1. Dans l’onglet **Objects (Objets)**, choisissez le dossier dont le nom se termine par l’ID de tâche de la tâche S3 Batch Operations que vous avez créée précédemment.

1. Choisissez **résultats/**.

1. Cochez la case en regard du fichier `.csv`.

1. Pour afficher le rapport de la tâche, choisissez **Open (Ouvrir)** ou **Download (Télécharger)**.

### (Facultatif) Contrôlez chaque invocation Lambda dans la console Lambda
<a name="batchops-s3-step7-monitor-lambda"></a>

Lorsque la tâche d’opérations par lot S3 commence à s’exécuter, la tâche invoque la fonction Lambda pour chaque objet d’entrée vidéo. S3 écrit les journaux de chaque appel Lambda dans Logs. CloudWatch Vous pouvez utiliser le tableau de bord de surveillance de la console Lambda pour surveiller votre fonction Lambda. 

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dans le volet de navigation de gauche, choisissez **Fonctions**.

1. Dans la liste **Functions (Fonctions)**, choisissez le nom de la fonction Lambda que vous avez créée à l’[étape 4](#batchops-s3-step4) (par exemple, **tutorial-lambda-convert**).

1. Choisissez l’onglet **Surveiller**.

1. Sous **Métriques**, consultez les mesures de l’environnement d’exécution de votre fonction Lambda.

1. Sous **Logs**, consultez les données du journal pour chaque appel Lambda via CloudWatch Logs Insights.
**Note**  
Si vous utilisez des opérations de lots S3 avec une fonction Lambda, la fonction Lambda sera invoquée sur chaque objet. Si votre tâche d’opérations par lot S3 est volumineuse, elle pourra invoquer plusieurs fonctions Lambda en même temps, provoquant un pic dans la simultanéité Lambda.   
Chacune Compte AWS dispose d'un quota de simultanéité Lambda par région. Pour plus d’informations, consultez [AWS Lambda Function Scaling (Mise à l’échelle de fonction Lambda)](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html) dans le *Guide du développeur AWS Lambda *. Une bonne pratique pour utiliser les fonctions Lambda avec les opérations par lots S3 consiste à définir une limite de simultanéité sur la fonction Lambda elle-même. La définition d’une limite de simultanéité empêche votre tâche de consommer la majeure partie de votre simultanéité Lambda et de limiter éventuellement d’autres fonctions de votre compte. Pour plus d’informations, consultez [Gestion de la simultanéité réservée Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) dans le *Guide du développeur AWS Lambda *.

### (Facultatif) Surveillez chaque tâche de MediaConvert transcodage vidéo dans la console MediaConvert
<a name="batchops-s3-step7-monitor-mediaconvert"></a>

Une MediaConvert tâche consiste à transcoder un fichier multimédia. Lorsque votre tâche S3 Batch Operations appelle votre fonction Lambda pour chaque vidéo, chaque appel de fonction Lambda crée MediaConvert une tâche de transcodage pour chaque vidéo en entrée. 

1. Connectez-vous à la MediaConvert console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/mediaconvert/](https://console.aws.amazon.com/mediaconvert/).

1. Si la page MediaConvert d'introduction apparaît, choisissez **Commencer**.

1. Dans la liste des **Tâches**, affichez chaque ligne pour contrôler la tâche de transcodage pour chaque vidéo d’entrée. 

1. Identifiez la ligne d’une tâche à vérifier, puis cliquez sur le lien **Job ID (ID de tâche)** pour ouvrir la page de détails de la tâche.

1. Sur la page de **résumé du Job**, sous **Sorties**, cliquez sur le lien vers la sortie HLS ou Thumbnails, selon ce qui est pris en charge par votre navigateur, pour accéder au compartiment de destination S3 pour les fichiers multimédia de sortie. MP4

1. Dans le dossier correspondant (HLS ou Thumbnails) de votre compartiment de destination de sortie S3, choisissez le nom de l'objet du fichier multimédia de sortie. MP4

   La page de détails de l’objet s’ouvre.

1. Dans la page de détails de l’objet, sous **Object overview (Présentation de l’objet)**, choisissez le lien sous la rubrique **Object URL (URL de l’objet)** pour regarder le fichier multimédia de sortie transcodé.

## Étape 8 : vérifier les fichiers multimédias de sortie à partir de votre compartiment de destination S3
<a name="batchops-s3-step8"></a>

**Vérifier les fichiers multimédias de sortie à partir de votre compartiment de destination S3**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le nom du compartiment de destination S3 pour les fichiers multimédias de sortie que vous avez créés à l’[étape 1](#batchops-s3-step1) (par exemple, `amzn-s3-demo-destination-bucket1`).

1. Dans l’onglet **Objets**, chaque vidéo d’entrée possède un dossier portant le nom de la vidéo d’entrée. Chaque dossier contient les fichiers multimédias de sortie transcodés d’une vidéo d’entrée.

   Pour vérifier les fichiers multimédias de sortie d’une vidéo d’entrée, procédez comme suit :

   1. Choisissez le dossier portant le nom de la vidéo d’entrée que vous souhaitez vérifier.

   1. Choisissez le dossier **Par défaut/**.

   1. Choisissez le dossier pour un format transcodé (HLS ou miniatures dans ce didacticiel). MP4 

   1. Choisissez le nom du fichier multimédia de sortie.

   1. Pour regarder le fichier transcodé, choisissez le lien sous **URL de l’objet** dans la page de détails de l’objet. 

      Les fichiers multimédia de sortie au format HLS sont divisés en segments courts. Pour lire ces vidéos, intégrez l’URL de l’objet du fichier `.m3u8` dans un lecteur compatible.

## Étape 9 : nettoyer
<a name="batchops-s3-step9"></a>

Si vous avez transcodé des vidéos à l'aide de S3 Batch Operations, Lambda, MediaConvert et uniquement dans le cadre d'un exercice d'apprentissage, supprimez AWS les ressources que vous avez allouées afin de ne plus payer de frais. 

**Topics**
+ [Supprimer la configuration S3 Inventory de votre compartiment source S3](#batchops-s3-step9-delete-inventory)
+ [Supprimer la fonction Lambda](#batchops-s3-step9-delete-lambda)
+ [Supprimer le groupe de CloudWatch journaux](#batchops-s3-step9-delete-cw)
+ [Supprimer les rôles IAM en même temps que les politiques en ligne des rôles IAM](#batchops-s3-step9-delete-role)
+ [Supprimer la politique IAM gérée par le client](#batchops-s3-step9-delete-policy)
+ [Vider les compartiments S3](#batchops-s3-step9-empty-bucket)
+ [Supprimer les compartiments S3](#batchops-s3-step9-delete-bucket)

### Supprimer la configuration S3 Inventory de votre compartiment source S3
<a name="batchops-s3-step9-delete-inventory"></a>

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans **Compartiments**, choisissez le nom de votre compartiment source (par exemple, `amzn-s3-demo-source-bucket`).

1. Choisissez l’onglet **Gestion**.

1. Sous **Inventory configurations (Configurations d’inventaire)**, choisissez le bouton radio en regard de la configuration d’inventaire que vous avez créée à l’[étape 5](#batchops-s3-step5) (par exemple, **tutorial-inventory-config**).

1. Choisissez **Supprimer**, puis choisissez **Confirmer**.

### Supprimer la fonction Lambda
<a name="batchops-s3-step9-delete-lambda"></a>

1. 

   Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dans le volet de navigation de gauche, choisissez **Fonctions**.

1. Cochez la case en regard de la fonction que vous avez créée à l’[étape 4](#batchops-s3-step4) (par exemple, **tutorial-lambda-convert**).

1. Choisissez **Actions**, puis **Supprimer**.

1. Dans la boîte de dialogue **Supprimer une fonction**, choisissez **Supprimer**.

### Supprimer le groupe de CloudWatch journaux
<a name="batchops-s3-step9-delete-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le volet de navigation de gauche, choisissez **Journaux**, puis **Groupes de journaux**.

1. Cochez la case en regard du groupe de journaux dont le nom se termine par la fonction Lambda que vous avez créée à l’[étape 4](#batchops-s3-step4) (par exemple, **tutorial-lambda-convert**).

1. Choisissez **Actions**, puis **Supprimer le ou les groupes de journaux**.

1. Dans la boîte de dialogue **Supprimer le ou les groupes de journaux)**, choisissez **Supprimer**.

### Supprimer les rôles IAM en même temps que les politiques en ligne des rôles IAM
<a name="batchops-s3-step9-delete-role"></a>

Pour supprimer les rôles IAM que vous avez créés à l’[étape 2](#batchops-s3-step2), à l’[étape 3](#batchops-s3-step3) et à l’[étape 6](#batchops-s3-step6), procédez comme suit : 

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation, choisissez **Rôles**, puis cochez les cases en regard des noms que vous souhaitez supprimer.

1. En haut de la page, choisissez **Supprimer**.

1. Dans la boîte de dialogue de confirmation, saisissez la réponse requise dans la zone de saisie de texte en fonction de l’invite, puis choisissez **Supprimer**. 

### Supprimer la politique IAM gérée par le client
<a name="batchops-s3-step9-delete-policy"></a>

Pour supprimer la politique IAM gérée par le client que vous avez créée à l’[étape 6](#batchops-s3-step6), procédez comme suit :

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation de gauche, choisissez **Politiques**.

1. Choisissez le bouton radio en regard de la stratégie que vous avez créée à l’[étape 6](#batchops-s3-step6) (par exemple, **tutorial-s3batch-policy**). Vous pouvez utiliser la zone de recherche pour filtrer la liste des politiques.

1. Choisissez **Actions**, puis choisissez **Supprimer**. 

1. Confirmez que vous souhaitez supprimer cette stratégie en saisissant son nom dans le champ de texte, puis choisissez **Delete (Supprimer)**. 

### Vider les compartiments S3
<a name="batchops-s3-step9-empty-bucket"></a>

Pour vider les compartiments S3 que vous avez créés dans [Prerequisites (Prérequis)](#batchops-s3-prerequisites), à l’[étape 1](#batchops-s3-step1) et à l’[étape 5](#batchops-s3-step5), procédez comme suit : 

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le bouton radio en regard du nom du compartiment à vider, puis choisissez **Empty (Vider)**.

1. Dans la page **Empty bucket (Vider le compartiment)**, confirmez que vous souhaitez vider le compartiment en saisissant **permanently delete** dans le champ de texte, puis choisissez **Empty (Vider)**.

### Supprimer les compartiments S3
<a name="batchops-s3-step9-delete-bucket"></a>

Pour supprimer les compartiments S3 que vous avez créés dans [Prerequisites (Prérequis)](#batchops-s3-prerequisites), à l’[étape 1](#batchops-s3-step1) et à l’[étape 5](#batchops-s3-step5), procédez comme suit : 

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le bouton radio en regard du nom du compartiment que vous souhaitez supprimer.

1. Choisissez **Supprimer**.

1. Dans la page **Supprimer le compartiment**, confirmez que vous souhaitez supprimer le compartiment en saisissant le nom de ce dernier dans le champ de texte, puis choisissez **Supprimer le compartiment**.

## Étapes suivantes
<a name="batchops-s3-next-steps"></a>

Après avoir terminé ce didacticiel, vous pourrez explorer d’autres cas d’utilisation pertinents :
+ Vous pouvez utiliser Amazon CloudFront pour diffuser les fichiers multimédia transcodés aux spectateurs du monde entier. Pour de plus amples informations, veuillez consulter [Tutoriel : Hébergement de vidéos en streaming à la demande avec Amazon S3 CloudFront, Amazon et Amazon Route 53](tutorial-s3-cloudfront-route53-video-streaming.md).
+ Vous pouvez transcoder des vidéos au moment où vous les téléchargez dans le compartiment source S3. Pour ce faire, vous pouvez configurer un déclencheur d'événement Amazon S3 qui invoque automatiquement la fonction Lambda pour transcoder de nouveaux objets dans S3 avec. MediaConvert Pour plus d’informations, consultez [Didacticiels : Utilisation d’un déclencheur Amazon S3 pour invoquer une fonction Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) dans le *Guide du développeur AWS Lambda *. 

# Résolution des problèmes liés à S3 Batch Operations
<a name="troubleshooting-batch-operations"></a>

Vous pouvez utiliser Amazon S3 Batch Operations pour effectuer des opérations par lot à grande échelle sur des objets Amazon S3. Ce guide vous aide à résoudre les problèmes courants que vous pourriez rencontrer.

Pour résoudre les problèmes liés à la réplication par lot S3, consultez [Résolution des problèmes de réplication](replication-troubleshoot.md).

Il existe deux principaux types d’échecs qui entraînent des erreurs :

1. **Échec de l’API** : l’exécution de l’API demandée (par exemple, `CreateJob`) a échoué.

1. **Échec de la tâche** : la demande d’API initiale a abouti, mais la tâche a échoué, par exemple en raison de problèmes liés au manifeste ou aux autorisations d’accès aux objets spécifiés dans le manifeste.

## NoSuchJobException
<a name="nosuchjobexception"></a>

**Type** : échec de l’API

L’exception `NoSuchJobException` se produit lorsque S3 Batch Operations ne parvient pas à localiser la tâche spécifiée. Cette erreur peut se produire dans plusieurs scénarios autres que la simple expiration d’une tâche. Les causes sont généralement les suivantes.

1. **Expiration de la tâche** : les tâches sont automatiquement supprimées 90 jours après avoir atteint l’état terminal (`Complete`, `Cancelled` ou `Failed`).

1. **ID de tâche incorrect** : l’ID de la tâche utilisé dans `DescribeJob` ou `UpdateJobStatus` ne correspond pas à l’ID renvoyé par `CreateJob`.

1. **Mauvaise région** : tentative d’accès à une tâche dans une autre région que celle où elle a été créée.

1. **Mauvais compte** — Utilisation d'un identifiant de poste provenant d'un autre AWS compte.

1. **Erreurs de format de l’ID de tâche** : fautes de frappe, caractères supplémentaires ou mise en forme incorrecte de l’ID de tâche.

1. **Problèmes de synchronisation** : vérification du statut de la tâche immédiatement après sa création, avant qu’elle ne soit complètement enregistrée.

Les messages d’erreur associés sont les suivants.

1. `No such job`

1. `The specified job does not exist`

### Bonnes pratiques pour éviter les échecs de l’API `NoSuchJobException`
<a name="nosuchjobexception-prevention"></a>

1. **Stocker la tâche IDs immédiatement** : enregistrez l'ID de la tâche dans la `CreateJob` réponse avant d'effectuer les appels d'API suivants.

1. **Implémenter une logique de nouvelle tentative** : ajoutez un backoff exponentiel lors de la vérification du statut de la tâche immédiatement après sa création.

1. **Configuration de la surveillance** : créez des CloudWatch alarmes pour suivre l'achèvement des tâches avant l'expiration des 90 jours. Pour plus de détails, consultez la section [Utilisation CloudWatch des alarmes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) dans le guide de CloudWatch l'utilisateur Amazon.

1. **Faire preuve de cohérence dans l’utilisation des régions** : assurez-vous que toutes les opérations utilisent la même région pour la création de tâches.

1. **Valider la saisie** : vérifiez le format de l’ID de tâche avant d’effectuer des appels d’API.

### Quand les tâches expirent
<a name="nosuchjobexception-jobs-expire"></a>

Les tâches à l’état terminal sont automatiquement supprimées après 90 jours. Pour éviter des perdre des informations sur les tâches, tenez compte des points suivants.

1. **Télécharger les rapports d’achèvement avant l’expiration** : pour obtenir des instructions sur la récupération et le stockage des résultats des tâches, consultez [ Rapports de fin de tâche  Lorsque vous créez une tâche, vous pouvez demander un rapport d’achèvement. Si S3 Batch Operations invoque avec succès au moins une tâche, Amazon S3 génère un rapport d’achèvement après avoir terminé l’exécution des tâches, après avoir échoué ou après avoir été annulé. Vous pouvez configurer le rapport d’achèvement pour y inclure toutes les tâches ou uniquement celles ayant échoué.  Le rapport d’achèvement inclut la configuration et le statut des tâches, ainsi que des informations sur chaque tâche, y compris la clé d’objet et la version, le statut, les codes d’erreur et la description des erreurs. Les rapports d’achèvement fournissent un moyen facile de consulter les résultats de vos tâches dans un format consolidé sans nécessiter de configuration supplémentaire. Les rapports d’achèvement sont chiffrés à l’aide du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). Pour obtenir un exemple de rapport d’achèvement, consultez [Exemples : Rapports de fin de tâche d’opérations par lot S3](batch-ops-examples-reports.md).  Si vous ne configurez pas de rapport d'achèvement, vous pouvez toujours surveiller et auditer votre tâche et ses tâches à l'aide d' CloudTrail Amazon CloudWatch. Pour plus d’informations, consultez les rubriques suivantes : ](batch-ops-job-status.md#batch-ops-completion-report.title).

1. **Archiver les métadonnées des tâches dans vos propres systèmes** : stockez les informations critiques des tâches dans vos bases de données ou vos systèmes de surveillance.

1. **Configurez des notifications automatiques avant la date limite de 90 jours** : utilisez Amazon EventBridge pour créer des règles qui déclenchent des notifications lorsque les tâches sont terminées. Pour de plus amples informations, veuillez consulter [Notifications d'événements Amazon S3](EventNotifications.md).

### Résolution des problèmes liés à `NoSuchJobException`
<a name="nosuchjobexception-troubleshooting"></a>

1. Utilisez la commande suivante pour vérifier que la tâche existe dans votre compte et dans votre région.

   ```
   aws s3control list-jobs --account-id 111122223333 --region us-east-1
   ```

1. Utilisez la commande suivante pour effectuer une recherche dans tous les statuts des tâches. Les statuts de tâche possibles sont `Active`, `Cancelled`, `Cancelling`, `Complete`, `Completing`, `Failed`, `Failing`, `New`, `Paused`, `Pausing`, `Preparing`, `Ready` et `Suspended`.

   ```
   aws s3control list-jobs --account-id 111122223333 --job-statuses your-job-status
   ```

1. Utilisez la commande suivante pour vérifier si la tâche existe dans d’autres régions dans lesquelles vous créez fréquemment des tâches.

   ```
   aws s3control list-jobs --account-id 111122223333 --region job-region-1 aws s3control list-jobs --account-id 111122223333 --region job-region-2                    
   ```

1. Validez le format de l’ID de tâche. Job contient IDs généralement 36 caractères, tels que`12345678-1234-1234-1234-123456789012`. Vérifiez s’ils ne comportent pas d’espaces supplémentaires, de caractères manquants ou de problèmes de casse, et vérifiez que vous utilisez l’ID de tâche complet renvoyé par la commande `CreateJob`.

1. Utilisez la commande suivante pour vérifier les événements liés à la création de tâches dans les CloudTrail journaux.

   ```
       aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.eventName = CreateJob }" \ --start-time timestamp                    
   ```

### AccessDeniedException
<a name="accessdeniedexception"></a>

**Type** : échec de l’API

L’exception `AccessDeniedException` se produit lorsqu’une demande S3 Batch Operations est bloquée en raison d’autorisations insuffisantes, d’opérations non prises en charge ou de restrictions de politiques. Il s’agit de l’une des erreurs les plus courantes de Batch Operations. Les causes sont généralement les suivantes :

1. **Autorisations IAM manquantes** — L'identité IAM ne dispose pas des autorisations requises pour les opérations par lots. APIs

1. **Autorisations S3 insuffisantes** : autorisations manquantes pour accéder aux compartiments et aux objets source ou de destination.

1. **Problèmes liés au rôle d’exécution des tâches** : le rôle d’exécution des tâches ne dispose pas des autorisations nécessaires pour effectuer l’opération spécifiée.

1. **Opérations non prises en charge** : tentative d’utilisation d’opérations non prises en charge dans la région ou le type de compartiment en cours.

1. **Problèmes d’accès intercompte** : autorisations manquantes pour les accès intercomptes aux compartiments ou aux objets.

1. **Restrictions de politique basées sur** les ressources : politiques de compartiment ou objets ACLs bloquant l'opération.

1. **Restrictions de la politique de contrôle des services (SCP)** : politiques au niveau de l’organisation empêchant l’opération.

Messages d’erreur associés :

1. `Access Denied`

1. `User: arn:aws:iam::account:user/username is not authorized to perform: s3:operation`

1. `Cross-account pass role is not allowed`

1. `The bucket policy does not allow the specified operation`

#### Bonnes pratiques pour éviter les défaillances des AccessDeniedException API
<a name="accessdeniedexception-prevention"></a>

1. **Utiliser le principe du moindre privilège** : accordez uniquement les autorisations minimales requises pour vos opérations spécifiques.

1. **Tester les autorisations avant des tâches de grande ampleur** : exécutez de petites tâches en guise de test pour valider les autorisations avant de traiter des milliers d’objets.

1. **Utiliser le simulateur de politiques IAM** : testez les politiques avant leur déploiement à l’aide du simulateur de politiques IAM. Pour plus d’informations, consultez [Test des politiques IAM avec le simulateur de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html) dans le Guide de l’utilisateur IAM.

1. **Mettre en œuvre une configuration d’accès intercompte appropriée** : vérifiez votre configuration d’accès intercompte pour les configurations de tâches intercomptes. Pour plus d'informations, consultez le [didacticiel IAM : Déléguer l'accès entre AWS comptes à l'aide de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) dans le guide de l'utilisateur IAM.

1. **Surveiller les modifications des autorisations** : configurez CloudTrail des alertes pour les modifications de la politique IAM susceptibles d'affecter les opérations par lots.

1. **Documenter les exigences des rôles** : conservez une documentation claire des autorisations requises pour chaque type de tâche.

1. **Utilisez des modèles d'autorisation courants** : utilisez les exemples d'autorisations et les modèles de politique :

   1. [Octroi d’autorisations pour Batch Operations](batch-ops-iam-role-policies.md)

   1. [Ressources intercomptes dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le Guide de l’utilisateur IAM.

   1. [Contrôlez l'accès aux points de terminaison VPC à l'aide des politiques relatives aux points de terminaison décrites](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) dans le Guide. AWS PrivateLink 

#### AccessDeniedException résolution des problèmes
<a name="accessdeniedexception-troubleshooting"></a>

Suivez systématiquement ces étapes pour identifier et résoudre les problèmes d’autorisation.

1. Consultez [Opérations prises en charge par les opérations par lot S3](batch-ops-operations.md) pour connaître les opérations prises en charge par région. Vérifiez que les opérations sur les compartiments de répertoires ne sont disponibles qu’aux points de terminaison régionaux et zonaux. Vérifiez que l’opération est prise en charge par la classe de stockage de votre compartiment.

1. Utilisez la commande suivante afin de déterminer si vous pouvez répertorier les tâches.

   ```
    aws s3control list-jobs --account-id 111122223333
   ```

1. Utilisez la commande suivante pour vérifier les autorisations IAM de l’identité demandeuse. Le compte exécutant la tâche doit disposer des autorisations suivantes : `s3:CreateJob``s3:DescribeJob`,`s3:ListJobs`,`s3:UpdateJobPriority`,`s3:UpdateJobStatus`, et`iam:PassRole`.

   ```
   aws sts get-caller-identity 111122223333
   ```

1. Utilisez la commande suivante pour vérifier si le rôle existe et peut être endossé. 

   ```
   aws iam get-role --role-name role-name
   ```

1. Utilisez la commande suivante pour passer en revue la stratégie d’approbation du rôle. Le rôle exécutant la tâche doit inclure les éléments suivants :

   1. Relation d’approbation permettant à `batchoperations.s3.amazonaws.com` d’endosser ce rôle.

   1. Opérations effectuées par la fonctionnalité Opération par lot (par exemple, `s3:PutObjectTagging` pour les opérations de balisage).

   1. Accès aux compartiments source et de destination.

   1. Autorisation de lire le fichier manifeste.

   1. Autorisation de rédiger des rapports d’achèvement.

   ```
   aws iam get-role --role-name role-name --query 'Role.AssumeRolePolicyDocument'
   ```

1. Utilisez la commande suivante pour tester l'accès au manifeste et aux compartiments source.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket                        
   ```

1. Testez l’opération effectuée par Batch Operations. Par exemple, si celle-ci effectue un balisage, balisez un exemple d’objet dans le compartiment source.

1. Passez en revue les politiques relatives aux compartiments pour détecter les politiques susceptibles de refuser l'opération.

   1. Vérifiez l'objet ACLs si vous travaillez avec des contrôles d'accès existants.

   1. Vérifiez qu'aucune politique de contrôle des services (SCPs) ne bloque l'opération.

   1.  Vérifiez que les politiques de point de terminaison d’un VPC autorisent Batch Operations si vous utilisez des points de terminaison d’un VPC.

1. Utilisez la commande suivante pour identifier CloudTrail les échecs d'autorisation.

   ```
   aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \
       --filter-pattern "{ $.errorCode = AccessDenied }" \
       --start-time timestamp
   ```

#### SlowDownError
<a name="slowdownerror"></a>

**Type** : échec de l’API

L'`SlowDownError`exception se produit lorsque votre compte a dépassé la limite de taux de demandes pour S3 Batch Operations APIs. Il s’agit d’un mécanisme de limitation qui empêche le service d’être submergé par un trop grand nombre de demandes. Les causes sont généralement les suivantes :

1. **Fréquence élevée des demandes d’API** : trop grand nombre d’appels d’API en peu de temps.

1. **Opérations de travail simultanées** : creating/managing tâches simultanées pour plusieurs applications ou utilisateurs.

1. **Scripts automatisés sans limitation de débit** : scripts qui ne mettent pas en œuvre de stratégies de backoff appropriées.

1. **Interrogation trop fréquente du statut des tâches** : vérification du statut des tâches plus fréquente que nécessaire.

1. **Modèles de trafic en rafale** : pics soudains d’utilisation des API pendant les périodes de traitement de pointe.

1. **Limites de la capacité régionale** : dépassement de la capacité de demande allouée pour votre région.

Messages d’erreur associés :

1. `SlowDown`

1. `Please reduce your request rate`

1. `Request rate exceeded`

#### Bonnes pratiques pour éviter les défaillances des SlowDownError API
<a name="slowdownerror-prevention"></a>

1. **Implémenter une limitation du débit côté client** : ajoutez des délais entre les appels d’API dans vos applications.

1. **Utiliser un backoff exponentiel avec de la gigue** : répartissez de manière aléatoire les délais de nouvelle tentative pour éviter les problèmes de bousculade.

1. **Configurer une logique de nouvelle tentative appropriée** : implémentez des tentatives automatiques avec des délais croissants pour les erreurs transitoires.

1. **Utilisez des architectures axées sur les événements** : remplacez les sondages par des EventBridge notifications concernant les changements de statut des tâches.

1. **Répartir la charge dans le temps** : échelonnez la création de tâches et les vérifications de statut sur différentes périodes.

1. **Surveillez les limites de débit et** émettez des CloudWatch alertes : configurez des alarmes pour détecter l'approche des limites.

La plupart AWS SDKs incluent une logique de nouvelle tentative intégrée pour limiter les erreurs de débit. Configurez-la comme suit :

1. **AWS CLI** : utilisez les paramètres `cli-read-timeout` et `cli-connect-timeout`.

1. **AWS SDK pour Python (Boto3) — Configurez les modes** de nouvelle tentative et le nombre maximum de tentatives dans la configuration de votre client.

1. **AWS SDK pour** Java — `RetryPolicy` Utilisation `ClientConfiguration` et paramètres.

1. **AWS SDK pour JavaScript** — Configurer `maxRetries` et. `retryDelayOptions`

Pour plus d'informations sur les modèles de nouvelles tentatives et les meilleures pratiques, consultez la section [Réessayer avec un schéma d'annulation](https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/retry-backoff.html) dans le guide AWS prescriptif.

#### SlowDownError résolution des problèmes
<a name="slowdownerror-troubleshooting"></a>

1. Dans votre code, implémentez immédiatement un backoff exponentiel.  
**Example de backoff exponentiel dans bash**  

   ```
   for attempt in {1..5}; do
       if aws s3control describe-job --account-id 111122223333 --job-id job-id; then 
           break
       else 
           wait_time=$((2**attempt)) echo "Rate limited, waiting ${wait_time} seconds..." sleep $wait_time
           fi
   done
   ```

1.  CloudTrail À utiliser pour identifier la source du volume élevé de demandes.

   ```
   aws logs filter-log-events \
       --log-group-name CloudTrail/S3BatchOperations \
       --filter-pattern "{ $.eventName = CreateJob || $.eventName = DescribeJob }" \
       --start-time timestamp \
       --query 'events[*].[eventTime,sourceIPAddress,userIdentity.type,eventName]'
   ```

1. Vérifiez la fréquence d’interrogation.

   1. Évitez de vérifier le statut des tâches actives plus d’une fois toutes les 30 secondes.

   1. Utilisez les notifications d’achèvement des tâches au lieu d’interroger ces dernières lorsque cela est possible.

   1. Intégrez de la gigue dans vos intervalles d’interrogation pour éviter les demandes synchronisées.

1. Optimisez les modèles d’utilisation de vos API.

   1. Regroupez plusieurs opérations lorsque cela est possible.

   1. Utilisez `ListJobs` pour obtenir le statut de plusieurs tâches en un seul appel.

   1. Mettez en cache les informations relatives aux tâches afin de réduire les appels d’API redondants.

   1. Répartissez la création des tâches dans le temps au lieu d’en créer plusieurs simultanément.

1. Utilisez CloudWatch des métriques pour les appels d'API afin de surveiller vos modèles de demandes.

   ```
      aws logs put-metric-filter \
          --log-group-name CloudTrail/S3BatchOperations \
          --filter-name S3BatchOpsAPICallCount \      
          --filter-pattern "{ $.eventSource = s3.amazonaws.com && $.eventName = CreateJob }" \
          --metric-transformations \        
          metricName=S3BatchOpsAPICalls,metricNamespace=Custom/S3BatchOps,metricValue=1
   ```

## InvalidManifestContent
<a name="invalidmanifestcontent"></a>

**Type** : échec de la tâche

L’exception `InvalidManifestContent` se produit lorsque des problèmes de format, de contenu ou de structure du fichier manifeste empêchent S3 Batch Operations de traiter la tâche. Les causes sont généralement les suivantes :

1. **Violations de format** : colonnes obligatoires manquantes, délimiteurs incorrects ou mauvaise structure CSV.

1. **Problèmes de codage du contenu** : codage des caractères, marqueurs de nomenclature incorrects, ou caractères non UTF-8.

1. **Problèmes liés à la clé d’objet** : caractères non valides, codage en URL incorrect ou clés dépassant les limites de longueur maximale.

1. **Limites de taille** : le manifeste contient plus d’objets que ce que l’opération prend en charge.

1. **Erreurs de format de l'ID de version** : version mal formée ou non valide IDs pour les objets versionnés.

1. **ETag problèmes de format** — ETag Format incorrect ou guillemets manquants pour les opérations qui nécessitent ETags.

1. **Données incohérentes** : formats mixtes dans le même manifeste ou nombre de colonnes incohérent.

Messages d’erreur associés :

1. `Required fields are missing in the schema: + missingFields`

1. `Invalid Manifest Content`

1. `The S3 Batch Operations job failed because it contains more keys than the maximum allowed in a single job`

1. `Invalid object key format`

1. `Manifest file is not properly formatted`

1. `Invalid version ID format`

1. `ETag format is invalid`

### Les meilleures pratiques pour prévenir les échecs au InvalidManifestContent travail
<a name="invalidmanifestcontent-prevention"></a>

1. **Valider avant le chargement** : testez le format du manifeste avec de petites tâches avant de traiter de grands jeux de données.

1. **Utiliser un codage cohérent** : utilisez toujours le codage UTF-8 sans nomenclature pour les fichiers manifestes.

1. **Mettre en œuvre des normes de génération de manifestes** : créez des modèles et des procédures de validation pour la création de manifestes.

1. **Gérer correctement les caractères spéciaux** : codez en URL les clés d’objet contenant des caractères spéciaux.

1. **Surveiller le nombre d’objets** : suivez la taille du manifeste et répartissez les tâches volumineuses de manière proactive.

1. **Valider l’existence des objets** : vérifiez que les objets existent avant de les inclure dans des manifestes.

1. **Utiliser AWS des outils pour la génération de manifestes** — Tirez parti AWS CLI `s3api list-objects-v2` de ces outils pour générer des listes d'objets correctement formatées.

Problèmes courants liés aux manifestes et solutions correspondantes :

1. **Colonnes requises manquantes** : assurez-vous que votre manifeste inclut toutes les colonnes requises pour votre type d’opération. Les colonnes les plus couramment manquantes sont Compartiment et Clé.

1. **Format CSV incorrect** : utilisez des virgules comme délimiteurs, veillez à ce que le nombre de colonnes soit cohérent sur toutes les lignes et évitez les sauts de ligne dans les champs.

1. **Caractères spéciaux dans les clés d’objet** : les clés d’objet codées en URL contiennent des espaces, des caractères Unicode ou des caractères spéciaux XML (<, >, &, «, ’).

1. **Fichiers manifestes volumineux** : divisez les manifestes dépassant la limite d’opérations en plusieurs manifestes plus petits et créez des tâches distinctes.

1. **Version non valide IDs** : assurez-vous que les chaînes alphanumériques de la version IDs sont correctement formatées. Supprimez la colonne des ID de version si elle n’est pas nécessaire.

1. **Problèmes de codage** : enregistrez les fichiers manifestes au format UTF-8 sans nomenclature. Évitez de copier des manifestes avec des systèmes susceptibles de modifier le codage.

Pour obtenir des spécifications détaillées et des exemples de format de manifeste, consultez ce qui suit :

1. [Spécification d’un manifeste](batch-ops-create-job.md#specify-batchjob-manifest)

1. [Opérations prises en charge par les opérations par lot S3](batch-ops-operations.md)

1. [Attribution d’un nom aux objets Amazon S3](object-keys.md)

### InvalidManifestContent résolution des problèmes
<a name="invalidmanifestcontent-troubleshooting"></a>

1. Téléchargez et inspectez le fichier manifeste. Vérifiez manuellement que le manifeste répond aux exigences de format :

   1. Format CSV séparé par des virgules.

   1. Codage des caractères UTF-8 sans nomenclature.

   1. Nombre homogènes de colonnes sur toutes les lignes.

   1. Absence de lignes vides et d’espaces de fin.

   1. Clés d’objet correctement codées en URL si elles contiennent des caractères spéciaux.

   Utilisez la commande suivante pour télécharger le fichier manifeste.

   ```
   aws s3 cp s3://amzn-s3-demo-bucket1/manifest-key ./manifest.csv 
   ```

1. Vérifiez les colonnes requises pour votre opération :

   1. Toutes les opérations : `Bucket`, `Key`

   1. Opérations de copie : `VersionId` (facultatif)

   1. Opérations de restauration : `VersionId` (facultatif)

   1. Opérations de remplacement de balises : aucune colonne supplémentaire n’est requise.

   1. Opérations de remplacement de listes ACL : aucune colonne supplémentaire n’est requise.

   1. Initiation de restauration : `VersionId` (facultatif)

1. Vérifiez les nombres limites d’objets :

   1. Copie : 1 milliard d’objets maximum.

   1. Suppression : 1 milliard d’objets maximum.

   1. Restauration : 1 milliard d’objets maximum.

   1. Balisage : 1 milliard d’objets maximum.

   1. Liste ACL : 1 milliard d’objets maximum.

1. Créez un manifeste de test avec quelques objets de votre manifeste d'origine.

1. Utilisez la commande suivante pour vérifier s'il existe un échantillon d'objets du manifeste.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket1/object-key
   ```

1. Vérifiez les détails de l’échec de la tâche et passez en revue le motif de l’échec ainsi que les détails concernant les erreurs spécifiques dans la description de la tâche.

   ```
   aws s3control describe-job --account-id 111122223333 --job-id job-id                        
   ```