Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

例 3: レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合のレプリカ所有者の変更

クロスリージョンレプリケーション (CRR) 設定のレプリケート元レプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリカの所有権をレプリケート先バケットを所有する AWS アカウントに変更するように Amazon S3 に対して指示できます。この例では、Amazon S3 コンソールおよび AWS CLI を使用してレプリカ所有権を変更する方法について説明します。詳細については、「CRR 追加設定: レプリカの所有者の変更」を参照してください。

トピック

    レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合のレプリカ所有者の変更 (コンソール)

    詳細な手順については、Amazon Simple Storage Service コンソールユーザーガイド にある「レプリケート先バケットが異なる AWS アカウントにある場合の CRR ルールの設定」を参照してください。

    レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合のレプリカ所有者の変更 (AWS CLI)

    AWS CLI を使用してレプリカの所有権を変更するには、バケットを作成し、バケットのバージョニングを有効にします。さらに、IAM ロールを作成して Amazon S3 にオブジェクトをレプリケートするアクセス権限を与え、レプリケート元バケットにレプリケーション設定を追加します。レプリケーション設定で、Amazon S3 にレプリカ所有者の変更を指示します。また、セットアップをテストします。

    レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合にレプリカの所有権を変更するには (AWS CLI)

    1. この例では、レプリケート元バケットおよびレプリケート先バケットを 2 つの異なる AWS アカウントで作成します。2 つの名前付きプロファイルで AWS CLI を設定します。この例では、それぞれ acctAacctB という名前のプロファイルを使用します。認証情報プロファイルの設定については、AWS Command Line Interface ユーザーガイド の「名前付きプロファイル」を参照してください。

      重要

      この演習に使用するプロファイルは、必要なアクセス権限を持っている必要があります。たとえば、レプリケーション設定で、Amazon S3 が引き受けることができる IAM ロールを指定します。使用するプロファイルに iam:PassRole アクセス権限がある場合のみ実行できます。管理者ユーザーの認証情報を使用して名前付きプロファイルを作成すると、すべてのタスクを実行できるようになります。詳細については、IAM ユーザーガイド の「AWS サービスにロールを渡すアクセス許可をユーザーに許可する」を参照してください。

      これらのプロファイルが必要なアクセス権限を持っていることを確認する必要があります。たとえば、レプリケーション設定には Amazon S3 が引き受けることのできる IAM が含まれています。そのような設定をバケットにアタッチするために使用する名前付きプロファイルは、iam:PassRole アクセス権限がある場合のみ実行できます。これらの名前付きプロファイル作成時に管理者ユーザーの認証情報を指定すると、すべての権限が付与されます。詳細については、IAM ユーザーガイド の「AWS サービスにロールを渡すアクセス許可をユーザーに許可する」を参照してください。

    2. レプリケート元バケットを作成してバージョニングを有効にします。この例では、米国東部(バージニア北部) (us-east-1) リージョンにレプリケート元バケットを作成します。

      aws s3api create-bucket \ --bucket source \ --region us-east-1 \ --profile acctA
      aws s3api put-bucket-versioning \ --bucket source \ --versioning-configuration Status=Enabled \ --profile acctA
    3. レプリケート先バケットを作成してバージョニングを有効にします。この例では、米国西部 (オレゴン) (us-west-2) リージョンにレプリケート先バケットを作成します。レプリケート元バケットに使用したものとは異なる AWS アカウントプロファイルを使用してください。

      aws s3api create-bucket \ --bucket destination \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctB
      aws s3api put-bucket-versioning \ --bucket destination \ --versioning-configuration Status=Enabled \ --profile acctB
    4. IAM ロールを作成します。レプリケート元バケットに後で追加するレプリケーション設定でこのロールを指定します。Amazon S3 はこのロールを引き受け、ユーザーの代わりにオブジェクトをレプリケートします。IAM ロールは 2 つのステップで作成します。

      • ロールを作成する

      • アクセス許可のポリシーをロールにアタッチする

      1. IAM ロールを作成します。

        1. 次の信頼ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある S3-role-trust-policy.json という名前のファイルに保存します。このポリシーは、Amazon S3 がロールを引き受けるためのアクセス許可を付与します。

          { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
        2. 次の AWS CLI コマンドを実行して、ロールを作成します。

          $ aws iam create-role \ --role-name crrRole \ --assume-role-policy-document file://s3-role-trust-policy.json \ --profile acctA
      2. アクセス許可のポリシーをロールにアタッチします。

        1. 次のアクセス権限ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある s3-role-perm-pol-changeowner.json という名前のファイルに保存します。このポリシーは、さまざまな Amazon S3 バケットとオブジェクトアクションに対するアクセス権限を付与します。次の手順では、IAM ロールを作成し、このポリシーをロールにアタッチします。

          { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::source" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::destination/*" } ] }
        2. ポリシーを作成してロールにアタッチするには、次のコマンドを実行します。

          $ aws iam put-role-policy \ --role-name crrRole \ --policy-document file://s3-role-perm-pol-changeowner.json \ --policy-name crrRolechangeownerPolicy \ --profile acctA
    5. レプリケーション設定をレプリケート元バケットに追加します。

      1. AWS CLI では、レプリケーション設定を JSON で指定する必要があります。以下の JSON を、ローカルコンピュータの現在のディレクトリにある、replication.json というファイルに保存します。設定で、レプリカ所有権の変更を示す AccessControlTranslation の追加。

        { "Role":"IAM-role-ARN", "Rules":[ { "Status":"Enabled", "Priority":"1", "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ "Prefix":"Tax" }, "Status":"Enabled", "Destination":{ "Bucket":"arn:aws:s3:::destination", "Account":"destination-bucket-owner-account-id", "AccessControlTranslation":{ "Owner":"Destination" } } } ] }
      2. レプリケート元バケット所有者のアカウント ID および IAM-role-ARN の値を指定して JSON を編集します。変更を保存してください。

      3. 次のコマンドを実行して、レプリケート元バケットにレプリケーション設定を追加します。レプリケート元バケット名を指定してください。

        $ aws s3api put-bucket-replication \ --replication-configuration file://replication-changeowner.json \ --bucket source \ --profile acctA
    6. Amazon S3 コンソールでレプリカの所有権を確認します。

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

      2. レプリケート元バケットに Tax という名前のフォルダを作成します。

      3. レプリケート元バケット内のフォルダにオブジェクトを追加します。レプリケート先バケットにオブジェクトレプリカが含まれていること、およびレプリカの所有権がレプリケート先バケットを所有する AWS アカウントに変更されていることを確認します。

    レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合のレプリカ所有者の変更 (AWS SDK)

    レプリケーション設定を追加するコード例については、「レプリケート元とレプリケート先のバケットを同一の AWS アカウントが所有している場合の CRR の設定 (AWS SDK)」を参照してください。レプリケーション設定を適切に変更する必要があります。概念については、「CRR 追加設定: レプリカの所有者の変更」を参照してください。