Cloudformation 如果有两个或

问题描述

我有一个包含以下块的 CFN 模板:

- Fn::If:
   - PredefinedCondition1
   - !Ref ValueIfTrue
   - !Ref AWS::Novalue

我有第二个条件,我希望 If 函数使用 Fn::Or 评估任一条件,但它一直失败并显示 If 需要字符串或条件的消息。这就是我想要实现的

- Fn::If:
   - Fn::Or
     - PredefinedCondition1
     - PredefinedCondition2
   - !Ref ValueIfTrue
   - !Ref AWS::Novalue

PredefinedCondition1PredefinedCondition2 已在同一模板中的 Conditions: 块下定义。

在更简单的语言中,“如果 PredefinedCondition1 !或 PredefinedCondition2,分配 ValueIfTrue”我如何在 Cloudformation 中实现这一点?

解决方法

您必须在 Conditions 部分创建新条件。例如:

Conditions:

    PreDefinedCondition1:
        !Equals [1,1]
        
    PreDefinedCondition2:
        !Equals [1,1]   
        
    Cond1OrCond2:
        !Or [Condition: PreDefinedCondition1,Condition: PreDefinedCondition2]  

然后,稍后您只需使用 Cond1OrCond2

- Fn::If:
   - Cond1OrCond2
   - !Ref ValueIfTrue
   - !Ref AWS::NoValue