アーカイブされたオブジェクトの復元 - Amazon Simple Storage Service

アーカイブされたオブジェクトの復元

S3 Glacier ストレージクラスまたは S3 Glacier Deep Archive ストレージクラスに保存されている Amazon S3 オブジェクトは、すぐにはアクセスできません。これらのストレージクラスのオブジェクトにアクセスするには、指定された期間 (日数) の間、オブジェクトの一時コピーを S3 バケットに復元する必要があります。これらのストレージクラスの使用方法については、「Amazon S3 ストレージクラスを使用する」および「ストレージのライフサイクルの管理」を参照してください。

S3 Glacier または S3 Glacier Deep Archive から復元されたオブジェクトは、指定した期間のみ保存されます。オブジェクトの永続的なコピーが必要な場合は、Amazon S3 バケット内にそのオブジェクトのコピーを作成します。コピーを作成しない限り、オブジェクトは S3 Glacier または S3 Glacier Deep Archive ストレージクラスに保存されます。

有効期限を計算する際、Amazon S3 は指定した日数をオブジェクトの復元リクエストに加算し、翌日の深夜 0 時 (UTC) に切り上げます。この計算は、オブジェクトの初期復元と、リクエストした利用可能期間の延長に適用されます。たとえば、オブジェクトが 2012 年 10 月 15 日の午前 10 時 30 分 (UTC) に復元されて、日数を 3 と指定した場合、そのオブジェクトは 2012 年 10 月 19 日の午前 00 時 00 分 (UTC) まで利用できます。2012 年 10 月 16 日の午前 11 時 00 分 (UTC) にアクセス可能日数を 1 に変更すると、Amazon S3 は復元されたオブジェクトを 2012 年 10 月 18 日午前 00 時 00 分 (UTC) まで利用可能にします。

アーカイブされたオブジェクトを復元する場合は、そのアーカイブに加えて、一時的に復元されるコピーについても料金が発生します。料金については、「Amazon S3 の料金」を参照してください。

アーカイブされたオブジェクトは、Amazon S3 コンソール、REST API、AWS SDK、AWS コマンドラインインターフェイス (CLI) を使って復元できます。

S3 Glacier または S3 Glacier Deep Archive ストレージクラスにアーカイブされたオブジェクトの復元、ステータスの確認、および進行中の復元をアップグレードするには、以下の手順を使用します。(コンソールでは、これらのストレージクラスに GlacierGlacier Deep Archive という名前が使用されています。)

アーカイブされたオブジェクトを復元するには

  1. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケット] リストで、復元するオブジェクトが含まれるバケットの名前を選択します。

  3. [オブジェクト] リストで復元するオブジェクトを選択し、[アクション] を選択して、[復元の開始] を選択します。

  4. S3 Glacier または S3 Glacier Deep Archive から復元する場合は、[復元の開始] ダイアログボックスに、アーカイブデータをアクセス可能にする日数を入力します。

  5. [取得オプション] で、次のいずれかの操作を行います。

    • [一括取り出し] または [標準取り出し] を選択し、[復元] を選択します。

    • [迅速取り出し] を選択します (S3 Glacier または S3 Intelligent-Tiering Archive アクセスのみに使用可能)。

  6. プロビジョニングされたキャパシティーは、S3 Glacier のオブジェクトにのみ使用できます。プロビジョンドキャパシティーを持っている場合、[復元] を選択してプロビジョニングされた取り出しを開始します。

    プロビジョンドキャパシティーを持っている場合、すべての迅速取り出しはプロビジョンドキャパシティーにより処理されます。詳細については、「プロビジョンドキャパシティー」を参照してください。

    • プロビジョンドキャパシティーを持っておらず、購入する予定もない場合、[復元] を選択します。

    • プロビジョンドキャパシティーを持っていないが、購入する予定の場合、[キャパシティーユニットの追加] を選択して [購入] を選択します。[購入完了] メッセージが表示されたら、[復元] を選択してプロビジョニングされた取り出しを開始します。

復元が進行中でも、復元速度をアップグレードできます。

進行中の復元をより高速の階層にアップグレードするには

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケット名] リストで、復元するオブジェクトが含まれるバケットの名前を選択します。

  3. [オブジェクト] リストから復元中のオブジェクトを 1 つ以上選択し、[アクション] を選択して、[Glacier からの復元] を選択します。オブジェクトの復元状況の確認については、「復元ステータスおよび有効期限日の確認」を参照してください。

  4. アップグレードする階層を選択し、[復元] を選択します。

    高速な復元階層へのアップグレードについては、「進行中の復元速度のアップグレード」を参照してください 。

    注記

    S3 Intelligent-Tiering の標準および大容量の復元は、無料です。ただし、すでに復元されているオブジェクトに対して呼び出された後続の復元リクエストは、GET リクエストとして請求されます。

復元ステータスおよび有効期限日の確認

復元の進行状況を確認するには、オブジェクトの概要ページを参照してください。詳細については、Amazon S3 コンソールでのオブジェクトの概要の表示 を参照してください。このページには、復元が進行中であることが示されます。

S3 Glacier または S3 Glacier Deep Archive から復元する場合、[オブジェクトの概要] の一時コピーに復元の有効期限が表示されます。Amazon S3 は、この日にアーカイブの復元済みコピーを削除します。

S3 Glacier または S3 Glacier Deep Archive から復元されたオブジェクトは、指定した期間のみ保存されます。オブジェクトの永続的なコピーが必要な場合は、Amazon S3 バケット内にそのオブジェクトのコピーを作成します。

オブジェクトを復元したら、[概要] ページからダウンロードできます。詳細については、Amazon S3 コンソールでのオブジェクトの概要の表示 を参照してください。

Java

次の例では、AWS SDK for Java を使用してアーカイブされたオブジェクトのコピーを復元しています。この例では、指定したアーカイブ済みオブジェクトに対する復元リクエストを開始し、復元状況をチェックします。

作業サンプルを作成およびテストする方法については、「Amazon S3 Java コード例のテスト」を参照してください。

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.RestoreObjectRequest; import java.io.IOException; public class RestoreArchivedObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Object key ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Create and submit a request to restore an object from Glacier for two days. RestoreObjectRequest requestRestore = new RestoreObjectRequest(bucketName, keyName, 2); s3Client.restoreObjectV2(requestRestore); // Check the restoration status of the object. ObjectMetadata response = s3Client.getObjectMetadata(bucketName, keyName); Boolean restoreFlag = response.getOngoingRestore(); System.out.format("Restoration status: %s.\n", restoreFlag ? "in progress" : "not in progress (finished or failed)"); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

次の C# の例は、2 日間アーカイブされているオブジェクトを復元するリクエストを開始します。Amazon S3 は復元ステータスを、オブジェクトのメタデータ内に維持します。リクエストを開始した後で、オブジェクトのメタデータを取得し、RestoreInProgress プロパティの値を確認します。

作業サンプルを作成およびテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class RestoreArchivedObjectTest { private const string bucketName = "*** bucket name ***"; private const string objectKey = "** archived object key name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); RestoreObjectAsync(client, bucketName, objectKey).Wait(); } static async Task RestoreObjectAsync(IAmazonS3 client, string bucketName, string objectKey) { try { var restoreRequest = new RestoreObjectRequest { BucketName = bucketName, Key = objectKey, Days = 2 }; RestoreObjectResponse response = await client.RestoreObjectAsync(restoreRequest); // Check the status of the restoration. await CheckRestorationStatusAsync(client, bucketName, objectKey); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } static async Task CheckRestorationStatusAsync(IAmazonS3 client, string bucketName, string objectKey) { GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest { BucketName = bucketName, Key = objectKey }; GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest); Console.WriteLine("restoration status: {0}", response.RestoreInProgress ? "in-progress" : "finished or failed"); } } }

Amazon S3 には、アーカイブの復元を開始するための API が用意されています。詳細については、Amazon Simple Storage Service API リファレンスの「RestoreObject」を参照してください。

S3 Glacier からオブジェクトを復元するには、restore-object コマンドを使用します。

次の例では、25 日間 awsexamplebucket 内の dir1/example.obj を復元します。

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

この例で使用されている JSON 構文が原因で Windows クライアントにエラーが生じる場合は、復元リクエストを以下の構文に置き換えてください。

--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

次のコマンドを使用して、restore-object リクエストのステータスをモニタリングできます。

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

詳細については、AWS CLI コマンドリファレンスの「restore-object」を参照してください。