【问题标题】:CloudFormation Conditions ProblemsCloudFormation 条件问题
【发布时间】:2020-09-19 22:33:00
【问题描述】:

我有一个 CloudFormation 模板,我想在 AutoScale 结构中使用一个条件,但我遇到了错误。我想知道我是否遗漏了什么?

我的情况:

Conditions:
  CreateLBResources: !Equals 
    - !Ref LB
    - true

AutoScale 中的负载均衡器:

LoadBalancerNames:
   !If [CreateLBResources, !Ref LoadBalancer, !Ref "AWS::NoValue"]

错误:

属性 LoadBalancerNames 的值必须是字符串列表类型

我想做什么?

如果输入“true”,则添加负载均衡器的名称,如果输入“false”,则将其留空。

感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-cloudformation-custom-resource


    【解决方案1】:

    LoadBalancerNames 中,您不需要任何!If 条件。您可以在 ASG 块中简单地使用Condition

      myASG:
        Condition: CreateLBResources
        Type: AWS::AutoScaling::AutoScalingGroup
        Properties:
          LoadBalancerNames: [<LBName>]
          ...
    

    根据条件CreateLBResources,它会做这项工作(创建或不创建ASG)。

    【讨论】:

    • 谢谢你的回答,我已经知道了。我要做的是,如果输入yes,则在此处写lb name,如果不输入,它将为空。
    • 遗憾的是 CloudFormation 没有提供等待用户输入的方法(与 Python 的 input() 不同)。相反,您可以使用parameters
    【解决方案2】:

    我解决了我的问题。

    LoadBalancerNames:
       - !If [CreateLBResources, !Ref LoadBalancer, !Ref "AWS::NoValue"]
    

    我忘记添加 - 字符了。

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-09
      • 1970-01-01
      • 2019-03-29
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      相关资源
      最近更新 更多