Comment faire pour récupérer un objet Amazon S3 qui a été supprimé dans un compartiment pour lequel la gestion des versions est activée ?

Lecture de 6 minute(s)
0

Je souhaite récupérer un objet qui a été supprimé de mon compartiment Amazon Simple Storage Service (Amazon S3) dont la gestion des versions est activée.

Brève description

Lorsque vous supprimez un objet d’un compartiment pour lequel la gestion des versions est activée, Amazon S3 crée un marqueur de suppression pour l’objet. Le marqueur de suppression devient la version actuelle de l’objet, ce dernier devenant la version précédente. Avec le marqueur de suppression, Amazon S3 répond aux demandes concernant l’objet comme si celui-ci avait été supprimé. Par exemple, si vous envoyez une requête GET pour l’objet, Amazon S3 renvoie un message d’erreur.

Pour récupérer un objet qui a été supprimé d’un compartiment pour lequel la gestion des versions est activée, effectuez l’une des tâches suivantes :

  • Téléchargez la version précédente de l’objet : Pour télécharger la version précédente de l’objet, vous devez disposer des autorisations s3:GetObjectVersion.
  • Supprimez le marqueur de suppression : Une fois le marqueur de suppression supprimé, l’objet d’origine devient la nouvelle version de l’objet. Pour supprimer le marqueur de suppression, vous devez disposer des autorisations s3:DeleteObjectVersion. En outre, vous devez utiliser le compte AWS qui possède ou a créé le compartiment pour supprimer le marqueur de suppression . Remarque : si la suppression MFA est configurée pour le compartiment, vous devez utiliser l’authentification multifactorielle (MFA) désignée pour supprimer le marqueur de suppression.

Résolution

Important : vous ne pouvez pas récupérer les données que vous supprimez définitivement et que vous retirez d’un compartiment.

Pour restaurer la version précédente de l’objet, effectuez les tâches suivantes. Dans chaque commande, remplacez DOC-EXAMPLE-BUCKET par le nom de votre compartiment.

Utiliser la console Amazon S3 pour télécharger la version précédente de l’objet

Pour utiliser la console Amazon S3 afin de télécharger la version précédente de l’objet, procédez comme suit :

  1. Ouvrez la console Amazon S3.
  2. Dans la liste des compartiments, ouvrez celui de l’objet supprimé.
  3. Accédez au dossier contenant l’objet supprimé.
  4. Activez 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. Ne sélectionnez pas le marqueur de suppression.
  7. Choisissez Actions, puis Télécharger.

Utilisez l’AWS CLI pour télécharger la version précédente de l’objet

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes par le biais de l’interface de la ligne de commande AWS (AWS CLI), consultez Corriger les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Pour utiliser l’AWS CLI afin de télécharger la version précédente de l’objet, procédez comme suit :

  1. Exécutez la commande list-object-versions sur le compartiment :
    aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix examplefolder/
    Remarque : l’exemple de commande précédent inclut l’option --prefix pour filtrer les résultats sur le préfixe de nom de clé spécifié. Cette option permet de réduire le nombre de résultats et de gagner du temps lorsque votre compartiment contient un grand nombre de versions d’objets.
  2. Dans la sortie de la commande, copiez l’ID de la version précédente de l’objet.
  3. Exécutez la commande get-object pour obtenir l’ID de version :
    aws s3api get-object --bucket DOC-EXAMPLE-BUCKET --key example.txt --version-id example.d6tjAKF1iObKbEnNQkIMPjj filename.txt

Utiliser la console Amazon S3 pour supprimer le marqueur de suppression

Pour utiliser la console Amazon S3 afin de supprimer le marqueur de suppression, procédez comme suit :

  1. À partir du compte propriétaire du compartiment de l’objet supprimé, ouvrez la console Amazon S3.
  2. Dans la liste des compartiments, ouvrez celui de l’objet supprimé.
  3. Accédez au dossier contenant l’objet supprimé.
  4. Activez 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.
    Important : assurez-vous que vous avez bien sélectionné le marqueur de suppression. Si vous supprimez une version d’objet, vous ne pouvez pas récupérer l’objet.
  7. Choisissez Supprimer.
  8. Dans la page Suppression d’objets, confirmez que le marqueur de suppression approprié est bien répertorié. Saisissez ensuite Suppression permanente 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. Vous devez plutôt utiliser l’interface de la ligne de commande AWS ou le kit SDK AWS.

Utiliser l’interface de la ligne de commande AWS pour supprimer le marqueur de suppression

Vous pouvez utiliser l’interface de la ligne de commande AWS pour supprimer le marqueur de suppression de plusieurs objets, de milliers d’objets ou de millions d’objets.

Supprimer le marqueur de suppression sur plusieurs objets

Pour supprimer le marqueur de suppression sur plusieurs objets, procédez comme suit :

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

    aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix examplefolder/ --query 'DeleteMarkers[?IsLatest==`true`]'

    Remarque : l’exemple de commande précédent inclut l’option --prefix et filtre les résultats sur le préfixe de nom de clé spécifié.

  2. Dans la sortie de commande, copiez l’ID de version du marqueur de suppression.
    Important : assurez-vous d’avoir copié l’ID de version du marqueur de suppression. Si vous supprimez une version d’objet, vous ne pouvez pas récupérer l’objet.

  3. Exécutez la commande delete-object pour l’ID de version :

    aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET --key example.txt --version-id 'example.d6tjAKF1iObKbEnNQkIMPjj'
  4. Pour vérifier que le marqueur de suppression a bien été supprimé, exécutez la commande ls :

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

Supprimer le marqueur de suppression sur des milliers d’objets

Pour supprimer le marqueur de suppression sur des milliers d’objets, procédez comme suit :

  1. Ouvrez la console AWS CloudShell.
  2. Exécutez la commande list-object-versions :
    aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix examplefolder/ --output json --query 'DeleteMarkers[?IsLatest==`true`].[Key, VersionId]' | jq -r '.[] | "--key " + "'\\\"'" + .[0] + "'\\\"'" + " --version-id " + .[1]' | xargs -L1 -t aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET

Remarque : la commande d’exemple précédente utilise l’outil jq du site Web GitHub pour analyser la réponse ListObjectVersions pour les DeleteMarkers de la version actuelle. Par défaut, jq est installé sur AWS CloudShell. Si vous n’interagissez pas avec l’environnement shell, votre session shell se termine.

Supprimer le marqueur de suppression sur des millions d’objets

Pour supprimer le marqueur de suppression sur des millions d’objets d’un compartiment, utilisez un script personnalisé avec le kit AWS SDK. Pour plus d’informations, consultez la section Utilisation des kits AWS SDK de la rubrique Suppression des marqueurs de suppression pour actualiser une ancienne version.

Remarque : un appel LIST que vous effectuez sur un compartiment qui compte des millions d’objets peut être coûteux et provoquer un dépassement de délai.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 5 mois