2017年2月13日 星期一

[aws] 跨帳號取用 s3 資源 how to access s3 in the cross-account policy


想要存取跨越不同帳號的 s3 ,應該怎麼設定呢?

有個數據分析的需求是,資料定期的整理到 B 帳號的 s3 上。但是,一般分析是使用 A 帳號的 s3 。


0 .
使用 B 帳號建立好 s3 bucket



可以在 Edit bucket policy  設定

以下是是一個範例 可以代換 accountAid 跟 my-table


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "myconfig",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::accountAid:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-table/*"
},
{
"Sid": "myconfig",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::accountAid:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-table"
}
]
}

這樣便設定好讓 A 帳號也可以讀取 B 帳號建立的 s3 bucket


可以使用 s3 指令驗證


$ aws s3 ls s3://my-table --profile accountA
2017-02-13 15:31:50          6 mytest


$ aws s3 cp /tmp/mytest s3://my-table/zzz --profile accountA
upload: ../../../tmp/mytest to s3://my-table/zzz


awscli 多重 profile 可以加在 ~/.aws/credentials

[accountA]
aws_access_key_id = aaaaa
aws_secret_access_key = bbbb
region = us-west-1



詳細的文章資料可以參考 Amazon 上的文件
Example 2: Bucket Owner Granting Cross-Account Bucket Permissions - Amazon Simple Storage Service
http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html



沒有留言:

張貼留言