Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

使用 EC2 实例创建启动配置

Auto Scaling 提供了一个选项,可使用正在运行的 EC2 实例中的属性创建启动配置。使用此选项时,Auto Scaling 将指定实例中的属性复制到一个模板中,这个模板可用来启动一个或多个 Auto Scaling 组。

提示

您可以直接从 EC2 实例创建 Auto Scaling 组。如果使用此功能,Auto Scaling 还自动为您创建启动配置。

如果指定的实例有 Auto Scaling 当前不支持的属性,则由 Auto Scaling 使用从确定的实例创建的启动配置启动的实例可能不同于该确定的实例。

从头创建启动配置和从现有 EC2 实例创建启动配置之间存在差异。如果从头创建启动配置,需要指定映像 ID、实例类型、可选资源(如存储设备)和可选设置(如监控)。如果从运行的实例创建启动配置,默认情况下 Auto Scaling 从指定实例派生启动配置的属性,以及该实例启动时所在的 AMI 的块储存设备映射(忽略在启动后添加到该实例的任何附加的块设备)。

如果使用正在运行的实例创建启动配置,通过指定作为相同请求一部分的属性,您可以覆盖以下属性:AMI、块储存设备、密钥对、实例配置文件、实例类型、内核、监控、部署租用、虚拟磁盘、安全组、竞价价格、用户数据、该实例是否有关联的公有 IP 地址,以及该实例是否经过了 EBS 优化。

以下示例介绍如何从 EC2 实例创建启动配置。

使用 EC2 实例创建启动配置

要使用现有 EC2 实例的属性创建启动配置,请指定该实例的 ID。

重要

用于启动指定实例的 AMI 必须仍然存在。

使用 AWS 管理控制台从 EC2 实例创建启动配置

您可以使用该控制台从运行中的 EC2 实例创建启动配置和 Auto Scaling 组,还可以将该实例添加到新的 Auto Scaling 组。有关更多信息,请参阅 将 EC2 实例附加到 Auto Scaling 组

使用 AWS CLI 从 EC2 实例创建启动配置

使用以下 create-launch-configuration 命令,从使用与该实例(启动后添加的任何块储存设备除外,它们将被忽略)具有相同属性的实例创建启动配置:

Copy
aws autoscaling create-launch-configuration --launch-configuration-name my-lc-from-instance --instance-id i-a8e09d9c

您可以使用以下 describe-launch-configurations 命令来描述启动配置,以及验证其属性是否与实例的属性相匹配:

Copy
aws autoscaling describe-launch-configurations --launch-configuration-names my-lc-from-instance

以下为响应示例:

{
    "LaunchConfigurations": [
        {
            "UserData": null,
            "EbsOptimized": false,
            "LaunchConfigurationARN": "arn",
            "InstanceMonitoring": {
                "Enabled": false
            },
            "ImageId": "ami-05355a6c",
            "CreatedTime": "2014-12-29T16:14:50.382Z",
            "BlockDeviceMappings": [],
            "KeyName": "my-key-pair",
            "SecurityGroups": [
                "sg-8422d1eb"
            ],
            "LaunchConfigurationName": "my-lc-from-instance",
            "KernelId": "null",
            "RamdiskId": null,
            "InstanceType": "t1.micro",
            "AssociatePublicIpAddress": true
        }
    ]
}

从实例创建启动配置以及覆盖块储存设备

默认情况下,Auto Scaling 使用您指定的 EC2 实例中的属性来创建启动配置,除非这些块储存设备来自用于启动该实例的 AMI,而不是该实例。要将块储存设备添加到启动配置,请覆盖该启动配置的块储存设备映射。

重要

用于启动指定实例的 AMI 必须仍然存在。

使用 AWS CLI 创建启动配置和覆盖块储存设备

使用以下 create-launch-configuration 命令来创建使用 EC2 实例但具有自定义块储存设备映射的启动配置:

Copy
aws autoscaling create-launch-configuration --launch-configuration-name my-lc-from-instance-bdm --instance-id i-a8e09d9c --block-device-mappings "[{\"DeviceName\":\"/dev/sda1\",\"Ebs\":{\"SnapshotId\":\"snap-3decf207\"}},{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"SnapshotId\":\"snap-eed6ac86\"}}]"

使用以下 describe-launch-configurations 命令来描述启动配置,并且验证它是否使用您的自定义块储存设备映射:

Copy
aws autoscaling describe-launch-configurations --launch-configuration-names my-lc-from-instance-bdm

下面的示例响应描述了该启动配置:

{
    "LaunchConfigurations": [
        {
            "UserData": null,
            "EbsOptimized": false,
            "LaunchConfigurationARN": "arn",
            "InstanceMonitoring": {
                "Enabled": false
            },
            "ImageId": "ami-c49c0dac",
            "CreatedTime": "2015-01-07T14:51:26.065Z",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/sda1",
                    "Ebs": {
                        "SnapshotId": "snap-3decf207"
                    }
                },
                {
                    "DeviceName": "/dev/sdf",
                    "Ebs": {
                        "SnapshotId": "snap-eed6ac86"
                    }
                }
            ],
            "KeyName": "my-key-pair",
            "SecurityGroups": [
                "sg-8637d3e3"
            ],
            "LaunchConfigurationName": "my-lc-from-instance-bdm",
            "KernelId": null,
            "RamdiskId": null,
            "InstanceType": "t1.micro",
            "AssociatePublicIpAddress": true
        }
    ]
}

创建启动配置和覆盖实例类型

默认情况下,Auto Scaling 使用您指定的 EC2 实例中的属性创建启动配置。根据具体要求,您可能需要更改其中某些属性。Auto Scaling 为您提供从实例覆盖属性以及使用所需值的选项。例如,您可以覆盖实例类型。

重要

用于启动指定实例的 AMI 必须仍然存在。

使用 AWS CLI 创建启动配置和覆盖实例类型

使用以下 create-launch-configuration 命令来创建使用 EC2 实例但实例类型(例如 m1.small)不同于该示例(例如 t1.micro)的启动配置:

Copy
aws autoscaling create-launch-configuration --launch-configuration-name my-lc-from-instance-changetype --instance-id i-a8e09d9c --instance-type m1.small

使用以下 describe-launch-configurations 命令来描述启动配置以及验证实例类型是否被覆盖:

Copy
aws autoscaling describe-launch-configurations --launch-configuration-names my-lc-from-instance-changetype

下面的示例响应描述了该启动配置:

{
    "LaunchConfigurations": [
        {
            "UserData": null,
            "EbsOptimized": false,
            "LaunchConfigurationARN": "arn",
            "InstanceMonitoring": {
                "Enabled": false
            },
            "ImageId": "ami-05355a6c",
            "CreatedTime": "2014-12-29T16:14:50.382Z",
            "BlockDeviceMappings": [],
            "KeyName": "my-key-pair",
            "SecurityGroups": [
                "sg-8422d1eb"
            ],
            "LaunchConfigurationName": "my-lc-from-instance-changetype",
            "KernelId": "null",
            "RamdiskId": null,
            "InstanceType": "m1.small",
            "AssociatePublicIpAddress": true
        }
    ]
}