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:指定是否自动为网络接口分配公有 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 卷的加密状态。设置此参数的默认效果会随所选卷源而异,如下表所述。有关指定加密卷的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EBS 加密

      加密结果

      如果 Encrypted 参数设置为... 如果卷源... 则默认加密状态为... 备注
      新(加密)卷 未加密 不适用
      您拥有的未加密快照 未加密
      您拥有的加密快照 使用相同密钥加密
      与您共享的未加密快照 未加密
      与您共享的加密快照 加密到默认 CMK
      新卷 加密到默认 CMK 要使用自定义密钥,请为密钥参数指定一个值。
      您拥有的未加密快照 加密到默认 CMK
      您拥有的加密快照 使用相同密钥加密
      与您共享的未加密快照 加密到默认 CMK
      与您共享的加密快照 加密到默认 CMK
    9. [可选] 密钥:如果您在上一步中选择了,则输入在对卷加密时要使用的客户主密钥 (CMK)。您可以输入您之前使用 AWS 密钥管理服务创建的任何 CMK。您可以粘贴您可以访问的任何密钥的完整 ARN。有关更多信息,请参阅AWS Key Management Service Developer Guide

      注意

      提供 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. 选择创建启动模板

使用命令行创建启动模板

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

使用 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" } ] }