我需要使用JSON中的单个CF模板构建3种不同类型的环境,每种环境具有不同数量的实例。例如:第一个ENV需要2个实例,第二个ENV需要4个实例,第三个ENV需要8个实例。请指教
立即从用户那里获取输入以选择ENV类型,并根据该实例启动实例数。
无法在EC2属性下提及实例计数,并且无法使用Fn :: If来更改条件
答案 0 :(得分:1)
您可以将映射与参数结合使用,如下所示:
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "ALB and ASG",
"Mappings": {
"Environment": {
"i": {
"InstanceType": "t2.small",
"Count": 2
},
"s": {
"InstanceType": "t3.small",
"Count": 3
},
"p": {
"InstanceType": "m1.small",
"Count": 4
}
}
},
"Parameters": {
"ShortEnv": {
"AllowedValues": [
"i",
"p",
"s"
],
"ConstraintDescription": "must define the current environment",
"Description": "Environment type",
"Type": "String"
}
}
然后可以在相关资源属性中按以下方式使用它:
"InstanceType": {
"Fn::FindInMap": [
"Environment",
{
"Ref": "ShortEnv"
},
"InstanceType"
]
},
"DesiredCapacity": {
"Fn::FindInMap": [
"Environment",
{
"Ref": "ShortEnv"
},
"InstanceType"
]
}