目次
バケットポリシーの修正の要否
アカウントAのS3バケットからアカウントBのS3バケットにコピーする時の
バケットポリシーの修正の要否の表です。
送信元バケットポリシー (A-bucket) |
送信先バケットポリシー (B-bucket) |
|
---|---|---|
Aが実行して Bにコピー |
不要(同一アカウントなのでIAMだけで可) | 必要(B側がAの主体を許可) |
Bが実行して AからPull(A→B) |
必要(A側がBの主体を許可) | 不要(同一アカウントなのでIAMだけで可) |
同一アカウント側はバケットポリシー不要(通常 IAM だけで可)。
A→Bの時で、BのACLが有効の場合、Bにx-amz-acl: bucket-owner-full-control を付けると、Bが管理できます。
アカウント間コピーの可否はVPC間接続(VPCPeering/TransitGatewayなど)とは無関係です。
(S3は各アカウントのVPCの外側(リージョンサービス)にあるため)
バケットポリシーのイメージ
例:Aアカウントのバケットポリシー(コピー元許可)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<BアカウントID>:role/CopyRole" },
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::source-bucket",
"arn:aws:s3:::source-bucket/*"
]
}
]
}
s3:GetObject・・・コピー元オブジェクトを読み取る
s3:ListBucket・・・複数オブジェクトをコピーする場合
例:Bアカウントのバケットポリシー(コピー先許可)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<AアカウントID>:role/CopyRole" },
"Action": ["s3:PutObject"],
"Resource": "arn:aws:s3:::destination-bucket/*"
}
]
}
s3:PutObject・・・コピー先にオブジェクトを書き込む
AWS CLIのコピーコマンドの例
aws s3 cp s3://source-bucket/data.csv s3://destination-bucket/data.csv \
--source-region ap-northeast-1 \
--region ap-northeast-1
関連の記事
AWS S3のアクセス制御(IAMポリシーとバケットポリシー)
AWS CLIのコマンド (S3のファイルの一覧/コピー/移動)