使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

当 RunInstances 的 IAM 策略具有基于标签的限制时,如何通过 CloudFormation 创建 Amazon EC2 实例?

1 分钟阅读
0

我想通过 AWS CloudFormation 创建 Amazon Elastic Compute Cloud (Amazon EC2) 实例。我的 RunInstances 的 AWS Identity and Access Management (IAM) 策略具有基于标签的限制。

解决方法

AWS::EC2::Instance 资源的 Tags 属性不会扩展到通过 CloudFormation 创建的卷中。如果与用户或角色关联的 IAM 策略具有针对卷标签的限制,则您会收到以下错误: “You are not authorized to perform this operation”(您无权执行此操作)。

要将标签通过 CloudFormation 传递给 ec2:CreateVolume,您必须在 CloudFormation 模板的 AWS::EC2::LaunchTemplate 资源中定义标签。

要设置此配置,请完成以下步骤:

  1. 在堆栈中定义启动模板资源,将 IAM 策略和 ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatetagspecification.html#cfn-ec2-launchtemplate-launchtemplatetagspecification-tags)ResourceType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatetagspecification.html#cfn-ec2-launchtemplate-launchtemplatetagspecification-resourcetype) 所需的[标签[设置为 volume
    以下是您可以使用的代码示例:

    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 调用不受标记要求的约束。

AWS 官方
AWS 官方已更新 1 个月前