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

Date de la dernière mise à jour : 08/12/2020

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

Brève description

Lorsque vous supprimez un objet d'un compartiment permettant la gestion 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 fonctionSupprimer MFA est activée pour le compartiment, vous devez utiliser l'authentification multi-facteurs (multi-factor authentication MFA) désignée pour supprimer le marqueur de suppression.

Ré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.    Activer Afficher les versions.

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). Sélectionnez Actions, puis Télécharger.

Téléchargez la version précédente de l'objet à l'aide de l'interface en ligne de commande AWS (AWS CLI)

Remarque : si vous recevez des erreurs lors de l'exécution des commandes depuis l'interface de ligne de commande AWS, assurez-vous que vous utilisez la version AWS CLI la plus récente.

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 DOC-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 DOC-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.    Activer Afficher les versions.

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.    Choisissez Supprimer.

8.    Dans la page Supprimer les objets, vérifiez que le marqueur de suppression correct est répertorié. Ensuite, tapez supprimer définitivement pour confirmer la suppression.

9.    Choisissez Supprimer les objets.

Important : vous ne pouvez pas utiliser la console Amazon S3 pour annuler la suppression de dossiers. Pour ce faire, vous devez utiliser l'interface de ligne de commande AWS ou un SDK AWS.

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 DOC-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 DOC-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://DOC-EXAMPLE-BUCKET

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


Besoin d'aide pour une question technique ou de facturation ?