レプリケーションステータス情報の取得 - 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 が、オブジェクトのレプリケーション状態が x-amz-replication-statusPENDING、または COMPLETED の値のいずれかの FAILED ヘッダーを返します。

    注記

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

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

注記

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

レプリケート元バケットでライフサイクル設定が有効である場合、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);