はじめに
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してあげるやり方もあるみたいなので
次はそれを試してみたいと思います。
引用