使用 EC2 实例创建启动配置
Amazon EC2 Auto Scaling 提供了一个选项,可使用正在运行的 EC2 实例中的属性创建启动配置。
如果指定的实例有启动配置当前不支持的属性,则由Auto Scaling 组启动的实例可能不同于原始 EC2 实例。
从头创建启动配置和从现有 EC2 实例创建启动配置之间存在差异。如果从头创建启动配置,需要指定映像 ID、实例类型、可选资源(如存储设备)和可选设置(如监控)。从运行的实例中创建启动配置时,Amazon EC2 Auto Scaling 从指定的实例中派生启动配置的属性。属性也可能来自从中启动实例的 AMI 的块储存设备映射,从而忽略在启动后添加的任何其他块储存设备。
如果使用正在运行的实例创建启动配置,可以通过将以下属性指定为相同请求的一部分,来覆盖这些属性:AMI、块储存设备、密钥对、实例配置文件、实例类型、内核、实例监控、部署租用、虚拟磁盘、安全组、最高 Spot 价格、用户数据、该实例是否有公有 IP 地址,以及该实例是否经过了 EBS 优化。
您可以直接从 EC2 实例创建 Auto Scaling 组。如果使用此功能,Amazon EC2 Auto Scaling 还自动为您创建启动配置。
以下示例介绍如何从 EC2 实例创建启动配置。
使用 EC2 实例创建启动配置
要使用现有 EC2 实例的属性创建启动配置,请指定该实例的 ID。
用于启动指定实例的 AMI 必须仍然存在。
从 EC2 实例创建启动配置(控制台)
您可以使用控制台从运行中的 EC2 实例创建启动配置和 Auto Scaling 组并将该实例添加到新的 Auto Scaling 组。有关更多信息,请参阅将 EC2 实例附上 Auto Scaling 组。。
从 EC2 实例创建启动配置 (Amazon CLI)
可以使用以下 create-launch-configuration 命令从一个实例中创建启动配置,它使用与该实例相同的属性。将忽略在启动后添加的任何块储存设备。
aws autoscaling create-launch-configuration --launch-configuration-namemy-lc-from-instance--instance-idi-a8e09d9c
您可以使用以下 describe-launch-configurations 命令来描述启动配置,以及验证其属性是否与实例的属性相匹配。
aws autoscaling describe-launch-configurations --launch-configuration-namesmy-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
}
]
}
从实例创建启动配置以及覆盖块储存设备 (Amazon CLI)
预设情况下,Amazon EC2 Auto Scaling 使用您指定的 EC2 实例中的属性创建启动配置。不过,块储存设备来自用于启动实例的 AMI,而不是来自实例。要将块储存设备添加到启动配置,请覆盖该启动配置的块储存设备映射。
用于启动指定实例的 AMI 必须仍然存在。
创建启动配置和覆盖块储存设备
使用以下 create-launch-configuration 命令来创建使用 EC2 实例但具有自定义块储存设备映射的启动配置。
aws autoscaling create-launch-configuration --launch-configuration-namemy-lc-from-instance-bdm--instance-idi-a8e09d9c\ --block-device-mappings "[{\"DeviceName\":\"/dev/sda1\",\"Ebs\":{\"SnapshotId\":\"snap-3decf207\"}},{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"SnapshotId\":\"snap-eed6ac86\"}}]"
使用以下 describe-launch-configurations 命令来描述启动配置,并且验证它是否使用您的自定义块储存设备映射。
aws autoscaling describe-launch-configurations --launch-configuration-namesmy-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
}
]
}
创建启动配置和覆盖实例类型 (Amazon CLI)
预设情况下,Amazon EC2 Auto Scaling 使用您指定的 EC2 实例中的属性创建启动配置。根据您的要求,您可能需要覆盖实例中的属性并使用所需的值。例如,您可以覆盖实例类型。
用于启动指定实例的 AMI 必须仍然存在。
创建启动配置和覆盖实例类型
使用以下 create-launch-configuration 命令来创建使用 EC2 实例但实例类型(例如 t2.medium)不同于该示例(例如 t2.micro)的启动配置。
aws autoscaling create-launch-configuration --launch-configuration-namemy-lc-from-instance-changetype\ --instance-idi-a8e09d9c--instance-typet2.medium
使用以下 describe-launch-configurations 命令来描述启动配置以及验证实例类型是否被覆盖。
aws autoscaling describe-launch-configurations --launch-configuration-namesmy-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": "t2.medium",
"AssociatePublicIpAddress": true
}
]
}