Comment restaurer un objet S3 depuis la classe de stockage Amazon Glacier à l'aide de l'interface de ligne de commande (CLI) AWS ?

Date de la dernière mise à jour : 27/03/2020

J'ai archivé un objet Amazon Simple Storage Service (Amazon S3) dans la classe de stockage Amazon Simple Storage Service Glacier à l'aide d'une configuration du cycle de vie. Comment puis-je restaurer l'objet à l'aide de l'interface de ligne de commande AWS ?

Résolution

Suivez les étapes ci-dessous pour restaurer un objet S3 depuis la classe de stockage Amazon S3 Glacier à l'aide de l'interface de ligne de commande AWS :

Initier une demande de restauration

Exécutez la commande suivante pour initier une demande de restauration. Assurez-vous de remplacer toutes les valeurs de l'exemple de commande par les valeurs correspondant à votre compartiment, votre objet et votre demande de restauration.

Remarque : étant donné que les frais d'extraction des données sont basés sur la quantité de requêtes, veillez à vérifier que les paramètres de votre demande de restauration sont corrects.

$ aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'

Après avoir exécuté cette commande, une copie temporaire de l'objet est rendue disponible pour la durée spécifiée dans la demande de restauration (ici, 25 jours).

Notez les modifications suivantes que vous pouvez apporter à la commande :

  • Pour restaurer une version d'objet dans un compartiment versionné, incluez l'option --version-id, puis spécifiez l'ID de version correspondant.
  • Si la syntaxe JSON utilisée dans l'exemple entraîne une erreur sur un client Windows, effectuez la demande de restauration en utilisant la syntaxe suivante :
--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

Surveillez le statut de votre demande de restauration

Exécutez la commande suivante pour surveiller le statut de votre demande de restauration :

aws s3api head-object --bucket awsexamplebucket --key dir1/example.obj

Après avoir exécuté la commande, si la restauration est encore en cours, vous recevez une réponse similaire à celle-ci :

{
    "Restore": "ongoing-request=\"true\"",
    ...
    "StorageClass": "GLACIER",
    "Metadata": {}
}

Une fois la restauration terminée, vous recevez une réponse similaire à celle-ci :

{
    "Restore": "ongoing-request=\"false\", expiry-date=\"Sun, 13 Aug 2017 00:00:00 GMT\"",
    ...
    "StorageClass": "GLACIER",
    "Metadata": {}
}

Notez la date d'expiration dans la réponse : vous pouvez accéder à l'objet de stockage temporaire (stocké dans la classe de stockage Reduced Redundancy) jusqu'à cette date. L'objet temporaire est mis à disposition avec l'objet archivé qui se trouve dans la classe de stockage S3 Glacier. Une fois la date d'expiration écoulée, l'objet temporaire est supprimé. Vous devez modifier la classe de stockage de l'objet avant l'expiration de l'objet temporaire. Pour modifier la classe de stockage de l'objet après la date d'expiration, vous devez lancer une nouvelle demande de restauration.

Modifier la classe de stockage de l'objet par Amazon S3 Standard

Pour modifier à nouveau l'objet par la classe de stockage Amazon S3 Standard, exécutez une opération de copie soit en remplaçant l'objet existant, soit en copiant l'objet vers un autre emplacement.

Pour remplacer l'objet existant par la classe de stockage Amazon S3 Standard, exécutez la commande suivante :  

aws s3 cp s3://awsexamplebucket/dir1/example.obj s3://awsexamplebucket/dir1/example.obj --storage-class STANDARD

Pour effectuer une copie récursive de tout un préfixe et remplacer les objets existants par la classe de stockage Amazon S3 Standard, exécutez la commande suivante : 

aws s3 cp s3://awsexamplebucket/dir1/ s3://awsexamplebucket/dir1/ --storage-class STANDARD --recursive --force-glacier-transfer

Pour copier l'objet vers un autre emplacement, exécutez la commande suivante :

aws s3 cp s3://awsexamplebucket/dir1/example.obj s3://awsexamplebucket/dir2/example2.obj