AWS cft "fn::if" 显示错误
AWS cft "fn::if" shows error
我在我的模板中使用以下行
"ec2instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : {"Ref" : "Publicinstancetype"},
"ImageId" : "<myimageid>",
"SubnetId" : { "Fn::If" : ["createpublicsubnet",{"Ref":"publicsubnet"},
{"Fn::If" : ["createprivatesubnet",{"Ref":"privatesubnet"}]}
]}
}
}
它显示为 "Template error: Fn::If requires a list argument with three elements" 我究竟哪里出错了? AWS 文档没有帮助。我已经完美地指定了条件,所以不用再费心了
Fn:In
需要 3 个元素,而您只提供了 2 个参数。
请参阅 AWS 文档示例。
"SecurityGroups" : [{
"Fn::If" : [
"CreateNewSecurityGroup",
{"Ref" : "NewSecurityGroup"},
{"Ref" : "ExistingSecurityGroup"}
]
}]
"SubnetId" : { "Fn::If" : ["createpublicsubnet",{"Ref":"publicsubnet"},
应该是
"SubnetId" : { "Fn::If" : ["createpublicsubnet",{"Ref":"publicsubnet"}, {"Ref:"privatesubnet"}]}
在您的代码中,它只有两个元素被传递为。
由于Fn::If函数需要3个参数,所以需要使用伪参数:
"ec2instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : {"Ref" : "Publicinstancetype"},
"ImageId" : "<myimageid>",
"SubnetId" : {
"Fn::If" : [
"createpublicsubnet",
{"Ref" : "publicsubnet"},
{"Fn::If" : [
"createprivatesubnet",
{"Ref" : "privatesubnet"},
{"Ref" : "AWS::NoValue"} // Here
]}
]
}
}
}
我在我的模板中使用以下行
"ec2instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : {"Ref" : "Publicinstancetype"},
"ImageId" : "<myimageid>",
"SubnetId" : { "Fn::If" : ["createpublicsubnet",{"Ref":"publicsubnet"},
{"Fn::If" : ["createprivatesubnet",{"Ref":"privatesubnet"}]}
]}
}
} 它显示为 "Template error: Fn::If requires a list argument with three elements" 我究竟哪里出错了? AWS 文档没有帮助。我已经完美地指定了条件,所以不用再费心了
Fn:In
需要 3 个元素,而您只提供了 2 个参数。
请参阅 AWS 文档示例。
"SecurityGroups" : [{
"Fn::If" : [
"CreateNewSecurityGroup",
{"Ref" : "NewSecurityGroup"},
{"Ref" : "ExistingSecurityGroup"}
]
}]
"SubnetId" : { "Fn::If" : ["createpublicsubnet",{"Ref":"publicsubnet"},
应该是 "SubnetId" : { "Fn::If" : ["createpublicsubnet",{"Ref":"publicsubnet"}, {"Ref:"privatesubnet"}]}
在您的代码中,它只有两个元素被传递为。
由于Fn::If函数需要3个参数,所以需要使用伪参数:
"ec2instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : {"Ref" : "Publicinstancetype"},
"ImageId" : "<myimageid>",
"SubnetId" : {
"Fn::If" : [
"createpublicsubnet",
{"Ref" : "publicsubnet"},
{"Fn::If" : [
"createprivatesubnet",
{"Ref" : "privatesubnet"},
{"Ref" : "AWS::NoValue"} // Here
]}
]
}
}
}