AWS CloudFormation を通じて Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを作成したいです。しかし、私の RunInstances 用の AWS Identity and Access Management (IAM) ポリシーにはタグベースの制限があります。
簡単な説明
起動テンプレートを使用して、CloudFormation を通じて Amazon EC2 インスタンスを作成できます。
CloudFormation 経由で作成されたボリュームは、AWS::EC2::Instance リソースのタグプロパティの対象ではありません。ユーザーまたはロールに関連付けられている IAM ポリシーにボリュームタグの制限がある場合は、次のエラーが表示されます。
「この操作を行う権限がありません。」
CloudFormation を通して ec2:CreateVolume にタグを渡すには、CloudFormation テンプレートの AWS::EC2::LaunchTemplate リソースでタグを定義する必要があります。
解決方法
1. IAM ポリシーで要求されるタグを使用して、スタック内の起動テンプレートを定義します。例:
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
2. 起動テンプレートを EC2 インスタンスリソースにアタッチします。例:
Instance:
Type: 'AWS::EC2::Instance'
Properties:
LaunchTemplate:
LaunchTemplateId: !Ref RequiredTagsLaunchTemplate
Version: 1
InstanceType: r4.xlarge
.
.
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
3. 起動テンプレートに必要なタグがすべて含まれていることを確認します。
重要: スタックを作成するロールまたはユーザーに、タグ付け制限なしで起動テンプレートを作成および使用するアクセス許可があることを確認する必要があります。aws:CalledVia 条件キーを使用して、CloudFormation API 呼び出しをタグ付け要件から除外する新しいステートメントを作成できます。