Amazon S3 で arn:aws:s3:::bucket だけ設定して AccessDenied エラーになった話

Amazon S3 で arn:aws:s3:::bucket だけ設定して AccessDenied エラーになったので arn:aws:s3:::bucket/* も設定して、無事に解決した話をご紹介します。

AWS

背景 S3 へファイルアップロード後、アクセスすると AccessDenied エラー

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>xxxxxx</RequestId>
<HostId>xxxxxx</HostId>
</Error>

解決方法 オブジェクトの ARN arn:aws:s3:::bucket/* を指定する

バケットの ARN arn:aws:s3:::bucket しか指定してなかったので、オブジェクトの ARN arn:aws:s3:::bucket/* を指定して、解決しました。

対象リソースの指定

バケットポリシーやIAMポリシーで、ある Action を許可/拒否する場合、対象 Resource を ARN で指定する。
バケットに対する Action は Resource としてバケットの ARN(arn:aws:s3:::bucket) を指定する。
オブジェクトに対する Action は Resource としてオブジェクトの ARN(arn:aws:s3:::bucket/*) を指定する。

引用元: S3のアクセスコントロールまとめ – Qiita

以上、S3 の ARN を意識してやっていきたい、現場からお送りしました。