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.
Comment effectuer des suppressions conditionnelles
Vous pouvez utiliser les suppressions conditionnelles pour évaluer si votre objet existe ou s'il est inchangé avant de le supprimer. Vous pouvez effectuer des suppressions conditionnelles à l'aide des opérations d'DeleteObjectsAPI DeleteObject ou dans les compartiments d'annuaire et à usage général de S3. Pour commencer, lorsque vous faites une demande de suppression conditionnelle, vous pouvez utiliser l'HTTP If-Matchen-tête avec la valeur de la condition préalable * pour vérifier si l'objet existe ou l'If-Matchen-tête avec votre valeur fournie ETag pour vérifier si l'objet a été modifié.
Vous pouvez appliquer des suppressions conditionnelles au niveau d'un bucket à usage général en utilisant le bucket S3 ou les politiques Identity and Access Management (IAM). Pour de plus amples informations, veuillez consulter Appliquer les suppressions conditionnelles sur les compartiments Amazon S3.
Note
Les évaluations de suppression conditionnelle ne s'appliquent qu'à la version actuelle de l'objet.
Rubriques
Comment vérifier si votre objet a été modifié avant de le supprimer
Les suppressions conditionnelles vous permettent de protéger votre application contre les suppressions accidentelles d'objets. Vous pouvez utiliser l'HTTP If-Matchen-tête avec la ETag valeur pour vérifier si un objet a été modifié. Si la ETag valeur d'un objet dans un compartiment S3 ne correspond pas à ETag celle que vous avez fournie lors de l'opération de suppression, l'opération échoue. Pour supprimer de manière conditionnelle plusieurs objets à l'aide de DeleteObjects cette opération, vous devez fournir la ETag valeur dans l'ETagélément 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.
Note
Pour effectuer des suppressions conditionnelles avec l'If-Matchen-tête contenant la ETag valeur, vous devez disposer des s3:GetObject autorisations s3:DeleteObject et.
L'If-Matchen-tête contenant la ETag valeur est évalué par rapport aux objets existants dans un compartiment. S'il existe un objet portant le même nom de clé et la même correspondanceETag, les DeleteObject demandes aboutissent et renvoient une 204 No content réponse. Si ce ETag n'est pas le cas, l'opération de suppression échoue avec une 412 Precondition Failed réponse. En cas de succès, l'DeleteObjectsAPI répond par un 200 OK et fournit le statut de chaque objet dans le corps de réponse de la demande de suppression par lots. Si les conditions préalables à une DeleteObjects demande ne sont pas satisfaites, Amazon S3 supprime les objets et renvoie une réponse d'erreur qui Pre-condition a échoué.
Vous pouvez également recevoir une réponse 409 Conflict d'erreur en cas de demandes simultanées si une PUT demande DELETE ou une demande adressée à un objet aboutit avant la fin de l'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-Matchen-tête avec la ETag valeur suivante APIs :
L'delete-objectexemple de commande suivant tente d'effectuer une suppression conditionnelle avec la ETag valeur fournie6805f2cfc46c0f04559748bb039d69al.
aws s3api delete-object --bucketamzn-s3-demo-bucket--key dir-1/my_images.tar.bz2--if-match "6805f2cfc46c0f04559748bb039d69al"
Pour plus d’informations, consultez delete-object
L'delete-objectsexemple de commande suivant tente d'effectuer une suppression conditionnelle avec la ETag valeur fournie6805f2cfc46c0f04559748bb039d69al.
aws s3api delete-objects --bucketamzn-s3-demo-bucket--delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "6805f2cfc46c0f04559748bb039d69al"}]}'
Pour plus d’informations, consultez delete-objects
Pour plus d'informations sur le AWS CLI, voir Qu'est-ce que le AWS Command Line Interface ? dans le guide de AWS Command Line Interface l'utilisateur.
Comment vérifier si votre objet existe avant de le supprimer
Vous pouvez utiliser l'If-Matchen-tête 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 S3 à usage général versionnés qui 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 l'utilisez If-Match:* avec une DeleteObject API, l'opération ne réussira avec a que 204 No Content si l'objet existe. Si la dernière version de l'objet est un marqueur de suppression, l'objet n'existe pas et l'DeleteObjectAPI échouera et renverra une 412 Precondition Failed réponse. Pour plus d'informations sur les marqueurs de suppression, consultez Utilisation des marqueurs de suppression.
Pour supprimer plusieurs objets de manière conditionnelle à l'aide de cette DeleteObjects opération, vous pouvez fournir l'ETagélément * in de l'objet dans le corps de la demande XML. Si la condition préalable est remplie, l'DeleteObjectsopération répond par un 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 sera capturée dans l'<Deleted>élément du corps de la réponse. Si la condition préalable échoue, la réponse pour cet objet sera capturée dans l'<Error>élément 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 une réponse Not Found d'erreur.
Note
Pour effectuer des suppressions conditionnelles avecIf-Match:*, vous devez disposer d's3:DeleteObjectautorisations.
Vous pouvez utiliser l'If-Matchen-tête avec la * valeur suivante APIs :
L'delete-objectexemple de commande suivant tente d'effectuer une suppression conditionnelle pour un objet dont le nom de clé possède une valeur représentant n'importe my_images.tar.bz2* laquelle ETag.
aws s3api delete-object --bucketamzn-s3-demo-bucket--key dir-1/my_images.tar.bz2--if-match "*"
Pour plus d’informations, consultez delete-object
L'delete-objectsexemple de commande suivant tente d'effectuer une suppression conditionnelle pour un objet dont le nom de clé possède une valeur représentant n'importe my_images.tar.bz2* laquelle ETag.
aws s3api delete-objects --bucketamzn-s3-demo-bucket--delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "*"}]}'
Pour plus d’informations, consultez delete-objects
Pour plus d'informations sur le AWS CLI, voir Qu'est-ce que le AWS Command Line Interface ? dans le guide de AWS Command Line Interface l'utilisateur.