如何解决将未知大小的实例类型和权重容量列表添加到 AWS CF 模板 (YAML) 中的 Auto Scaling 组
我们有一个 AWS Cloud Formation 堆栈模板,它根据输入中收到的实例类型和权重容量创建一个 AutoScaling 组。对于不同类型的堆栈配置文件,输入中的实例类型数量不同,如果输入列表小于或大于 CF 模板中的映射,则返回错误。 如何将未知大小的以逗号分隔的实例类型列表映射到 AutoScaling 实例类型参数(类型:字符串)
Type: 'AWS::AutoScaling::AutoScalingGroup'
DependsOn:
- SharedInfraStack
- NodeManagerSnsTopic
Properties:
MixedInstancesPolicy:
Instancesdistribution:
ondemandAllocationStrategy: prioritized
ondemandBaseCapacity: !Ref NodesPerZone
LaunchTemplate:
LaunchTemplateSpecification:
LaunchTemplateId: !Ref MyTemplate
Version: !GetAtt MyTemplate.LatestVersionNumber
Overrides:
- InstanceType: !Select [ 0,!Ref StaticDnodeVmType ]
WeightedCapacity: !Select [ 0,!Ref StaticDnodeWeightedCapacity ]
- InstanceType: !Select [ 1,!Ref StaticDnodeVmType ]
WeightedCapacity: !Select [ 1,!Ref StaticDnodeWeightedCapacity ]
解决方法
在普通 CFN 中您不能这样做。 CFN 中没有可用于动态创建实例类型的循环。
您基本上有三种选择:
-
开发并使用 custom resource 来创建您的 AutoScalingGroup。
-
开发并使用 macro 动态生成具有正确实例类型数量的模板。
-
不要使用 CFN。还有其他 IaC 工具有循环,可以做你想做的事,例如地形。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。