否定CloudFormation模板中的条件

clo*_*her 10 cloud amazon-web-services aws-cloudformation

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

Conditions:
  ISProduction:
    "Fn::Equals":
      - !Ref Environment
      - staging
  ISNotProduction:
      "Fn::Not":
        - !Ref ISProduction
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Condition:
      "Fn::Not":
        - !Ref ISProduction
Run Code Online (Sandbox Code Playgroud)

Geo*_*ker 18

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

关联条件

要有条件地创建资源,资源属性或输出,必须将条件与它们相关联.添加Condition:键和条件的逻辑ID作为关联条件的属性,如下面的代码段所示.仅当CreateProdResources条件的计算结果为true时,AWS CloudFormation才会创建NewVolume资源.

您的示例应如下所示:

Conditions:
  ISProduction:
    "Fn::Equals":
      - !Ref Environment
      - staging
  ISNotProduction:
      "Fn::Not":
        - Condition: ISProduction
Run Code Online (Sandbox Code Playgroud)

您可以选择以简短形式编写它:

Conditions:
  ISProduction:
    !Equals [!Ref Environment, staging]
  ISNotProduction:
    !Not [Condition: ISProduction]
Run Code Online (Sandbox Code Playgroud)