错误:“模板验证错误:模板格式错误:条件只能是对参数和其他条件的布尔运算”
使用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”和条件的文档......似乎语法是正确的。我也尝试了很多很多其他格式,但这是最接近文档示例的格式。
答案 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函数( - )之前不要包含列表标识符。