Comment puis-je restaurer un objet Amazon S3 à partir de la classe de stockage S3 Glacier ou S3 Glacier Deep Archive à l'aide d'AWS CLI ?

Date de la dernière mise à jour : 18/11/2021

J'ai archivé un objet Amazon Simple Storage Service (Amazon S3) dans la classe de stockage S3 Glacier ou Glacier Deep Archive en utilisant une configuration de cycle de vie. Comment restaurer l'objet à l'aide d'AWS Command Line Interface (AWS CLI) ?

Résolution

Suivez ces étapes pour restaurer un objet S3 à partir du stockage Amazon S3 Glacier ou de la classe S3 Glacier Deep Archive à l'aide de l'AWS CLI :

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous d'utiliser leur version la plus récente.

Lancement d’une demande de restauration

Exécutez la commande suivante pour lancerune 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"}}'

Une fois cette commande exécutée, une copie provisoire de l'objet est mise à disposition pour la durée spécifiée dans la demande de restauration. Dans cet exemple, la durée spécifiée dans la demande de restauration est de 25 jours et le niveau de restauration est défini sur S3 Standard.

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.
  • Pour la classe de stockage S3 Glacier, vous pouvez utiliser les options de récupération accélérée, standard ou en bloc. Toutefois, vous ne pouvez utiliser que les options de récupération standard ou en bloc pour la classe de stockage S3 Glacier Deep Archive.
  • Si la syntaxe JSON utilisée dans cet exemple génère une erreur sur un client Windows, remplacez la demande de restauration par la syntaxe suivante :
--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

Surveiller le statut de votre demande de restauration

Exécutez la commande suivante pour surveiller le statut de la 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 | DEEP_ARCHIVE",
    "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 | DEEP_ARCHIVE",
    "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 en même temps que l'objet archivé qui se trouve dans la classe de stockage S3 Glacier ou S3 Glacier Deep Archive. 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.

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

Pour remplacer la classe de stockage de l'objet par Amazon S3 Standard, utilisez copy (en remplaçant l'objet existant ou en copiant l'objet vers un autre emplacement).

Avertissement : si vous utilisez la version 1.x d'AWS CLI, assurez-vous que le seuil partitionné est défini sur 5 Go avant de copier un objet. Sinon, les métadonnées utilisateur de l'objet sont perdues lorsque la taille de l'objet est supérieure aux seuils en plusieurs parties d'AWS CLI. Pour les objets de plus de 5 Go, utilisez la version 2.x d'AWS CLI pour préserver les métadonnées utilisateur.

(Facultatif) Pour augmenter le seuil en plusieurs parties d'AWS CLI, exécutez la commande suivante :

aws configure set default.s3.multipart_threshold 5GB

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 d'un préfixe complet 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