今回は、AWS CloudFormationで使われるCapabilitiesのうち、CAPABILITY_IAM と CAPABILITY_NAMED_IAM について解説します。
CloudFormationとは
CloudFormationは、AWSリソースのインフラストラクチャをコードで管理するためのサービスです。テンプレートを使用してAWSリソースを定義し、テンプレートを実行することでリソースを作成、更新、削除することができます。
Capabilitiesとは
Capabilitiesは、CloudFormationがスタックを作成、更新、削除する際に、必要な権限を指定するためのパラメータです。これにより、CloudFormationがスタック内で特定のアクションを実行する際のセキュリティが向上します。
CAPABILITY_IAM
CAPABILITY_IAM を使用すると、CloudFormationはスタック内でIAMリソース(Identity and Access Management)を作成、変更、削除できるようになります。例えば、IAMロールやIAMポリシーなどのリソースを定義する場合には、この権限が必要です。
CAPABILITY_NAMED_IAM
CAPABILITY_NAMED_IAM を指定すると、CloudFormationはスタック内で名前付きIAMリソースを作成、変更、削除できるようになります。名前付きIAMリソースは、リソースに固有の名前を指定することができます。これにより、リソースの管理が容易になります。
CloudFormationにCapabilitiesを定義する方法
Capabilitiesはテンプレートの直下に配置します。以下に、Capabilitiesを適用したテンプレートの例を示します。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyIAMRole:
Type: AWS::IAM::Role
Properties:
RoleName: MyRole
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
Capabilities:
- CAPABILITY_IAM
- CAPABILITY_NAMED_IAM
このテンプレートでは、スタック内に名前付きIAMリソース(MyRole)を作成しようとしていますので、CAPABILITY_NAMED_IAMを定義する必要があります。また、スタック内にはIAMリソース(ec2.amazonaws.com)に関連付けられたロールを作成しようとしているため、CAPABILITY_IAMを定義する必要があります。
まとめ
今回は、AWS CloudFormationでのCapabilitiesの一部であるCAPABILITY_IAMとCAPABILITY_NAMED_IAMについて解説しました。これらの権限を適切に使用することで、セキュリティを確保しながらAWSリソースを管理することができます。是非、ご活用ください。