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 : 08/06/2022

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

Solution

Effectuez les étapes suivantes pour restaurer un objet S3 à partir du stockage Amazon S3 Glacier ou de la classe Amazon S3 Glacier Deep Archive à l'aide de CLI AWS.

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version AWS CLI 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 disponible 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"}

Remarque : si un objet est stocké dans S3 Glacier Instant Retrieval, la récupération des données est instantanée et l'opération de restauration n'est pas nécessaire. Pour plus d'informations, consultez Object Storage Classes (classes de stockage d’objets).

Surveiller 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

Si la restauration est toujours en cours après l'exécution de la commande, vous recevrez une réponse similaire à la réponse suivante :

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

Une fois la restauration terminée, vous recevrez une réponse similaire à la réponse suivante :

{
    "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 disponible 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.

Remplacez 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 copier. Vous pouvez écraser l'objet existant ou le copier dans 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

Remarque : pour les compartiments suspendus ou pour lesquels la gestion des versions est activée, cette étape crée des copies supplémentaires des objets. Ces objets supplémentaires entraînent également des coûts de stockage. Pour éviter les coûts de stockage, supprimez les versions anciennes qui figurent toujours dans la classe de stockage Glacier ou créez une règle d'expiration du cycle de vie S3.