DependsOn 与 cloudforamtion yml 模板中的 if else 语句
Posted
技术标签:
【中文标题】DependsOn 与 cloudforamtion yml 模板中的 if else 语句【英文标题】:DependsOn with if else statement in cloudforamtion yml template 【发布时间】:2020-12-25 20:20:18 【问题描述】:嗨,我有 2 个 AWS::ElasticLoadBalancingV2::Listener
名称 Listener1
和 Listener2
。我有一个条件是部署listner1
或listner1
我创建了一个我希望依赖于 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.
【问题讨论】:
【参考方案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 中执行此类条件。以上是关于DependsOn 与 cloudforamtion yml 模板中的 if else 语句的主要内容,如果未能解决你的问题,请参考以下文章
同一包中的 @Around @Aspect 仅适用于 @DependsOn
为啥 Spring 忽略了我的 @DependsOn 注释?
CloudFormation,在 DependsOn 上应用条件
Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn 值 null
简单介绍@PostConstruct@PreDestroy@DependsOn@Order等注解的作用及嵌套使用时优先级问题