#結論
An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
が出てしまうとき…
インスタンス側のロールにもちゃんと権限を付与しましょうという話だった。
#経緯
わい「EC2からS3にAWS CLIを使ってデータを送りたいな。先輩の話によるとVPCエンドポイントなるものを使うとできるらしい」
(「VPCエンドポイント EC2 S3」で検索)
わい「ふむふむ…要するにVPCのエンドポイントを作成して、ルートテーブルを設定してやれば動かせるって話か。」
(実際にやってみる)
わい「よっしゃ、じゃあ、aws s3 ls s3://[BACKET_NAME]/
を入力して確認しよう」
AWS「An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
」
わい「なんでや」
#状況
- SSMからインスタンスに接続してAWS-CLIを実行
- 自分はS3にアクセスできる権限がある
- VPCエンドポイントの設定は問題ない
- ルートテーブルの設定も問題ない
#原因と解決策
インスタンスにAmazonS3FullAccess
の権限を持ったロールをアタッチする必要がありました。
インスタンスがコマンドを実行するので、あたりまえとはいえ当たり前ではあるのですが、見落としがちになるので注意しましょう。
#参考資料
[AWS] VPCエンドポイント経由でEC2からS3へファイル転送
VPCエンドポイント経由して別AWSアカウントのS3バケットにアクセスしてみた