メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

チュートリアル 2: クロスリージョンレプリケーションの設定(レプリケート元とレプリケート先のバケットを異なる AWS アカウントが所有)

このチュートリアルでは、あるアカウントが所有するレプリケート元バケットに対して、別のアカウントが所有するレプリケート先バケットにオブジェクトをレプリケートするクロスリージョンレプリケーションをセットアップします。

このプロセスは、両方のバケットを同じアカウントが所有するときにクロスリージョンレプリケーションを設定する場合と同じですが、1 つだけ余分な手順が必要です。レプリケート先バケットの所有者は、レプリケート元バケットの所有者にレプリケーションアクションの権限を付与するバケットポリシーを作成する必要があります。

この演習では、IAM ロールの作成およびレプリケート元バケットのレプリケーション設定を除いて、すべての手順をコンソールで実行します。これは AWS CLI または AWS SDK for Java のいずれかを使用して行います。

  1. バケットを 2 つ作成します。

    1. source バケットを Account A の AWS リージョン、たとえば「米国西部(オレゴン)」(us-west-2)に作成します。

      詳細な手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「バケットの作成」を参照してください。

    2. destination バケットを Account B の別の AWS リージョン、たとえば「米国スタンダード」(us-east-1)に作成します。

  2. 両方のバケットでバージョニングを有効にします。

    手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「バケットに対してバージョニングを有効にする」を参照してください。

  3. destination バケットに次のバケットポリシーを追加して、source バケットの所有者にレプリケーションアクションの権限を付与します。

    Copy
    { "Version":"2008-10-17", "Id":"", "Statement":[ { "Sid":"Stmt123", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::AWS-ID-Account-A:root" }, "Action":["s3:ReplicateObject", "s3:ReplicateDelete"], "Resource":"arn:aws:s3:::destination-bucket/*" } ] }

    手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「Editing Bucket Permissions」を参照してください。

  4. アカウント A で IAM ロールを作成します。次に、アカウント A は、次の手順においてソースバケットでレプリケーション設定を追加するときに、このロールを指定します。

    AWS CLI を使用して、この IAM ロールを作成します。AWS CLI のセットアップ手順については「チュートリアル例のツールのセットアップ」を参照してください。

    1. 次のポリシーをコピーし、S3-role-trust-policy.json という名前のファイルに保存します。ポリシーでは、ロールを引き受ける Amazon S3 アクセス権限を付与します。

      Copy
      { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
    2. 次のポリシーをコピーし、S3-role-permissions-policy.json という名前のファイルに保存します。このアクセスポリシーは、さまざまな Amazon S3 バケットとオブジェクトアクションのアクセス権限を付与します。次のステップでは、作成中の IAM ロールにポリシーを追加します。

      Copy
      { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersion", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::destination-bucket/*" } ] }
    3. 次の CLI コマンドを実行して、ロールを作成します。

      Copy
      $ aws iam create-role \ --role-name RoleForS3CrossAccountCrossRegionReplication \ --assume-role-policy-document file://S3-role-trust-policy.json
    4. 次の CLI コマンドを実行して、ポリシーを作成します。

      Copy
      $ aws iam create-policy \ --policy-name PolicyForS3CrossAccountCrossRegionReplication \ --policy-document file://S3-role-permissions-policy.json
    5. 前のコマンドの出力で返されるポリシー ARN を書き留めます。

    6. ロールにポリシーをアタッチするには、次の CLI コマンドを実行します。

      Copy
      $ aws iam attach-role-policy \ --role-name RoleForS3CrossAccountCrossRegionReplication \ --policy-arn policy-arn

      これでアカウント A により Amazon S3 アクションで必要なロールが作成されたので、オブジェクトをレプリケートできます。

  5. アカウント Asource バケットのクロスリージョンレプリケーションを有効にします。レプリケーション設定で、キー名のプレフィックスが "Tax/" のオブジェクトを指定の destination バケットにレプリケートするよう Amazon S3 にリクエストする 1 つのルールを追加します。Amazon S3 は、次の例に示すように XML 形式でレプリケーション設定を保存します。

    Copy
    <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::AWS-ID-Account-A:role/role-name</Role> <Rule> <Status>Enabled</Status> <Prefix>Tax</Prefix> <Destination><Bucket>arn:aws:s3:::destination-bucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

    AWS CLI または AWS SDK を使用して source バケットにレプリケーション設定を追加できます。

    • AWS CLI の使用

      AWS CLI では設定を JSON 形式で指定する必要があります。次の JSON をファイル(replication.json)に保存します。バケット名と IAM ロールの ARN を指定する必要があります。

      Copy
      { "Role": "arn:aws:iam::AWS-ID-Account-A:role/role-name", "Rules": [ { "Prefix": "Tax", "Status": "Enabled", "Destination": { "Bucket": "arn:aws:s3:::destination-bucket" } } ] }

      次に、source バケットにレプリケーション設定を追加する CLI コマンドを実行します。

      Copy
      $ aws s3api put-bucket-replication \ --bucket source-bucket \ --replication-configuration file://replication.json

      AWS CLI のセットアップ手順については「チュートリアル例のツールのセットアップ」を参照してください。

      アカウント Aget-bucket-replication コマンドを使用してレプリケーション設定を取得できます。

      Copy
      $ aws s3api get-bucket-replication \ --bucket source-bucket
    • Using the AWS SDK for Java.

      コード例については、「AWS SDK for Java を使用してクロスリージョンレプリケーションをセットアップする方法」を参照してください。

  6. 次のようにセットアップをテストします。

    • アカウント A の認証情報を使用して、source バケットでオブジェクトを作成し、Amazon S3 がアカウント B で所有される destination バケットでオブジェクトをレプリケートしたことを確認します。Amazon S3 がオブジェクトをレプリケートするのにかかる時間は、オブジェクトのサイズによって異なります。レプリケーションのステータスを確認する方法については、「オブジェクトのレプリケーションのステータスを確認する方法」を参照してください。

      source バケットでオブジェクトをアップロードするときに、オブジェクトキー名には "Tax" というプレフィックスが必要です(たとえば、"Tax/document.pdf")。アカウント A はレプリケーション設定に従って source バケットを追加し、Amazon S3 は "Tax" プレフィックスを持つオブジェクトのみをレプリケートします。

    • source バケットのオブジェクトの ACL を更新し、destination バケットに変更が反映されることを確認します。

      手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「オブジェクトに対するアクセス権限を編集する」を参照してください。

    • オブジェクトのメタデータを更新し、destination バケットに変更が反映されることを確認します。

      手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「オブジェクトのメタデータを編集する」を参照してください。

    レプリカは source バケットのオブジェクトの正確なコピーであることを忘れないでください。

詳細については、次のトピックを参照してください。

クロスリージョンレプリケーション

レプリケートするものと、しないもの

オブジェクトのレプリケーションのステータスを確認する方法

チュートリアル 1: クロスリージョンレプリケーションの設定(レプリケート元とレプリケート先のバケットを同一の AWS アカウントが所有)

このページの内容: