AWS CLI を使用して Amazon Glacier ストレージクラスから S3 オブジェクトを復元する方法を教えてください。

最終更新日: 2019 年 5 月 30 日

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

解決方法

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

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

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

$ 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 標準ストレージクラスに戻す必要があります。

オブジェクトを Amazon S3 Standard ストレージクラスに戻す

オブジェクトを Amazon S3 Standard ストレージクラスに戻すには、既存のオブジェクトを上書きするか、オブジェクトを別の場所にコピーしてコピー操作を実行します。

既存のオブジェクトを 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