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

レプリケーションのアクセス許可のセットアップ

レプリケーションを設定するときは、次のようにアクセス許可を取得する必要があります。

  • IAM ロールを作成する — Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートするためのアクセス許可を必要とします。これらのアクセス許可を付与するには、IAM ロールを作成し、レプリケーション設定でそのロールを指定します。

  • レプリケート元バケットとレプリケート先バケットが同じアカウントによって所有されていない場合、レプリケート先バケット所有者は、レプリカを保存するためのアクセス許可をレプリケート元バケット所有者に付与する必要があります。

IAM ロールの作成

デフォルトでは、すべての Amazon S3 リソース (バケット、オブジェクト、および関連するサブリソース) はプライベートで、リソース所有者だけがリソースにアクセスできます。レプリケート元バケットからオブジェクトを読み込んでそれをレプリケート先バケットにレプリケートするには、Amazon S3 にこれらのタスクを実行するためのアクセス許可が必要です。これらのアクセス許可を付与するには、IAM ロールを作成し、レプリケーション設定でそのロールを指定します。

このセクションでは、信頼ポリシーと最低限必要なアクセス許可ポリシーについて説明します。チュートリアル例では、IAM ロールを作成するための手順をステップバイステップで説明しています。詳細については、「レプリケーションのチュートリアル」を参照してください。

  • 以下は、信頼ポリシーを示しています。ここでは、このロールを引き受けることができるサービスプリンシパルとして Amazon S3 を指定します。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

    IAM ロールの詳細については、IAM ユーザーガイド の「IAM ロール」を参照してください。

  • 以下は、アクセスポリシーを示しています。ここでは、ユーザーに代わってレプリケーションタスクを実行する権限をロールに付与します。Amazon S3 がこのロールを引き受ける場合、このポリシーで指定されたアクセス許可を持つことになります。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::destination-bucket/*" } ] }

    アクセスポリシーは、以下のアクションに対するアクセス許可を付与します。

    • s3:GetReplicationConfiguration および s3:ListBucketレプリケート元バケットでのこれらのアクションのアクセス許可により、Amazon S3 はレプリケーション設定とリストバケットのコンテンツを取得できます (現在のアクセス許可モデルでは、削除マーカーにアクセスするには s3:ListBucket アクセス許可が必要です)。

    • s3:GetObjectVersion および s3:GetObjectVersionAcl — すべてのオブジェクトに付与されているこれらのアクションのアクセス許可により、Amazon S3 はオブジェクトに関連付けられた特定のオブジェクトバージョンおよびアクセスコントロールリスト (ACL) を取得することができます。

    • s3:ReplicateObject および s3:ReplicateDeleteレプリケート先バケットのオブジェクトに対するこれらのアクションのアクセス許可により、Amazon S3 はレプリケート先バケットにオブジェクトまたは削除マーカーをレプリケートできます。削除マーカーの詳細については、「削除オペレーションがレプリケーションに与える影響」を参照してください。

      注記

      レプリケート先バケットの s3:ReplicateObject アクションに対するアクセス許可を付与した場合、オブジェクトタグもレプリケートできます。したがって、s3:ReplicateTags アクションのアクセス許可を明示的に付与する必要はありません。

    • s3:GetObjectVersionTagging — このレプリケート元バケットのオブジェクトに対するこのアクションのアクセス許可により、Amazon S3 はレプリケーションのためにオブジェクトタグを読み取ることができるようになります (「オブジェクトのタグ付け」を参照してください)。Amazon S3 がこれらのアクセス許可を持っていない場合は、オブジェクトはレプリケートされますが、オブジェクトタグはレプリケートされません。

    Amazon S3 のアクション一覧については、「ポリシーでのアクセス許可の指定」を参照してください。

    重要

    IAM ロールを所有する AWS アカウントは、IAM ロールに付与するアクションのアクセス許可を持っている必要があります。

    たとえば、レプリケート元バケットに別の AWS アカウントが所有するオブジェクトが含まれていたとします。オブジェクトの所有者は、IAM ロールを所有する AWS アカウントに、オブジェクト ACL を使用して必要なアクセス許可を明示的に付与する必要があります。そうでない場合、Amazon S3 はオブジェクトにアクセスできず、オブジェクトのレプリケーションは失敗します。ACL のアクセス許可については、「アクセスコントロールリスト (ACL) の概要」を参照してください。

    ここで説明されているアクセス許可は、最小のレプリケーション設定に関連しています。オプションのレプリケーション設定を追加する場合は、追加のアクセス許可を Amazon S3 に付与する必要があります。詳細については、「追加のレプリケーション設定」を参照してください。

レプリケーション元バケットとレプリケーション先バケットが別々の AWS アカウントによって所有されている場合のアクセス許可の付与

ソースバケットと宛先バケットが同じアカウントによって所有されていない場合、レプリケート先バケット所有者は、次のように、レプリケート元バケット所有者にレプリケーションアクションを実行する権限を付与するバケットポリシーも追加する必要があります。

{ "Version":"2008-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"1", "Effect":"Allow", "Principal":{ "AWS":"SourceBucket-AcctID" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::destinationbucket/*" }, { "Sid":"2", "Effect":"Allow", "Principal":{ "AWS":"SourceBucket-AcctID" }, "Action":"s3:List*", "Resource":"arn:aws:s3:::destinationbucket" } ] }

例については、「例 2: レプリケート元バケットとレプリケート先バケットが異なるアカウントによって所有されている場合のレプリケーション設定」を参照してください。

レプリケート元バケットのオブジェクトがタグ付きの場合は、以下の点に注意してください。

  • レプリケート元のバケット所有者が (IAM ロールによって) オブジェクトタグをレプリケートするための s3:GetObjectVersionTagging および s3:ReplicateTags アクションのアクセス許可を Amazon S3 に付与した場合、Amazon S3 はオブジェクトと共にタグをレプリケートします。IAM ロールに関する詳細は、「IAM ロールの作成」を参照してください。

  • レプリケート先のバケット所有者は、タグがレプリケートされるのを望まない場合、次のステートメントをレプリケート先のバケットポリシーに追加することで、s3:ReplicateTags アクションのアクセス許可を明示的に拒否できます。

    ... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:root" }, "Action":["s3:ReplicateTags"], "Resource":"arn:aws:s3:::destinationbucket/*" } ] ...

レプリカの所有権の変更

レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合、レプリケート先バケットを所有する AWS アカウントにレプリカの所有者を変更するように Amazon S3 に指示できます。これは所有者オーバーライドオプションと呼ばれます。詳細については、「追加のレプリケーション設定: レプリカ所有者の変更」を参照してください。