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

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

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

S3 バッチレプリケーションジョブを作成するときにも、レプリケーションステータス値を使用することもできます。例えば、これらのステータス値を使用して、レプリケートされたことがない、またはレプリケーションに失敗したオブジェクトをレプリケートできます。バッチレプリケーションでこれらの値を使用する方法の詳細については、「バッチレプリケーションジョブでのレプリケーションステータス情報の使用」を参照してください。

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

レプリケーションには、レプリケーションを設定するレプリケート元バケットと、Amazon S3 がオブジェクトをレプリケートする 1 つ以上のレプリケート先バケットがあります。これらのバケットからオブジェクト (GetObject を使用) またはオブジェクトメタデータ (HeadObject を使用) をリクエストすると、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 ヘッダーを返します。

    注記

    オブジェクトをアップロードした後で、オブジェクトのレプリケーションに失敗した場合、レプリケーションを再試行できません。オブジェクトを再度アップロードするか、S3 バッチレプリケーションを使用して失敗したオブジェクトをレプリケートする必要があります。バッチレプリケーションの使用の詳細については、「バッチレプリケーションを使用した既存のオブジェクトのレプリケーション」を参照してください。

    レプリケーションロールの許可、AWS Key Management Service (AWS KMS) 許可、またはバケットの許可がないなどの問題がある場合、オブジェクトは FAILED ステータスに移行します。バケットやリージョンが使用できないなどの一時的な障害が発生した場合、レプリケーションのステータスは FAILED にはならず、PENDING のままになります。リソースがオンラインに戻ると、Amazon S3 はこれらのオブジェクトのレプリケーションを再開します。

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

注記

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

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

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

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

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

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

バッチレプリケーションジョブでのレプリケーションステータス情報の使用

バッチレプリケーションジョブを作成するときに、オプションで、オブジェクトの作成日やレプリケーションステータスなどの追加のフィルターを指定して、ジョブのスコープを縮小できます。

オブジェクトのレプリケーションは、ObjectReplicationStatuses 値を基に、以下の値を 1 つ以上指定することでフィルターできます。

  • "NONE" - Simple Storage Service (Amazon S3) がこれまでオブジェクトのレプリケートを試みたことがないことを示します。

  • "FAILED" - Amazon S3 が以前にオブジェクトのレプリケートを試みたがオブジェクトのレプリケーションに失敗したことを示します。

  • "COMPLETED" - Simple Storage Service (Amazon S3) が以前にオブジェクトを正常にレプリケートしたことを示します。

  • "REPLICA" - Amazon S3 が別のソースからレプリケートしたレプリカオブジェクトであることを示します。

バッチレプリケーションでこれらのレプリケーションステータス値を使用する方法の詳細については、「バッチレプリケーションジョブのフィルター」を参照してください。

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

バケット内のオブジェクトのレプリケーションステータスを取得するには、Amazon S3 インベントリツールを使用できます。Amazon S3 は、インベントリ設定で指定したレプリケート先バケットに CSV ファイルを送信します。Amazon Athena を使用して、インベントリレポートのレプリケーションステータスをクエリすることもできます。Amazon S3 インベントリのさらなる詳細については、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. [オブジェクト] リストで、オブジェクト名を選択します。オブジェクトの詳細ページが表示されます。

  5. [プロパティ] タブで、[オブジェクト管理の概要] セクションまでスクロールします。[管理設定] で、[レプリケーションステータス] の [値] を確認します。

次の例に示すように、AWS Command Line Interface (AWS CLI) head-object コマンドを使用して、オブジェクトのメタデータを取得します。amzn-s3-demo-source-bucket1 をレプリケーションソースバケットの名前に置き換え、その他の user input placeholders を独自の情報に置き換えます。

aws s3api head-object --bucket amzn-s3-demo-source-bucket1 --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);