我在cloudformation中有一个堆栈(ECS集群,App LB,Autoscaling Group,启动模板等)。一切正常,我们已经在生产和预生产环境中使用了一段时间。
最近在尝试推送堆栈更新时出现了一个问题。我在AWS :: EC2 :: LaunchTemplate中对UserData进行了一些更改。如果我从此模板启动新堆栈,则效果很好。
但:
如果我进行更改集并应用堆栈更新,cloudformation将创建一个新的启动模板版本,但是,自动伸缩组仍会引用该旧版本。
查看适用于AWS :: AutoScaling :: AutoScalingGroup LaunchTemplateSpecification的AWS文档
我看到了: “ AWS CloudFormation不支持指定$ Latest或$ Default作为模板版本号。”
任何人都想通过堆栈更新来创建需要在其他地方引用的资源的新版本吗?我觉得我缺少明显的东西。
答案 0 :(得分:1)
是的,我很傻: 使用Fn :: GetAtt 好的,取笑我使用json而不是Yaml
...
"ECSAutoScalingGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"VPCZoneIdentifier": {"Ref" : "Subnets"},
"MinSize": "1",
"MaxSize": "10",
"DesiredCapacity": { "Ref": "DesiredInstanceCount" },
"MixedInstancesPolicy": {
"InstancesDistribution" :
{
"OnDemandBaseCapacity" : "0",
"OnDemandPercentageAboveBaseCapacity" : { "Ref" : "PercentOnDemand"}
},
"LaunchTemplate" : {
"LaunchTemplateSpecification" : {
"LaunchTemplateId" : {"Ref" : "ECSLaunchTemplate"},
"Version" : { "Fn::GetAtt" : [ "ECSLaunchTemplate", "LatestVersionNumber" ] }
},
"Overrides" : [ {"InstanceType": "m5.xlarge"},{"InstanceType": "t3.xlarge"},{"InstanceType": "m4.xlarge" },{"InstanceType": "r4.xlarge"},{"InstanceType": "c4.xlarge"}]
}
}
},
...