3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFormationにCapabilitiesを定義する方法: CAPABILITY_IAM と CAPABILITY_NAMED_IAM

Last updated at Posted at 2024-03-15

今回は、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リソースを管理することができます。是非、ご活用ください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?