170730350
170730350

Reputation: 622

Cloudformation If with two Or

I have a CFN template with the following block:

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

I have a 2nd condition and I want the If function to evaluate either condition using Fn::Or but it keeps failing with a message that If expects a string or condition. This is what I am trying to achieve

- Fn::If:
   - Fn::Or
     - PreDefinedCondition1
     - PreDefinedCondition2
   - !Ref ValueIfTrue
   - !Ref AWS::NoValue

Both PreDefinedCondition1 and PreDefinedCondition2 are already defined under the Conditions: block in the same template.

In simpler language, "if PreDefinedCondition1 !Or PreDefinedCondition2, assign ValueIfTrue" How do I achieve this in Cloudformation?

Upvotes: 1

Views: 3044

Answers (1)

Marcin
Marcin

Reputation: 238397

You have to create new condition in your Conditions section. For example:

Conditions:

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

Then, later you just use Cond1OrCond2:

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

Upvotes: 2

Related Questions