#はじめに
S3へクロスアカウントアクセスの設定をした際に、
アップロードしたファイルがダウンロードできない(Access Denied)になってしまったので
そのときの対応について書いておこうと思います。
#原因
EC2など(アカウントA)→S3(アカウントB)とクロスアカウントでアップロードした際に
アップロードしたオブジェクトの所有者がアカウントA側になってしまっていることが原因。
S3のコンソールからアップロードしたファイルのアクセス許可を確認すると
このような画面になっているはず。
#解決方法
アップロード時のコマンドに「--acl bucket-owner-full-control」を追加する。
やってみた↓
aws s3api put-object --bucket 20210814cross-account-test --key storage-class/foo --body test3 --acl bucket-owner-full-control
ダウンロードもできるように!
アクセス許可の画面も表示されるようになりました。
#注意事項
前提条件として、
S3のバケットポリシーの設定で「s3:PutObjectAcl」が許可されている必要がある。
(ここの権限がないと--aclオプションがつけられない)
STSでIAMロールをAsuumeRoleしてあげるやり方もあるみたいなので
次はそれを試してみたいと思います。
#引用
https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-bucket-owner-access/