Amazon S3 API/CLIコマンドとIAM Actionの対応関係まとめ
はじめに
AWS S3を使っていると、AWS CLIのコマンドとIAM PolicyのActionの名前が異なることでハマることがあります。
# AWS CLIでバケット一覧を取得
aws s3api list-buckets
# 必要なIAM Policy Action
s3:ListAllMyBuckets # なんで名前が違うの!?
例えば:
- CLIでは list-buckets
- APIでは ListBuckets
- IAM Actionでは s3:ListAllMyBuckets
「なんでこんなに違うの!?」「どうやって対応関係を覚えればいいの?」
この記事では、よく使うS3の操作について、CLI・API・IAM Actionの対応関係をまとめました。
1.バケット操作系
操作内容 | AWS CLI (s3api) | API アクション名 | IAM Action |
---|---|---|---|
バケット一覧取得 | list-buckets | ListBuckets | s3:ListAllMyBuckets |
バケット内容確認 | list-objects-v2 | ListObjectsV2 | s3:ListBucket |
バケットの場所確認 | get-bucket-location | GetBucketLocation | s3:GetBucketLocation |
2.オブジェクト操作系
操作内容 | AWS CLI (s3api) | API アクション名 | IAM Action |
---|---|---|---|
オブジェクトコピー | copy-object | CopyObject | s3:PutObject + s3:GetObject |
オブジェクトタグ付け | put-object-tagging | PutObjectTagging | s3:PutObjectTagging |
マルチパートアップロード開始 | create-multipart-upload | CreateMultipartUpload | s3:PutObject |
3.アクセス制御系
操作内容 | AWS CLI (s3api) | API アクション名 | IAM Action |
---|---|---|---|
バケットポリシー設定 | put-bucket-policy | PutBucketPolicy | s3:PutBucketPolicy |
ACL取得 | get-object-acl | GetObjectAcl | s3:GetObjectAcl |
権限エラーが出たら
An error occurred (AccessDenied) when calling the XXX operation
このエラーメッセージの XXX 部分を見ることで、必要なIAM Actionが推測できます。
デバックに困ったら
# まずはデバッグモードで実行
aws s3api list-buckets --debug
# それでもダメなら、CloudTrailで実際のAPI呼び出しを確認
まとめ
以上、実際にハマりがちなコマンドについてまとめてみました!
ぜひブックマークして、困ったときのリファレンスとして使ってください!
参考
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。