CAPABILITY_NAMED_IAMとは?
AWS CloudFormation において IAM リソースを作成または更新するスタックをデプロイする際に使用される特別な権限オプションです。
背景と用途
IAM (Identity and Access Management) リソースには、IAM ロール、IAM ユーザー、IAM ポリシーなどがあります。これらのリソースを操作する際は慎重な権限設定が求められるため、CloudFormation はデフォルトで IAM リソースの作成を許可しません。
CAPABILITY_NAMED_IAM は、特定の名前が付いた IAM リソースを作成または変更する場合に必要な権限を明示的に許可するためのオプションです。スタック操作に際して、このオプションを使用することで、意図しないセキュリティ上のリスクを回避できます。
不要な場合
IAMリソースを一切作成・更新しないテンプレートの場合、このオプションは指定不要です。
例: S3バケットやEC2インスタンスだけを定義しているテンプレート
必要な場合
1. 名前付きの IAM リソースを作成・更新する場合
CloudFormation テンプレートで IAM リソースを作成し、そのリソースに 名前(RoleName, UserName, PolicyName など)を指定する場合 が該当します。
2. 既存の名前付き IAM リソースを更新する場合
テンプレート内で既存の IAM リソース(名前が指定されたもの)を更新する場合も、このフラグが必要です。
3. サービスが必要とするロールを明示的に作成する場合
特定のAWSサービス(例: Lambda, EC2, CodePipeline など)が動作するために IAM ロールが必要な場合、それを名前付きで定義するとフラグが必要になります。
類似の権限オプション
権限オプション | 必要な場合 | 例 |
---|---|---|
CAPABILITY_IAM | 名前を指定しないIAMリソースを作成・更新する場合 | 自動生成されるIAMロールやポリシー |
CAPABILITY_NAMED_IAM | 名前付きのIAMリソースを作成・更新する場合 | 明示的に名前を指定したIAMロールやポリシー |
CAPABILITY_AUTO_EXPAND | マクロを含むテンプレートをデプロイする場合 | マクロやスタックセットを使用してテンプレートを動的に展開する場合 |