否定CloudFormation模板中的条件

时间:2016-12-12 17:24:13

标签: amazon-web-services cloud amazon-cloudformation

我有以下条件,因此我创建了一些资源,如果不满足那个条件,那么我创建其他资源。

Conditions:
  ISProduction:
    "Fn::Equals":
      - !Ref Environment
      - staging
  ISNotProduction:
      "Fn::Not":
        - !Ref ISProduction

但是,当我尝试使用上面的代码段评估模板时,我收到错误:

  

模板错误:每个Fn :: Not对象都需要一个布尔参数

如何否定云形成模板中的条件? 或者我如何使用ISProduction的否定?

我还在资源创建中尝试了下面的条件,但是我但模板没有通过验证,因为“每个条件成员必须是一个字符串”。

Condition:
      "Fn::Not":
        - !Ref ISProduction

1 个答案:

答案 0 :(得分:13)

您可以在条件逻辑ID之前使用Condition键来引用其他条件。

  

Associating a Condition

     

有条件地创建资源,资源属性或输出,   你必须将一个条件与它们联系起来。添加条件:键和   条件的逻辑ID作为关联a的属性   条件,如下面的代码段所示。 AWS CloudFormation   仅在CreateProdResources时创建NewVolume资源   条件评估为真。

您的示例应如下所示:

Conditions:
  ISProduction:
    "Fn::Equals":
      - !Ref Environment
      - staging
  ISNotProduction:
      "Fn::Not":
        - Condition: ISProduction

您可以选择以简短形式书写:

Conditions:
  ISProduction:
    !Equals [!Ref Environment, staging]
  ISNotProduction:
    !Not [Condition: ISProduction]