微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将未知大小的实例类型和权重容量列表添加到 AWS CF 模板 (YAML) 中的 Auto Scaling 组

如何解决将未知大小的实例类型和权重容量列表添加到 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 中没有可用于动态创建实例类型的循环。

您基本上有三种选择

  1. 开发并使用 custom resource 来创建您的 AutoScalingGroup。

  2. 开发并使用 macro 动态生成具有正确实例类型数量的模板。

  3. 不要使用 CFN。还有其他 IaC 工具有循环,可以做你想做的事,例如地形。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。