gpt4 book ai didi

amazon-web-services - Cloudformation yaml-在 AutoScalingGroup 资源中生成实例列表

转载 作者:行者123 更新时间:2023-12-03 07:14:11 27 4
gpt4 key购买 nike

我正在努力弄清楚如何为 AutoScalingGroup 资源编写 yaml 模板的覆盖部分。目前,我所拥有的仅适用于固定长度的字符串。在这种情况下,传递到模板的字符串称为 InstanceTypesOverride

下面您可以看到代码片段:

InstanceTypesOverride = "m5.large,m5d.large,m5a.large"

Type: AWS::AutoScaling::AutoScalingGroup
Properties:
AutoScalingGroupName: !Ref NodeGroupName
DesiredCapacity: !Ref NodeAutoScalingGroupDesiredCapacity
MixedInstancesPolicy:
InstancesDistribution:
OnDemandAllocationStrategy: prioritized
OnDemandBaseCapacity: !Ref OnDemandBaseCapacity
OnDemandPercentageAboveBaseCapacity: !Ref OnDemandPercentageAboveBaseCapacity
SpotAllocationStrategy: !Ref SpotAllocStrategy
LaunchTemplate:
LaunchTemplateSpecification:
LaunchTemplateId: !Ref SpotLaunchTemplate
Version: !GetAtt SpotLaunchTemplate.LatestVersionNumber
Overrides:
- InstanceType: !Select [0, !Split [ ",", !Ref InstanceTypesOverride ] ]
- InstanceType: !Select [1, !Split [ ",", !Ref InstanceTypesOverride ] ]
- InstanceType: !Select [2, !Split [ ",", !Ref InstanceTypesOverride ] ]

我想了解是否可以编写模板的覆盖部分,以便 InstanceTypesOverride 可以处理更多或更少的实例类型。如您所知,不同的区域可以处理不同的实例类型,因此对我来说,让云信息能够处理不同的字符串长度是至关重要的。有人可以建议一些可行的方法吗?

理想情况下,我希望有一个 cfm 模板,它可以与 InstanceTypesOverride = "m5.large,m5d.large,m5a.large"InstanceTypesOverride = "m5.large, m5d.large,m5a.large,m5ad.large,m5n.large,m5dn.large"

最佳答案

遗憾的是,您无法使用普通 CloudFormation (CFN) 来执行此操作。这需要 CFN 不支持的循环机制。

唯一的方法是通过 CFN custom resources或 CFN macro .

在第一种情况下,您必须开发一个自定义 lambda 函数来创建整个使用 AWS SDK(例如 python)的 AutoScalingGroup。在第二种情况下,还需要创建 lambda,但它会解析原始模板,展开Overrides,并将修改后的模板返回给 CFN 执行。

替代方案是不使用 CFN,而使用 terraform (TF)。 TF 对循环具有非常广泛的支持和广泛的支持,这将使您可以轻松地做您想做的事情。

关于amazon-web-services - Cloudformation yaml-在 AutoScalingGroup 资源中生成实例列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66275646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com