Comment puis-je récupérer un objet Amazon S3 qui a été supprimé d'un compartiment permettant le contrôle des versions ?

Date de la dernière mise à jour : 20/05/2020

Je souhaite récupérer un objet qui a été supprimé de mon compartiment Amazon Simple Storage Service (Amazon S3) permettant le contrôle des versions. Comment dois-je procéder ?

Courte description

Lorsque vous supprimez un objet d'un compartiment permettant le contrôle des versions, Amazon S3 crée un marqueur de suppression pour ce même objet. Le marqueur de suppression devient la version actuelle de l'objet, et l'objet réel est associé à celle précédente. Avec un marqueur de suppression, Amazon S3 répond aux requêtes relatives à l'objet comme si ce dernier avait été supprimé. Par exemple, si vous transmettez une requête GET relative à l'objet, Amazon S3 renvoie une erreur.

Vous pouvez récupérer un objet qui a été supprimé d'un compartiment permettant le contrôle des versions de l'une des façons suivantes :

  • En téléchargeant la version précédente de l'objet : pour télécharger la version précédente de l'objet (l'objet réel), vous devez disposer de l'autorisation s3:GetObjectVersion.
  • En retirant le marqueur de suppression : une fois le marqueur de suppression retiré, l'objet réel devient la version actuelle de l'objet. Pour retirer le marqueur de suppression, vous devez disposer de l'autorisation s3:DeleteObjectVersion. De plus, vous devez retirer le marqueur de suppression à l'aide du compte AWS de la personne qui possède ou a créé le compartiment.
    Remarque : si la configuration MFA Delete-enabled a été appliquée au compartiment, vous devez procéder à une authentification multifacteur pour retirer le marqueur de suppression.

Solution

Téléchargement de la version précédente de l'objet à l'aide de la console Amazon S3

1.    Ouvrez la console Amazon S3.

2.    Dans la liste des compartiments, ouvrez celui qui comportait l'objet supprimé.

3.    Accédez au dossier associé à l'objet supprimé.

4.    Dans le champ Versions, sélectionnez Afficher.

5.    Dans la barre de recherche, saisissez le nom de l'objet supprimé.

6.    Sélectionnez la version précédente de l'objet (l'objet réel, et non le marqueur de suppression), puis Télécharger.

Téléchargement de la version précédente de l'objet à l'aide de l'interface en ligne de commande AWS

1.    Exécutez la commande list-object-versions avec le compartiment :

Astuce : l'exemple de commande suivant inclut l'option --prefix qui permet de filtrer les résultats en fonction du préfixe de nom de clé spécifié. Ceci peut vous aider à réduire le nombre de résultats et à gagner du temps si votre compartiment contient un volume élevé de versions d'objet.

aws s3api list-object-versions --bucket AWSDOC-EXAMPLE-BUCKET --prefix example.txt

2.    Dans le résultat de la commande, copiez l'ID de la version précédente de l'objet (l'objet réel, et non le marqueur de suppression).

3.    Exécutez la commande get-object avec l'ID de version que vous avez copié à l'étape précédente :

aws s3api get-object --bucket AWSDOC-EXAMPLE-BUCKET --key example.txt --version-id example.d6tjAKF1iObKbEnNQkIMPjj

Retrait du marqueur de suppression à l'aide de la console Amazon S3

1.    Ouvrez la console Amazon S3 à partir du compte AWS de la personne qui possède ou a créé le compartiment qui contenait l'objet supprimé.

2.    Dans la liste des compartiments, ouvrez celui qui comportait l'objet supprimé.

3.    Accédez au dossier associé à l'objet supprimé.

4.    Dans le champ Versions, sélectionnez Afficher.

5.    Dans la barre de recherche, saisissez le nom de l'objet supprimé.

6.    Sélectionnez le marqueur de suppression de l'objet.

Avertissement : vérifiez avec attention l'élément sélectionné pour vous assurer qu'il s'agit bien du marqueur de suppression. Si vous supprimez une version d'objet, elle ne pourra pas être récupérée.

7.    Sélectionnez Actions, puis Supprimer.

8.    Dans la boîte de dialogue Supprimer des objets, sélectionnez Supprimer.

Retrait du marqueur de suppression à l'aide de l'interface en ligne de commande AWS

1.    Exécutez la commande list-object-versions en utilisant le paramètre --query suivant :

Astuce : l'exemple de commande suivant inclut l'option --prefix qui permet de filtrer les résultats en fonction du préfixe de nom de clé spécifié. Ceci peut vous aider à réduire le nombre de résultats et à gagner du temps si votre compartiment contient un volume élevé de marqueurs de suppression.

aws s3api list-object-versions --bucket AWSDOC-EXAMPLE-BUCKET --prefix example.txt --query 'DeleteMarkers[?IsLatest==`true`]'

2.    La commande permet d'obtenir tous les objets du compartiment qui ont été supprimés. Dans le résultat de la commande, copiez l'ID du marqueur de suppression associé à l'objet que vous souhaitez récupérer.

Avertissement : vérifiez avec attention l'ID pour vous assurer qu'il s'agit bien de celui du marqueur de suppression. Si vous supprimez une version d'objet, elle ne pourra pas être récupérée.

3.    Exécutez la commande delete-object avec l'ID de version que vous avez copié à l'étape précédente :

aws s3api delete-object --bucket AWSDOC-EXAMPLE-BUCKET --key example.txt --version-id 'example.d6tjAKF1iObKbEnNQkIMPjj'

4.    Une fois que vous avez retiré le marqueur de suppression, l'objet réel est renvoyé lorsque vous répertoriez ceux se trouvant dans le compartiment. Pour le vérifier, vous pouvez exécuter la commande ls :

aws s3 ls s3://AWSDOC-EXAMPLE-BUCKET

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?