您可以使用Conditions 完成此操作。基本上,您可以根据您定义的检查定义一个真或假的变量,然后您可以根据该值创建模板派生。
以下是使用该 AMI 选择方法创建单个 EC2 实例的示例模板:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Example mostly pulled from http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-sample-templates.html",
"Mappings": {
"AWSRegionArch2AMI": {
"eu-central-1": {"HVM64": "ami-d11dc4ff"},
"us-east-1": {"HVM64": "ami-a13749a2"},
"us-west-1": {"HVM64": "ami-fdd8428a"}
}
},
"Parameters": {
"AMI": {
"Description": "AMI to use.",
"AllowedPattern": "(ami-[0-9a-f]{8}){0,1}",
"Default": "",
"Type": "String"
}
},
"Conditions": {
"UseDefaultAMI": {
"Fn::Equals": [
{"Ref": "AMI"},
""
]
}
},
"Resources": {
"EC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": {
"Fn::If": [
"UseDefaultAMI",
{"Fn::FindInMap": [
"AWSRegionArch2AMI",
{"Ref": "AWS::Region"},
"HVM64"
]},
{"Ref": "AMI"}
]
},
"InstanceType": "m3.medium"
}
}
}
}