AWSマルチアカウントのS3間のcopyのメモ
AWSアカウントAにIAMユーザーA1,
AWSアカウントBにIAMユーザーB1がいるとする。
アカウントAのS3からアカウントBのS3にオブジェクトのコピーを行うには、通常、ユーザーA1としてアカウントAのS3からオブジェクトをgetし、ユーザーB1としてアカウントBのS3にputする方法が考えられる。
そうではなく、S3からS3に直接オブジェクトをcopyしたい。
そこで、コピー元の対象bucketのバケットポリシーに以下を追加する。
{
"Version": "2012-10-17",
"Statement" : {
"Effect":"Allow",
"Sid":"ReadAccess",
"Principal" : {
"AWS":["arn:aws:iam::アカウントBのユーザーB1"]
},
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::コピー元対象bucket/*"
}
}
cliでのアクセスは以下の通り。クライアントのコンピュータを介することなく複数のprofileを跨いだcopyやsyncができる。
aws s3 cp --profile user_A1 s3://A-bucket/object.png --profile user_B1 s3://B-bucket/