AWS CloudFormation ASG标签未同步EBS卷及启动模板报错咨询
问题解决方法
1 原启动配置标签无法传播到EBS的原因
旧版AWS::AutoScaling::LaunchConfiguration存在原生能力限制:ASG设置了PropagateAtLaunch: true的标签仅会自动同步到扩容出来的EC2实例本身,不会同步到实例挂载的EBS根卷/数据卷,要实现EBS标签自动赋值,必须替换为功能更完整的AWS::EC2::LaunchTemplate(启动模板)。
2 启动模板报错的修复方案
你收到的报错是因为TagSpecifications字段的层级写反了:该字段不能直接放在启动模板的根Properties下,必须嵌套到LaunchTemplateData字段内部。
修正后的完整启动模板配置如下:
ASGLaunchTemplate: Type: AWS::EC2::LaunchTemplate DependsOn: CloudwatchConfigSsm Properties: LaunchTemplateName: !Sub 'ec2-launch-template-${Region}-${Env}' LaunchTemplateData: ImageId: !Ref PresentationAMIId InstanceType: !Ref PresentationInstanceType NetworkInterfaces: - AssociatePublicIpAddress: false BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 20 VolumeType: gp2 Encrypted: true # TagSpecifications移到LaunchTemplateData内部 TagSpecifications: - ResourceType: instance Tags: - Key: System Value: 'xxx' - Key: Env Value: !Sub '${Env}' - Key: EnvNumber Value: '01' - Key: Country Value: !Sub '${Region}' - Key: Company Value: 'xxx' - Key: Global Value: 'all' - Key: CostCenter Value: 'xxxx' - Key: 'Name' Value: !Sub 'presentation-server-${Env}' - ResourceType: volume Tags: - Key: 'Name' Value: !Sub 'presentation-server-ebs-volume-${Env}' - Key: System Value: 'xxx' - Key: Env Value: !Sub '${Env}' - Key: EnvNumber Value: '01' - Key: Country Value: !Sub '${Region}' - Key: Company Value: 'xxx' - Key: Global Value: 'all' - Key: CostCenter Value: 'xxxx'
3 后续ASG配置补充说明
- 你需要将自动扩缩组的启动配置替换为上述启动模板,标签赋值逻辑才能生效
- 如果需要ASG侧定义的标签也能同步到EBS卷,当前AWS原生已支持该能力,只要ASG对应标签设置
PropagateAtLaunch: true即可,不需要额外配置,ASG标签优先级高于启动模板定义的同名标签
内容的提问来源于stack exchange,提问作者Mahbub Rahman
相关产品推荐
相关产品推荐

