【问题标题】:DependsOn with if else statement in cloudforamtion yml templateDependsOn 与 cloudforamtion yml 模板中的 if else 语句
【发布时间】:2020-12-25 20:20:18
【问题描述】:

嗨,我有 2 个 AWS::ElasticLoadBalancingV2::Listener 名称 Listener1Listener2。我有一个条件是部署listner1listner1 我创建了一个我希望依赖于 Listener 的 ecs 服务。

Service:
    Type: AWS::ECS::Service
    DependsOn: !If [Condition, Listener1, Listener2]
    Properties:

部署时它给我错误Template format error: DependsOn must be a string or list of strings.

【问题讨论】:

    标签: amazon-web-services yaml amazon-cloudformation


    【解决方案1】:

    很遗憾,您不能执行以下操作:

     DependsOn: !If [Condition, Listener1, Listener2]
    

    正如错误消息所说,DependsOn 只接受一个字符串值或字符串列表,而不是一个函数,例如:

    DependsOn: [SomeExistingResource1, SomeExistingResource2]
    

    另外Fn::If 只能用于元数据属性、更新策略属性和属性值。来自docs

    目前,AWS CloudFormation 在模板的资源部分和输出部分的元数据属性、更新策略属性和属性值中支持 Fn::If 内在函数。

    因此您不能在DependsOn 中使用Fn::If

    【讨论】:

    • 在没有部署listener1的情况下会不会报错?因为将根据条件部署listner1或listener2。
    • @SudarshanRampuria 是的,它会出错。我会更改答案以免混淆。这只是一个例子。您需要重新设计您的模板,因为您无法在 CFN 中执行此类条件。
    猜你喜欢
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多