このガイドは更新されていません。最新の情報と手順については、新しい Amazon S3 ユーザーガイドを参照してください。
レプリケーションのアクセス許可の設定
レプリケーションを設定する場合は、次のように必要なアクセス許可を取得します。
-
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:::SourceBucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::SourceBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::DestinationBucket/*" } ] }
アクセスポリシーは、以下のアクションに対するアクセス許可を付与します。
-
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 のアクション一覧については、「Amazon S3 のアクション」を参照してください。
重要 IAM ロールを所有する AWS アカウントは、IAM ロールに付与するアクションのアクセス許可を持っている必要があります。
たとえば、レプリケート元バケットに別の AWS アカウントが所有するオブジェクトが含まれていたとします。オブジェクトの所有者は、IAM ロールを所有する AWS アカウントに、オブジェクト ACL を使用して必要なアクセス許可を明示的に付与する必要があります。そうでない場合、Amazon S3 はオブジェクトにアクセスできず、オブジェクトのレプリケーションは失敗します。ACL のアクセス許可については、「アクセスコントロールリスト (ACL) の概要」を参照してください。
ここで説明されているアクセス許可は、最小のレプリケーション設定に関連しています。オプションのレプリケーション設定を追加する場合は、追加のアクセス許可を Amazon S3 に付与する必要があります。詳細については、「追加のレプリケーション設定」を参照してください。
-
レプリケート元バケットとレプリケート先バケットが別々の AWS アカウントによって所有されている場合のアクセス許可の付与
ソースバケットと宛先バケットが同じアカウントによって所有されていない場合、レプリケート先バケット所有者は、次のように、レプリケート元バケット所有者にレプリケーションアクションを実行する権限を付与するバケットポリシーも追加する必要があります。
{ "Version":"2012-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"Permissions on objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
SourceBucket-AcctID
:root" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::destinationbucket
/*" }, { "Sid":"Permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID
:root" }, "Action": [ "s3:List*", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "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 に指示できます。これは所有者オーバーライドオプションと呼ばれます。詳細については、「レプリカ所有者の変更」を参照してください。