【发布时间】:2014-11-25 17:11:31
【问题描述】:
我正在尝试设置一个 cloudformation 模板,该模板将启动一个干净的实例或从快照启动一个。我希望能够使用 if / else 类型语句,这样看起来就像
pseudo code:
if InputSnapshotId:
"SnapshotId" : {"Ref" : "InputSnapshotId"},
else:
"Size" : 20,
在 cloudformation 中,我尝试了很多方法,例如:
"WebserverInstanceDataVolume" : {
"Type" : "AWS::EC2::Volume",
"Properties" : {
"Fn::If" : [
{"Ref" : "FromSnapshot"},
{"SnapshotId" : { "Ref" : "InputSnapshotId" }},
{"Size" : "20"}
],
"VolumeType" : "standard",
"AvailabilityZone" : { "Fn::GetAtt" : [ "WebserverInstance", "AvailabilityZone" ]},
"Tags" : [
{"Key" : "Role", "Value": "data" },
]
},
"DeletionPolicy" : "Delete"
},
或者将 in Fn::If 包裹在 {}:
{"Fn::If" : [
{"Ref" : "FromSnapshot"},
{"SnapshotId" : { "Ref" : "InputSnapshotId" }},
{"Size" : "20"}
]}
所有这些都会引发不同的类型或错误。第一个在 cloudformation 中给出“遇到不支持的属性 Fn::If”,第二个是无效的 JSON。我可以对一个空卷进行快照并定义一个大小参数,然后始终传递一个 SnapshotId 和大小,但我觉得必须有一种方法可以在 cloudformation 中有一个可选行。
有什么想法吗?
【问题讨论】:
标签: amazon-web-services amazon-cloudformation