Amazon EC2 Auto Scaling
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 Auto Scaling 组创建启动模板

在可以使用启动模板创建 Auto Scaling 组之前,您必须创建启动模板,其中包括启动 EC2 实例所需的参数,例如 Amazon 系统映像 (AMI) 的 ID 和实例类型。

以下过程用于创建新的启动模板。新模板使用您定义的参数(从头开始)或现有的启动模板。在创建启动模板之前,您可以按照使用启动模板创建 Auto Scaling 组中的说明创建 Auto Scaling 组。

先决条件

有关所需的 IAM 权限的信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的控制如何使用启动模板

注意事项

在创建用于 Auto Scaling组的启动模板时,请记住以下注意事项:

  • 启动模板为您提供了灵活性,让您选择是启动一种类型的实例,还是将启动实例类型与按需和 Spot 购买选项组合。有关更多信息,请参阅 Auto Scaling 组具有多个实例类型和购买选项。不支持启动具有以下组合的实例:

    • 如果在其他详细信息中指定 Spot 实例请求

    • 在 EC2-Classic 中

  • 如果您为模板配置网络类型(VPC 或 EC2-Classic)、子网和可用区,将忽略这些设置以支持在 Auto Scaling 组中指定的设置。

  • 如果您指定一个网络接口,则必须将安全组配置为该网络接口的一部分,而不是在模板的 Security Groups 部分中指定。

  • 您不能指定多个网络接口。

  • 您不能分配特定的私有 IP 地址。当实例启动时,会在从其中启动实例的子网的 CIDR 范围中分配私有地址。有关为您的 VPC 或子网指定 CIDR 范围的更多信息,请参阅Amazon VPC 用户指南

  • 要指定要使用的现有网络接口,其设备索引必须为 0 (eth0)。在这种情况下,您必须使用 CLI 或 API 来创建 Auto Scaling 组。当您使用 CLI create-auto-scaling-group 命令或 API CreateAutoScalingGroup 操作创建组时,您必须指定可用区参数而不是子网(VPC 区标识符)参数。

  • 您不能使用主机放置关联。

使用控制台为 Auto Scaling 组创建新的启动模板

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Launch Templates

  3. 选择创建新模板。为启动模板的初始版本输入名称并提供描述。

  4. 如果您选择基于另一个模板创建新的模板:

    1. 对于源模板,请选择现有启动模板。

    2. 源模板版本中选择新启动模板版本所基于的启动模板版本。

  5. 启动模板内容下,请提供以下信息。

    1. AMI ID:选择要在其上启动实例的 Amazon 系统映像 (AMI) 的 ID。您可以使用 Search for AMI (搜索 AMI) 对话框搜索所有可用 AMI。从 Quick Start (快速启动) 列表中选择一个常用的 AMI。如果您没有看到所需的 AMI,请选择 AWS MarketplaceCommunity AMIs (社区 AMI) 列表来查找合适的 AMI

    2. 实例类型:选择实例类型。确保实例类型与指定的 AMI 兼容。

    3. 密钥对名称:指定连接到实例时要使用的密钥对

    4. 网络类型:您可以选择指定是将实例启动到 VPC 还是 EC2-Classic(如果适用)。不过,Amazon EC2 Auto Scaling 将忽略启动模板的网络类型和可用区设置以支持 Auto Scaling 组设置。

    5. 安全组:选择一个或多个安全组,或留空以将安全组配置为网络接口的一部分。您不能在这两处指定安全组。如果要使用 EC2-Classic,则必须使用专为 EC2-Classic 创建的安全组。

  6. 网络接口下面,选择添加网络接口并提供以下可选的信息。您只能指定一个网络接口。请注意以下字段:

    1. 设备:指定 eth0 作为设备名称(所用设备的设备索引为 0)。

    2. 网络接口:留空以让 AWS 在启动实例时创建新的网络接口,或者输入现有网络接口的 ID。如果您指定了 ID,则这会将您的 Auto Scaling 组限制为一个实例。

    3. 描述:输入一个描述性名称。

    4. Subnet (子网):虽然您可以选择指定一个子网,但 Amazon EC2 Auto Scaling 会忽略该子网以支持 Auto Scaling 组设置。

    5. 自动分配公有 IP:指定是否自动为设备索引为 eth0 的网络接口分配公有 IP 地址。只能为单个新网络接口启用该设置。

    6. Security group ID (安全组 ID):输入要与主网络接口 (eth0) 关联的一个或多个安全组的 ID。对于 Auto Scaling 组会将实例启动到其中的 VPC,必须为其配置各个安全组。条目之间用逗号分隔。

    7. 终止时删除:选择在 Auto Scaling 组缩减并终止网络接口附加到的实例时是否删除网络接口。

  7. 如果您选择指定要附加到实例的卷,而不包含 AMI 指定的卷,则在存储(卷)下提供以下信息:

    1. 卷类型:选择实例存储或 Amazon EBS 卷。卷类型取决于您选择的实例类型。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 Amazon EC2 实例存储Amazon EBS 卷

    2. 设备名称:指定卷的设备名称。

    3. 快照:输入用于创建卷的快照的 ID。

    4. 大小:对于 Amazon EBS 支持的卷,请指定存储大小。如果您要从快照中创建卷,但未指定卷大小,则默认值为快照大小。

    5. 卷类型:对于 Amazon EBS 卷,请选择卷类型

    6. IOPS:对于预置的 IOPS SSD 卷,输入该卷应该支持的每秒输入/输出操作 (IOPS) 的最大数量。

    7. 终止时删除:对于 Amazon EBS 卷,选择在终止关联实例时是否删除此卷。

    8. 加密:选择可更改 Amazon EBS 卷的加密状态。设置此参数的默认效果会随所选卷源而异,如下表所述。在所有情况下,您都必须拥有使用指定 CMK 的权限。有关指定加密卷的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EBS 加密

      加密结果

      如果 Encrypted 参数设置为... 如果卷源... 则默认加密状态为... 备注
      新(空)卷 未加密* 不适用
      您拥有的未加密快照 未加密*
      您拥有的加密快照 使用相同密钥加密
      与您共享的未加密快照 未加密*
      与您共享的加密快照 加密到默认 CMK
      新卷 加密到默认 CMK 要使用非默认 CMK,请为密钥参数指定一个值。
      您拥有的未加密快照 加密到默认 CMK
      您拥有的加密快照 使用相同密钥加密
      与您共享的未加密快照 加密到默认 CMK
      与您共享的加密快照 加密到默认 CMK

      * 如果启用了默认加密,则所有新创建的卷(不论是否将加密参数设置为)将使用默认 CMK 加密。同时设置加密密钥参数可指定非默认 CMK。

    9. [可选] 密钥:如果您在上一步中选择了,则输入在对卷加密时要使用的客户主密钥 (CMK)。您可以输入以前使用 AWS Key Management Service 创建的任何 CMK。您可以粘贴您可以访问的任何密钥的完整 ARN。有关更多信息,请参阅 AWS Key Management Service Developer Guide和本指南中的与加密卷结合使用时必需的 CMK 密钥策略

      注意

      提供 CMK 但未同时设置加密参数会导致错误。

  8. 对于实例标签,请提供键和值组合以指定标签。您可以标记实例、卷或两者。

  9. 对于高级详细信息,请展开该部分以查看字段并为实例指定任何其他参数。有关本节以及如何使用每个参数的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的创建启动模板

    • 购买选项:您可以选择请求 Spot 实例,并指定您愿意支付的最高实例每小时价格。要使用 Auto Scaling 组来完成此事项,您必须指定不带结束日期的一次性请求。有关更多信息,请参阅 在 Auto Scaling 组中启动 Spot 实例

      重要

      如果您计划在配置 Auto Scaling 组时指定多个实例类型和购买选项,请将这些字段留空。有关更多信息,请参阅Auto Scaling 组具有多个实例类型和购买选项

    • IAM 实例配置文件:指定要与实例关联的 AWS Identity and Access Management (IAM) 实例配置文件。有关更多信息,请参阅 在 Amazon EC2 实例上运行的应用程序的 IAM 角色

    • 关闭操作:您可以将此字段留空,因为 Amazon EC2 Auto Scaling 将忽略它。Amazon EC2 Auto Scaling 的默认行为是终止实例。

    • 终止保护:提供额外的终止保护,但是在扩展 Auto Scaling 组时,Amazon EC2 Auto Scaling 会将其忽略。要控制 Auto Scaling 组在扩展时是否可以终止特定实例,请使用实例保护

    • 监控:选择是否使用 Amazon CloudWatch 启用实例的详细监控。将收取额外费用。有关更多信息,请参阅使用 Amazon CloudWatch 监控 Auto Scaling 组和实例

    • T2/T3 无限:(仅对 T2 和 T3 实例有效)选择是否允许应用程序突增到基准以上并持续所需的时间。可能收取额外费用。有关更多信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例)中的使用 Auto Scaling 组以无限模式启动突发性能实例

    • 置放群组名称:指定在其中启动实例的置放群组。并非可以在置放群组中启动所有实例类型。如果使用指定其他置放群组的 CLI 命令配置 Auto Scaling 组,将忽略该设置以支持为 Auto Scaling 组指定的设置。

    • EBS 优化的实例:为 Amazon EBS I/O 提供额外的专用容量。并非所有实例类型都支持该功能,并且会产生额外的费用。

    • 租期:您可以选择是在共享硬件(共享),还是在隔离的专用硬件(专用)上运行您的实例。可能收取额外费用。您无法选择专用主机

    • RAM 磁盘 ID:与 AMI 关联的 RAM 磁盘的 ID。仅对半虚拟化 (PV) AMI 有效。

    • 内核 ID:与 AMI 关联的内核的 ID。仅对半虚拟化 (PV) AMI 有效。

    • User data:您可以指定用户数据在启动时配置实例或运行配置脚本。

  10. 选择创建启动模板

通过现有实例创建启动模板

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例,然后选择操作Create template from instance (从实例创建模板)

  4. 提供名称和说明。根据需要,调整任何其他启动参数,然后选择创建启动模板

使用命令行创建启动模板

您可以使用以下任一命令:

使用 create-launch-template 命令行创建启动模板,如下所示。为 Groups 指定一个值,它与 Auto Scaling 组将实例启动到其中的 VPC 的安全组对应。指定 VPC 和子网作为 Auto Scaling 组的属性。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"AssociatePublicIpAddress":true,"Groups":["sg-7c227019"],"DeleteOnTermination":true}],"ImageId":"ami-01e24be29428c15b2","InstanceType":"t2.micro","TagSpecifications": [{"ResourceType":"instance","Tags":[{"Key":"purpose","Value":"webserver"}]}]}'

使用以下 describe-launch-templates 命令描述启动模板 my-template-for-auto-scaling

aws ec2 describe-launch-templates --launch-template-names my-template-for-auto-scaling

使用以下 describe-launch-template-versions 命令描述指定启动模板 my-template-for-auto-scaling 的版本。

aws ec2 describe-launch-template-versions --launch-template-id lt-068f72b72934aff71

以下为响应示例:

{ "LaunchTemplateVersions": [ { "VersionDescription": "version1", "LaunchTemplateId": "lt-068f72b72934aff71", "LaunchTemplateName": "my-template-for-auto-scaling", "VersionNumber": 1, "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "LaunchTemplateData": { "TagSpecifications": [ { "ResourceType": "instance", "Tags": [ { "Key": "purpose", "Value": "webserver" } ] } ], "ImageId": "ami-01e24be29428c15b2", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "DeviceIndex": 0, "DeleteOnTermination": true, "Groups": [ "sg-7c227019" ], "AssociatePublicIpAddress": true } ] }, "DefaultVersion": true, "CreateTime": "2019-02-28T19:52:27.000Z" } ] }