我有以下条件,因此我创建了一些资源,如果不满足那个条件,那么我创建其他资源。
Conditions:
ISProduction:
"Fn::Equals":
- !Ref Environment
- staging
ISNotProduction:
"Fn::Not":
- !Ref ISProduction
但是,当我尝试使用上面的代码段评估模板时,我收到错误:
模板错误:每个Fn :: Not对象都需要一个布尔参数
如何否定云形成模板中的条件? 或者我如何使用ISProduction的否定?
我还在资源创建中尝试了下面的条件,但是我但模板没有通过验证,因为“每个条件成员必须是一个字符串”。
Condition:
"Fn::Not":
- !Ref ISProduction
答案 0 :(得分:13)
您可以在条件逻辑ID之前使用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]