目的
S3の特定オブジェクトをAWSCLIでEC2のローカルにダウンロードしたい。
発生事象
以下ローカルへのダウンロードコマンドを実行するとAccessDeniedエラー
$ aws s3 cp s3://sourcebucket/object.jpg ./
download failed: s3://sourcebucket/object.jpg to ./object.jpg An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
バケットポリシーとIAMロールの権限周りを確認するが、実行可能な権限設定に見える。
事実、GetObjectと同様に設定したListBucket権限の以下コマンドを実行すると正常に機能
する。
$ aws s3 ls s3://sourcebucket/
2021-07-13 10:56:40 8574 object.jpg
原因と対処
S3バケットのデフォルト暗号化の有効(KMS)に起因していた。
そのため、S3バケットで使用しているKMSの「キーユーザー」にユーザーまたはロールを追加して解決した。
参考
以下のおかげで解決に至りました。
https://base64.work/so/amazon-web-services/1209321