Tôi đang cố gắng thiết lập mẫu hình ảnh đám mây hoặc sẽ khởi chạy một phiên bản rõ ràng hoặc một bản sao từ ảnh chụp nhanh. Tôi muốn để có thể sử dụng một tuyên bố loại if/else do đó sẽ giống như thếAWS cloudformation dòng tùy chọn
pseudo code:
if InputSnapshotId:
"SnapshotId" : {"Ref" : "InputSnapshotId"},
else:
"Size" : 20,
Trong cloudformation Tôi đã thử một số thứ như:
"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"
},
Hoặc gói trong Fn :: Nếu trong {}:
{"Fn::If" : [
{"Ref" : "FromSnapshot"},
{"SnapshotId" : { "Ref" : "InputSnapshotId" }},
{"Size" : "20"}
]}
Tất cả đều gây ra các loại lỗi khác nhau. Cái đầu tiên cung cấp một "Thuộc tính không được hỗ trợ Fn :: Nếu" trong cloudformation, thứ hai, không phải là JSON hợp lệ. Tôi có thể snapshot một khối lượng rỗng và xác định một tham số kích thước sau đó luôn luôn vượt qua một SnapshotId và kích thước nhưng tôi cảm thấy như có phải là một cách để có một dòng tùy chọn trong cloudformation.
Bất kỳ ý tưởng nào?
Hoàn hảo, tôi đã không nhận ra tôi có thể xác định một đầu vào như AWS :: NoValue, cảm ơn. – TristanMatthews