在 AWS::AutoScaling::AutoScalingGroup 中检索 LaunchTemplate 的 LatestVersionNumber 属性的 IAM 权限

IAM permission to retrieve LaunchTemplate's LatestVersionNumber attribute in AWS::AutoScaling::AutoScalingGroup

在开发 CloudFormation 模板时,我遵循最小权限原则。因此,我为 CloudFormation 提供了一个可以承担的角色,并且具有最少的权限集。

该模板包含基于 AWS::EC2::LaunchTemplate:

AWS::AutoScaling::AutoScalingGroup
ECSAutoScalingGroup:
  DependsOn: ECSCluster
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    VPCZoneIdentifier: !Ref Subnets
    LaunchTemplate:
      LaunchTemplateId: !Ref ECSLaunchTemplate
      Version: !GetAtt ECSLaunchTemplate.LatestVersionNumber
    MinSize: 1
    MaxSize: 2
    DesiredCapacity: 1
    ...

ECSLaunchTemplate:
  Type: AWS::EC2::LaunchTemplate
  Metadata:
    AWS::CloudFormation::Init:
    ...
  Properties:
    LaunchTemplateName: test-template
    LaunchTemplateData:
       ...

当我使用此模板创建 CloudFormation 堆栈时,ECSAutoScalingGroup 资源出现以下错误:

Failed to retrieve attribute [LatestVersionNumber] for resource [ECSLaunchTemplate]: You are not authorized to perform this operation. (Service: AmazonEC2; Status Code: 403; Error Code: UnauthorizedOperation; Request ID: e0f01fd0-ee2a-4260-94f4-3c65177d05ee; Proxy: null)

我应该将哪个 IAM 策略添加到 CloudFormation 承担的 IAM 角色?显然,如果我给它 AdministratorAccess,它就会成功。但是,我想遵循最小特权原则。

有什么想法吗? 谢谢。

在这里回答我自己的问题。应该将这 2 个操作添加到他们的 IAM 角色策略中:

  • ec2:DescribeLaunchTemplates
  • ec2:DescribeLaunchTemplateVersions