当我尝试在 AWS CloudFormation 中创建 AWS::EC2::Instance 资源时,收到“没有在 AWS::EC2::Instance 资源上处理标签的 IAM 权限”错误。
简短描述
当您创建 AWS::EC2::Instance 资源且满足以下条件时,将会收到此错误:
- 您可以在 CloudFormation 模板中指定 Tags 属性的值。
- AWS Identity and Access Management (IAM) 用户、IAM 角色或 CloudFormation 服务角色没有所需的 ec2:CreateTags 权限。
发生此错误时,使用 Tags 属性指定的自定义标签不会应用到 EC2 实例,即便资源已标记为 CREATE_COMPLETE。
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI。
解决方法
1. 确认创建 CloudFormation 堆栈的 IAM 用户、IAM 角色或 CloudFormation 服务角色拥有在受影响的 EC2 实例上执行 ec2:CreateTags 和 ec2:DeleteTags 的 权限。
2. 使用 CloudFormation 控制台或 AWS CLI 在受影响的 CloudFormation 模板中对 AWS::EC2::Instance 资源的 Tags 属性添加注释。然后,更新堆栈。
使用 CloudFormation 控制台:
在 CloudFormation 模板中,对 Tags 属性添加注释,然后更新堆栈。例如:
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
# Tags:
# - Key: key1
# Value: value1
# - Key: key2
# Value: value2
使用 AWS CLI:
运行 update-stack 命令:
aws cloudformation update-stack --region YOUR_REGION --template-body file://YOUR_TEMPLATE_FILE_TAGS_COMMENTED —stack-name YOUR_STACK_NAME
**注意:**请将 YOUR_REGION、YOUR_TEMPLATE_FILE_TAGS_COMMENTED 和 YOUR_STACK_NAME 替换为您的值。
3. 使用 CloudFormation 控制台或 AWS CLI 在受影响的 CloudFormation 模板中取消对 AWS::EC2::Instance 资源的 Tags 属性的注释。然后,再次更新您的堆栈。
使用 CloudFormation 控制台:
在 CloudFormation 模板中,删除 Tags 属性的注释,然后更新您的堆栈。例如:
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
Tags:
- Key: key1
Value: value1
- Key: key2
Value: value2
使用 AWS CLI:
运行 update-stack 命令:
aws cloudformation update-stack --region YOUR_REGION --template-body file://YOUR_TEMPLATE_FILE_TAGS_UNCOMMENTED —stack-name YOUR_STACK_NAME
**注意:**请将 YOUR_REGION、YOUR_TEMPLATE_FILE_TAGS_UNCOMMENTED 和 YOUR_STACK_NAME 替换为您的值。
4. 使用 EC2 控制台或 AWS CLI 检查您的标签是否已正确应用到 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
使用 Amazon EC2 控制台:
1. 打开 Amazon EC2 控制台。
2. 从导航窗格的 Instances(实例)部分,选择 Instances(实例)。
3. 选择通过 CloudFormation 创建的实例。
4. 选择 Tags(标签)选项卡,然后检查在 CloudFormation 模板中指定的自定义标签是否已填充到表中。
使用 AWS CLI:
运行 describe-tags 命令:
aws ec2 describe-tags —filters "Name=resource-id,Values=YOUR_INSTANCE_ID"
**注意:**请将 YOUR_INSTANCE_ID 替换为堆栈中的 EC2 实例的实例 ID。