AWS CloudFormation YAML!或功能

时间:2016-10-05 15:44:11

标签: amazon-web-services amazon-cloudformation

错误:“模板验证错误:模板格式错误:条件只能是对参数和其他条件的布尔运算”

使用JSON条件阻止:

"Conditions" : { "CreateBetaResources" : {"Fn::Or" : [ {"Fn::Equals" : [{"Ref" : "Environment"}, "beta"]}, {"Fn::Equals" : [{"Ref" : "Environment"}, "eubeta"]} ]}, "CreateStagingResources" : {"Fn::Equals" : [{"Ref" : "Environment"}, "staging"]}, "CreateProdResources" : { "Fn::Or": [ {"Fn::Equals" : [{"Ref" : "Environment"}, "prod"]}, {"Fn::Equals" : [{"Ref" : "Environment"}, "euprod"]} ] } },

YAML阻止无效:

Conditions: CreateBetaResources: !Or [!Equals [!Ref "Environment", beta], !Equals [!Ref "Environment", eubeta]] CreateStagingResources: - !Equals [!Ref "Environment", staging] CreateProdResources: !Or [!Equals [!Ref "Environment", prod], !Equals [!Ref "Environment", euprod]]

为什么会发生这种错误?我已经搜索了关于“Fn :: Or”和条件的文档......似乎语法是正确的。我也尝试了很多很多其他格式,但这是最接近文档示例的格式。

1 个答案:

答案 0 :(得分:1)

实例化的正确方法!或者/!在YAML的条件块内等于如下:

Conditions:
 CreateBetaResources: !Or [!Equals [!Ref "Environment", beta], !Equals [!Ref "Environment", eubeta]]
 CreateStagingResources: !Equals [!Ref "Environment", staging]
 CreateProdResources: !Or [!Equals [!Ref "Environment", prod], !Equals [!Ref "Environment", euprod]]

在调用!Equals函数( - )之前不要包含列表标识符。