

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.

# Réalisation de suppressions conditionnelles
<a name="conditional-deletes"></a>

Vous pouvez utiliser les suppressions conditionnelles pour déterminer si votre objet existe ou s’il n’a pas été modifié avant de le supprimer. Vous pouvez effectuer des suppressions conditionnelles à l’aide des opérations d’API `DeleteObject` et `DeleteObjects` dans les compartiments d’inventaire et les compartiments à usage général S3. Pour commencer, lorsque vous demandez une suppression conditionnelle, vous pouvez utiliser l’en-tête `HTTP If-Match` avec la valeur de la condition préalable `*` pour vérifier si l’objet existe, ou l’en-tête `If-Match` avec votre valeur `ETag` pour vérifier si l’objet a été modifié.

Vous pouvez appliquer des suppressions conditionnelles à un compartiment à usage général en utilisant une stratégie de compartiment S3 ou des politiques Gestion des identités et des accès (IAM). Pour de plus amples informations, veuillez consulter [Application de suppressions conditionnelles dans des compartiments Amazon S3](conditional-delete-enforce.md). 

**Note**  
Les évaluations des suppressions conditionnelles s’appliquent uniquement à la version en cours de l’objet. 

**Topics**
+ [Comment vérifier si votre objet a été modifié avant de le supprimer](#conditional-deletes-etags)
+ [Comment vérifier si votre objet existe avant de le supprimer](#conditional-delete)
+ [Application de suppressions conditionnelles dans des compartiments Amazon S3](conditional-delete-enforce.md)

## Comment vérifier si votre objet a été modifié avant de le supprimer
<a name="conditional-deletes-etags"></a>

 Les suppressions conditionnelles vous permettent de protéger votre application contre les suppressions accidentelles d’objets. Vous pouvez utiliser l’en-tête `HTTP If-Match` avec la valeur `ETag` pour vérifier si un objet a été modifié. Si la valeur `ETag` d’un objet d’un compartiment S3 ne correspond pas à la valeur `ETag` que vous avez fournie lors de l’opération de suppression, celle-ci échoue. Pour supprimer de manière conditionnelle plusieurs objets à l’aide de l’opération `DeleteObjects`, vous devez fournir la valeur `ETag` dans l’élément `ETag` de l’objet dans le corps de la demande XML. Pour de plus amples informations, veuillez consulter [Utilisation du contenu MD5 et du ETag pour vérifier les objets téléchargés](checking-object-integrity-upload.md#checking-object-integrity-etag-and-md5). 

**Note**  
Pour effectuer des suppressions conditionnelles avec l’en-tête `If-Match` contenant la valeur `ETag`, vous devez disposer des autorisations `s3:DeleteObject` et `s3:GetObject`. 

L’en-tête `If-Match` avec la valeur `ETag` est comparé aux objets existants d’un compartiment. Si un objet portant le même nom de clé et correspondant à la `ETag` existe, la demande `DeleteObject` aboutit et retourne une réponse `204 No content`. Si la `ETag` ne correspond pas, l’opération de suppression échoue et renvoie une réponse `412 Precondition Failed`. Pour supprimer plusieurs objets de manière conditionnelle à l'aide de `DeleteObjects` cette opération, vous pouvez fournir la `ETag` valeur dans l'`ETag`élément de l'objet dans le corps de la demande XML. Si la demande aboutit, l'`DeleteObjects`opération répond par un `200 OK` et fournit l'état de chaque objet dans le corps de la réponse. Si la condition préalable est remplie, la réponse pour cet objet est capturée dans l’élément `<Deleted>` du corps de la réponse. Si la condition préalable n’est pas remplie, la réponse pour cet objet est capturée dans l’élément `<Error>` du corps de la réponse.

 Vous pouvez également recevoir le message d’erreur `409 Conflict` en cas de demandes simultanées si une demande `DELETE` ou `PUT` aboutit avant la fin d’une opération de suppression conditionnelle de cet objet. Vous recevrez une réponse `404 Not Found` si une demande de suppression simultanée d’un objet aboutit avant la fin d’une opération d’écriture conditionnelle sur cet objet, car la clé de l’objet n’existe plus. 

Vous pouvez utiliser l'`If-Match`en-tête avec la `ETag` valeur suivante APIs :
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)

### À l'aide du AWS CLI
<a name="conditional-deletes-deleteobject-CLI-etags"></a>

L'`delete-object`exemple de commande suivant tente d'effectuer une suppression conditionnelle avec la ETag valeur fournie`6805f2cfc46c0f04559748bb039d69al`.

```
aws s3api delete-object --bucket {{amzn-s3-demo-bucket}} --key dir-1/{{my_images.tar.bz2}} --if-match "{{6805f2cfc46c0f04559748bb039d69al}}"       
```

Pour plus d’informations, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) dans la *Référence des commandes de l’AWS CLI *. 

L'`delete-objects`exemple de commande suivant tente d'effectuer une suppression conditionnelle avec la ETag valeur fournie`6805f2cfc46c0f04559748bb039d69al`.

```
aws s3api delete-objects --bucket {{amzn-s3-demo-bucket}} --delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "6805f2cfc46c0f04559748bb039d69al"}]}' 
```

Pour plus d’informations, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) dans la *Référence des commandes de l’AWS CLI *. 

Pour plus d'informations sur le AWS CLI, voir [Qu'est-ce que le AWS Command Line Interface ?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dans le *guide de AWS Command Line Interface l'utilisateur*. 

## Comment vérifier si votre objet existe avant de le supprimer
<a name="conditional-delete"></a>

 Vous pouvez utiliser l’en-tête `If-Match` avec la valeur `*` pour vérifier si l’objet existe avant de tenter de le supprimer. La valeur `*` signifie que l’opération ne doit avoir lieu que si l’objet existe, qu’il ait été modifié ou non. 

Les marqueurs de suppression sont des objets spéciaux contenus dans des compartiments à usage général S3 pour lesquels la gestion des versions est active. Ils indiquent qu’un objet a été supprimé. Ce sont des espaces réservés qui font apparaître l’objet comme supprimé tout en préservant les versions précédentes. Par conséquent, lorsque vous utilisez `If-Match:*` avec une API `DeleteObject`, l’opération n’aboutit et ne renvoie la réponse `204 No Content` que si l’objet existe. Si la version la plus récente de l’objet est un marqueur de suppression, l’objet n’existe pas et l’API `DeleteObject` échoue et renvoie la réponse `412 Precondition Failed`. Pour plus d'informations sur les marqueurs de suppression, consultez [Utilisation des marqueurs de suppression](DeleteMarker.md).

Pour supprimer de manière conditionnelle plusieurs objets à l’aide de l’opération `DeleteObjects`, vous pouvez fournir la valeur `*` dans l’élément `ETag` de l’objet dans le corps de la demande XML. Si la condition préalable est remplie, l’opération `DeleteObjects` renvoie la réponse `200 OK` et indique le statut de chaque objet dans le corps de la réponse. Si la condition préalable est remplie, la réponse pour cet objet est capturée dans l’élément `<Deleted>` du corps de la réponse. Si la condition préalable n’est pas remplie, la réponse pour cet objet est capturée dans l’élément `<Error>` du corps de la réponse. Si l’objet n’existe pas lors de l’évaluation de l’une des conditions préalables, S3 rejette la demande et renvoie le message d’erreur `Not Found`. 

**Note**  
 Pour effectuer des suppressions conditionnelles avec `If-Match:*`, vous devez disposer de l’autorisation `s3:DeleteObject`. 

Vous pouvez utiliser l'`If-Match`en-tête avec la `*` valeur suivante APIs :
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)

### À l'aide du AWS CLI
<a name="conditional-deleteobject-CLI-etags"></a>

L'`delete-object`exemple de commande suivant tente d'effectuer une suppression conditionnelle pour un objet dont le nom `{{my_images.tar.bz2}}` de clé possède une valeur représentant n'importe `*` laquelle ETag. 

```
aws s3api delete-object --bucket {{amzn-s3-demo-bucket}} --key dir-1/{{my_images.tar.bz2}} --if-match "{{*}}"
```

Pour plus d’informations, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) dans la *Référence des commandes de l’AWS CLI *.

L'`delete-objects`exemple de commande suivant tente d'effectuer une suppression conditionnelle pour un objet dont le nom `{{my_images.tar.bz2}}` de clé possède une valeur représentant n'importe `*` laquelle ETag. 

```
aws s3api delete-objects --bucket {{amzn-s3-demo-bucket}} --delete '{"Objects":[{"Key":"{{my_images.tar.bz2}}", "ETag": "{{*}}"}]}' 
```

Pour plus d’informations, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) dans la *Référence des commandes de l’AWS CLI *.

Pour plus d'informations sur le AWS CLI, voir [Qu'est-ce que le AWS Command Line Interface ?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dans le *guide de AWS Command Line Interface l'utilisateur*. 