为什么不对资源评估多个条件?

时间:2019-05-18 11:23:26

标签: amazon-cloudformation

在资源上设置多个条件时,我的CloudFormation条件未正确评估。

我已经创建了一个模块化的CodePipeline模板,可以在有或没有数据库的情况下进行部署。我在一些关键资源上设置了多个条件。

Conditions:
  HasDatabase: !Equals [ !Ref HasDatabase, true ]
  IsECS: !Equals [ !Ref IsECS, true ]

Resources:
  MyFakeBucket:
    Type: AWS::S3::Bucket
    Condition: IsECS
    Condition: HasDatabase

我希望在两个条件都为true时创建MyFakeBucket,但是在EITHER满足时创建MyFakeBucket。

1 个答案:

答案 0 :(得分:2)

我的解决方案是创建与现有条件组合的新条件:

Conditions:
  HasDatabase: !Equals [ !Ref HasDatabase, true ]
  IsECS: !Equals [ !Ref IsECS, true ]
  ECSNoDB: !And
    - !Condition NoDatabase
    - !Condition IsECS
  ECSDB: !And
    - !Condition HasDatabase
    - !Condition IsECS

现在我的资源如下:

Resources:
  MyFakeBucket:
    Type: AWS::S3::Bucket
    Condition: ECSDB