AWS CLIやAPIに対応するIAMポリシーのActionを調べる

2023年4月28日

AWS Connand Line Interface

Amazon S3 を使うとき、AWS の API や AWS CLI の s3api のコマンドと、IAM Policy の Action が異なることがあります。たとえばこんな感じ。

S3 APIaws-cli s3apiIAM Policy
HeadBuckethead-buckets3:ListBucket
ListObjectslist-objectss3:ListBucket
GetBucketLifecycleConfigurationget-bucket-lifecycle-configurations3:GetLifecycleConfiguration
GetObjectLockConfigurationget-object-lock-configurations3: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 s3:ListBucket action.

head-bucket — AWS CLI 2 Command Reference

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 が分からないときは以下を確認しましょう。

  1. AWS CLI のドキュメント
  2. AWS CLI のドキュメントに書かれている関連情報
  3. AWS のサービスのアクション

-技術ブログ
-