Gestion des marqueurs de suppression - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion des marqueurs de suppression

Configuration du cycle de vie pour nettoyer automatiquement les marqueurs de suppression expirés

Un marqueur de suppression d'objet expiré est un marqueur dans lequel toutes les versions d'objet sont supprimées et où il ne reste qu'un seul marqueur de suppression. Si la configuration de cycle de vie est définie pour supprimer les versions actuelles, ou si l'action ExpiredObjectDeleteMarker est explicitement définie, Amazon S3 supprime le marqueur de suppression de l'objet expiré. Pour voir un exemple, consultez Exemple 7 : Suppression des marqueurs de suppression d'objet expiré.

Suppression des marqueurs de suppression pour rendre une version plus ancienne à jour

Lorsque vous supprimez un objet d'un compartiment activé pour la gestion des versions, toutes les versions restent dans le compartiment et Simple Storage Service (Amazon S3) crée un marqueur de suppression pour l'objet. Pour annuler la suppression de l'objet, vous devez supprimer ce marqueur de suppression. Pour plus d'informations sur la gestion des versions et les marqueurs de suppression, consultez Utilisation de la gestion des versions dans les compartiments S3.

Pour supprimer un marqueur de suppression définitivement, vous devez inclure son ID de version dans une demande DeleteObject versionId. Le schéma suivant montre comment une demande DeleteObject versionId supprime définitivement un marqueur de suppression.

Illustration illustrant la suppression d'un marqueur de suppression à l'aide de son ID de version.

Suite à la suppression du marqueur de suppression, une simple demande GET récupère désormais l'ID de version actuelle (121212) de l'objet.

Note

Si vous utilisez une demande DeleteObject où la version actuelle est un marqueur de suppression (sans spécifier l'ID de version du marqueur de suppression), Amazon S3 ne supprime pas le marqueur de suppression, mais à la place, PUTs un autre marqueur de suppression.

Pour supprimer un marqueur de suppression avec un ID de version NULL, vous devez transmettre l'ID de version NULL comme ID de version dans la demande DeleteObject. La figure suivante illustre comment un demande DeleteObject adressée sans ID de version, où la version actuelle est un marqueur de suppression, ne supprime rien, mais ajoute à la place un marqueur de suppression supplémentaire avec un ID de version unique (7498372).

Illustration illustrant la suppression d'un marqueur de suppression à l'aide d'un ID de version NULL.

Suivez ces étapes pour récupérer des objets supprimés qui ne sont pas des dossiers de votre compartiment S3, y compris les objets qui se trouvent dans ces dossiers.

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

  2. Dans la liste Buckets (Compartiments), choisissez le nom du compartiment que vous souhaitez.

  3. Pour afficher la liste des versions des objets du compartiment, choisissez le commutateur Répertorier les versions. Vous pourrez voir les marqueurs de suppression pour les objets supprimés.

  4. Pour annuler la suppression d'un objet, vous devez supprimer le marqueur de suppression. Cochez la case en regard du marqueur de suppression de l'objet à récupérer, puis choisissez Delete (Supprimer).

  5. Confirmez la suppression sur la page Delete objects (Supprimer les objets).

    1. Pour Pemanently delete objects? (Supprimer définitivement des objets ?), saisissez permanently delete.

    2. Choisissez Delete objects (Supprimer les objets).

Note

Vous ne pouvez pas utiliser la console Amazon S3 pour restaurer des dossiers. Vous devez utiliser le AWS CLI ou le SDK. Pour des exemples, veuillez consulter Comment récupérer un objet Simple Storage Service (Amazon S3) supprimé d'un compartiment activé pour la gestion des versions ? dans le Centre de connaissances  AWS .

Pour supprimer définitivement un marqueur de suppression
  1. Configurez la valeur versionId sur l'ID de la version du marqueur de suppression que vous souhaitez supprimer.

  2. Envoyez une demande DELETE Object versionId.

Exemple — Suppression d'un marqueur de suppression

L'exemple suivant supprime le marqueur de suppression pour la version 4857693 photo.gif.

DELETE /photo.gif?versionId=4857693 HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Lorsque vous supprimez un marqueur de suppression, Amazon S3 inclut les éléments suivants dans la réponse.

204 NoContent x-amz-version-id: versionID x-amz-delete-marker: true

Pour plus d'informations sur l'utilisation d'autres AWS SDK, consultez le AWS Developer Center.

Python

L'exemple de code Python suivant montre comment supprimer un marqueur de suppression d'un objet et transformer ainsi la version ancienne la plus récente en la version actuelle de l'objet.

def revive_object(bucket, object_key): """ Revives a versioned object that was deleted by removing the object's active delete marker. A versioned object presents as deleted when its latest version is a delete marker. By removing the delete marker, we make the previous version the latest version and the object then presents as *not* deleted. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that contains the object. :param object_key: The object to revive. """ # Get the latest version for the object. response = s3.meta.client.list_object_versions( Bucket=bucket.name, Prefix=object_key, MaxKeys=1 ) if "DeleteMarkers" in response: latest_version = response["DeleteMarkers"][0] if latest_version["IsLatest"]: logger.info( "Object %s was indeed deleted on %s. Let's revive it.", object_key, latest_version["LastModified"], ) obj = bucket.Object(object_key) obj.Version(latest_version["VersionId"]).delete() logger.info( "Revived %s, active version is now %s with body '%s'", object_key, obj.version_id, obj.get()["Body"].read(), ) else: logger.warning( "Delete marker is not the latest version for %s!", object_key ) elif "Versions" in response: logger.warning("Got an active version for %s, nothing to do.", object_key) else: logger.error("Couldn't get any version info for %s.", object_key)