AWS CLI を使用して Amazon S3 Glacier ストレージクラスから S3 オブジェクトを復元するにはどうすればよいですか?

最終更新日: 2021 年 1 月 5 日

ライフサイクル設定を使用して、Amazon Simple Storage Service (Amazon S3) オブジェクトを Amazon Simple Storage Service Glacier ストレージクラスにアーカイブしました。AWS コマンドラインインターフェイス (AWS CLI) を使用してオブジェクトを復元する方法を教えてください。

解決方法

AWS CLI を使用して Amazon S3 Glacier ストレージクラスから S3 オブジェクトを復元するには、以下の手順に従います。

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

復元リクエストを開始する

次のコマンドを実行して、復元リクエストを開始します。必ず、サンプルのコマンドのすべての値を実際のバケット、オブジェクト、復元リクエストの値に置き換えてください。

注: データ取り出し料金はリクエストの数量に基づいているため、復元リクエストのパラメータが正しいことを確認してください。

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

このコマンドを実行したら、オブジェクトの一時的なコピーが、復元リクエストに指定されている期間中使用できるようになります。この例では、指定されている期間は 25 日です。

コマンドに実行できる以下の変更に留意してください。

  • バージョン管理されているバケット内の特定のオブジェクトバージョンを復元するには、--version-id オプションを含めてから、対応するバージョン ID を指定します。
  • この例で使用されている JSON 構文が原因で Windows クライアントにエラーが生じる場合は、復元リクエストを以下の構文に置き換えてください。
--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

復元リクエストのステータスを監視する

次のコマンドを実行して、復元リクエストのステータスを監視します。

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

コマンドを実行した後、復元がまだ進行中である場合は、次のような応答を受け取ります。

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

復元が完了すると、次のような応答を受け取ります。

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

応答の expiry-date にご注意ください。この時点までは、一時ストアオブジェクト (低冗長性ストレージクラスに保存されている) にアクセスできます。一時オブジェクトは、Amazon S3 Glacier ストレージクラスにあるアーカイブされたオブジェクトと一緒に使用できます。expiry-date が経過すると、一時オブジェクトが削除されます。一時オブジェクトの有効期限が切れる前に、オブジェクトのストレージクラスを変更する必要があります。expiry-date の後にオブジェクトのストレージクラスを変更するには、新しい復元リクエストを開始する必要があります。

オブジェクトのストレージクラスを Amazon S3 標準に変更する

オブジェクトのストレージクラスを Amazon S3 標準に変更するには、コピーを行います (既存のオブジェクトを上書きするか、オブジェクトを別の場所にコピーして)。

既存のオブジェクトを Amazon S3 標準ストレージクラスで上書きするには、次のコマンドを実行します。

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

プレフィックス全体に対して再帰的コピーを実行し、既存のオブジェクトを Amazon S3 標準ストレージクラスで上書きするには、次のコマンドを実行します。

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

オブジェクトを別の場所にコピーするには、次のコマンドを実行します。

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