CloudFormation条件问题

问题描述

我有一个CloudFormation模板,我想在AutoScale结构中使用一个条件,但是出现错误。我想知道我是否想念什么?

我的状况:

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

AutoScale中的负载均衡器:

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

错误

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

我想做什么?

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

感谢帮助。

解决方法

LoadBalancerNames中,您不需要任何!If条件。您只需在ASG块中使用Condition

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

根据条件CreateLBResources,它将完成工作(创建或不创建ASG)。

,

我解决了我的问题。

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

我忘记添加-字符。

谢谢。