レプリケーションステータス情報の取得 - Amazon Simple Storage Service

レプリケーションステータス情報の取得

レプリケーションステータスは、レプリケートされるオブジェクトの現在の状態を判断するのに役立ちます。レプリケート元オブジェクトのレプリケーションステータスは、 PENDINGCOMPLETEDまたはFAILEDのいずれかを返します。レプリカのレプリケーションステータスがREPLICAに返されます。

レプリケーションステータスの概要

レプリケーションには、レプリケーションを設定するレプリケート元バケットと、Amazon S3 がオブジェクトをレプリケートするレプリケート先バケットがあります。これらのバケットからオブジェクト (GET オブジェクトを使用) またはオブジェクトメタデータ (HEAD オブジェクトを使用) をリクエストすると、Amazon S3 はレスポンスとしてx-amz-replication-status ヘッダーを返します。

  • レプリケート元バケットのオブジェクトをリクエストする場合、リクエストしたオブジェクトがレプリケーション対象であると、Amazon S3 は x-amz-replication-status ヘッダーを返します。

    たとえば、レプリケーション設定でオブジェクトプレフィックス TaxDocs を指定して、キー名のプレフィックス TaxDocs が付いたオブジェクトのみをレプリケートするように Amazon S3 に指示しているとします。このキー名のプレフィックスを持つ、アップロードしたすべてのオブジェクト (TaxDocs/document1.pdf など) がレプリケートされます。このキー名のプレフィックスが付いたオブジェクトのリクエストでは、Amazon S3 が、オブジェクトのレプリケーション状態が PENDINGCOMPLETED、または FAILED の値のいずれかの x-amz-replication-status ヘッダーを返します。

    注記

    オブジェクトをアップロードした後で、オブジェクトのレプリケーションに失敗した場合、レプリケーションを再試行できません。もう一度オブジェクトをアップロードする必要があります。レプリケーションロールの許可、AWS KMS 許可、またはバケットの許可がないなどの問題がある場合、オブジェクトは FAILED の状態に移行します。バケットやリージョンが使用できないなどの一時的な障害が発生した場合、レプリケーションのステータスは FAILED にはならず、PENDING のままになります。リソースがオンラインに戻ると、S3 はこれらのオブジェクトのレプリケーションを再開します。

  • レプリケート先バケットからオブジェクトをリクエストした場合、リクエストされたオブジェクトが Amazon S3 によって作成されたレプリカであるときに、Amazon S3 は値がREPLICAであるx-amz-replication-statusヘッダーを返します。

注記

レプリケーションが有効になっているレプリケート元バケットからオブジェクトを削除する前に、削除する前にオブジェクトのレプリケーションステータスをチェックして、そのオブジェクトがレプリケートされていることを確認します。

レプリケート元バケットでライフサイクル設定が有効である場合、Amazon S3 は、オブジェクトステータスがCOMPLETEDまたはFAILEDと表示されるまでライフサイクルアクションを停止します。

複数のレプリケート先バケットにレプリケートする場合のレプリケーションステータス

オブジェクトを複数のレプリケート先バケットにレプリケートした場合、x-amz-replication-statusヘッダーの動作はそれぞれ異なります。レプリケート元オブジェクトのヘッダーは、すべてのレプリケート先へのレプリケーションが成功した場合のみ、COMPLETEDの値を返します。すべてのレプリケート先に対してレプリケーションが完了するまで、ヘッダーはPENDINGの値のままになります。1 つ以上のレプリケート先がレプリケーションに失敗すると、ヘッダーはFAILEDを返します。

Amazon S3 レプリカ変更の同期が有効になっている場合のレプリケーションステータス

レプリケーションルールが Amazon S3 レプリカの変更を有効にすると、レプリカは REPLICA 以外のステータスをレポートできます。メタデータの変更がレプリケート中の場合は、x-amz-replication-status ヘッダーは PENDING を返します。レプリカ変更の同期がメタデータのレプリケートに失敗した場合、ヘッダーは FAILED を返します。メタデータが正しくレプリケートされると、レプリカはヘッダー REPLICA を返します。

レプリケーションステータスの検索

バケット内のオブジェクトのレプリケーションステータスを取得するには、Amazon S3 インベントリツールを使用できます。Amazon S3 は、インベントリ設定で指定したレプリケート先バケットに CSV ファイルを送信します。Amazon Athena を使用して、インベントリレポートのレプリケーションステータスをクエリすることもできます。Amazon S3 インベントリのさらなる詳細については、Amazon S3 インベントリ を参照してください。

オブジェクトのレプリケーションステータスは、コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK で確認できます。

S3 コンソールで、[オブジェクト管理の概要] の、オブジェクトの [詳細] ページで、オブジェクトのレプリケーションステータスを確認できます。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケット] リストで、バケット名を選択します。

  3. [オブジェクト] リストで、オブジェクト名を選択します。

    オブジェクトの [詳細] ページが開きます。

  4. [オブジェクト管理の概要] で、[レプリケーションステータス] を確認できます。

次のように、head-objectコマンドを使用してオブジェクトメタデータを取得します。

aws s3api head-object --bucket source-bucket --key object-key --version-id object-version-id

このコマンドは、以下のレスポンス例に示すように、ReplicationStatus を含むオブジェクトメタデータを返します。

{ "AcceptRanges":"bytes", "ContentType":"image/jpeg", "LastModified":"Mon, 23 Mar 2015 21:02:29 GMT", "ContentLength":3191, "ReplicationStatus":"COMPLETED", "VersionId":"jfnW.HIMOfYiD_9rGbSkmroXsFj3fqZ.", "ETag":"\"6805f2cfc46c0f04559748bb039d69ae\"", "Metadata":{ } }

次のコードフラグメントは、それぞれ AWS SDK for Java および AWS SDK for .NET のレプリケーションステータスを取得します。

Java
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, key); ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest); System.out.println("Replication Status : " + metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS));
.NET
GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequest { BucketName = sourceBucket, Key = objectKey }; GetObjectMetadataResponse getmetadataResponse = client.GetObjectMetadata(getmetadataRequest); Console.WriteLine("Object replication status: {0}", getmetadataResponse.ReplicationStatus);