AWS CloudFormation YAML !Or 函数

AWS CloudFormation YAML !Or function

错误:"Template validation error: Template format error: Conditions can only be boolean operations on parameters and other conditions"

工作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" 和条件的文档......似乎语法是正确的。我也尝试过许多其他格式,但这是最接近文档示例的格式。

使用 YAML 在条件块中实例化 !Or/!Equals 的正确方法如下:

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 函数 (-) 之前不要包含列表标识符。