Cloudformation 如果有两个或

Cloudformation If with two Or

我有一个包含以下块的 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