需要使用一个AWS CloudFormation模板针对不同的环境启动多个实例

时间:2019-05-16 14:58:18

标签: json amazon-web-services amazon-ec2 amazon-cloudformation autoscaling

我需要使用JSON中的单个CF模板构建3种不同类型的环境,每种环境具有不同数量的实例。例如:第一个ENV需要2个实例,第二个ENV需要4个实例,第三个ENV需要8个实例。请指教

立即从用户那里获取输入以选择ENV类型,并根据该实例启动实例数。

无法在EC2属性下提及实例计数,并且无法使用Fn :: If来更改条件

1 个答案:

答案 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"
    ]
}