Amazon S3 を使うとき、AWS の API や AWS CLI の s3api のコマンドと、IAM Policy の Action が異なることがあります。たとえばこんな感じ。
S3 API | aws-cli s3api | IAM Policy |
HeadBucket | head-bucket | s3:ListBucket |
ListObjects | list-objects | s3:ListBucket |
GetBucketLifecycleConfiguration | get-bucket-lifecycle-configuration | s3:GetLifecycleConfiguration |
GetObjectLockConfiguration | get-object-lock-configuration | s3:GetBucketObjectLockConfiguration |
AWS CLI や Terraform, CloudFormation を使うときに、この仕様によくハマります。S3 に限らず、CloudWatch などでも同じようなことがあります。そんなときのために、API に対して、許可すべき IAM Policy の Action を探す方法の備忘録。
AWS CLI のドキュメントを確認する
まず最初に AWS CLI のドキュメントを見ます。S3 API の HeadBucket の場合は head-bucket — AWS CLI 2 Command Reference を確認します。
以下のように許可すべき権限 s3:ListBucket
の説明が書かれています。
To use this operation, you must have permissions to perform the
head-bucket — AWS CLI 2 Command References3:ListBucket
action.
S3 のそのほかのコマンドを調べたい場合は s3api — AWS CLI 2 Command Reference から探します。
AWS CLI のドキュメントに権限が書いていない場合は
だいたい AWS CLI のドキュメントに必要な権限が書いてありますが、見つからないこともあります。たとえば get-object-lock-configuration — AWS CLI 2 Command Reference などは書いてありません。
その場合は AWS CLI のドキュメントにかかれている関連する情報のリンクを探します。今回はリンク先の How S3 Object Lock works # Required permissions - Amazon Simple Storage Service に権限についての情報が書いてあります。
もしリンク先にも見つからない場合は、Amazon S3 のアクション、リソース、条件キー - サービス認証リファレンス から似たような名前の Action を探します。今回の場合は Object
Lock
Configuration
などの部分的なキーワードでページ内を検索をすると見つかると思います。S3 以外のサービスの場合は AWS のサービスのアクション、リソース、および条件キー - サービス認証リファレンス から探します。
まとめ
AWS CLI や API に対応する Action が分からないときは以下を確認しましょう。
- AWS CLI のドキュメント
- AWS CLI のドキュメントに書かれている関連情報
- AWS のサービスのアクション