

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为 Auto Scaling 组创建启动模板
<a name="create-launch-template"></a>

在可以使用启动模板创建自动扩缩组之前，您必须创建启动模板，其中包含用于启动实例的配置信息，包括Amazon Machine Images (AMI)的 ID。

要创建新的启动模板，请使用以下过程。

**Contents**
+ [创建启动模板（控制台）](#create-launch-template-for-auto-scaling)
+ [更改默认网络接口设置（控制台）](#change-network-interface)
+ [修改存储配置（控制台）](#modify-storage-configuration)
+ [从现有实例创建启动模板（控制台）](#create-launch-template-from-instance)
+ [相关资源](#create-launch-template-related-resources)
+ [限制](#create-launch-template-limitations)

**重要**  
在创建启动模板时，不会完全验证启动模板参数。如果您为参数指定了错误的值，或者如果您未使用受支持的参数组合，则任何实例都无法通过此启动模板启动。确保为参数指定的值正确，并使用支持的参数组合。例如，要使用基于 Arm 的 AWS Graviton 或 Graviton2 AMI 启动实例，您必须指定一个与 Arm 兼容的实例类型。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[启动模板限制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launch-template-restrictions.html)。

## 创建启动模板（控制台）
<a name="create-launch-template-for-auto-scaling"></a>

以下步骤说明了配置基本启动模板的过程：
+ 指定要从其启动实例的 Amazon machine image（AMI）。
+ 选择一个与您指定的 AMI 兼容的实例类型。
+ 指定连接到实例时要使用的密钥对，例如使用 SSH。
+ 添加一个或多个安全组以允许对实例的网络访问。
+ 指定是否要为每个实例挂载附加卷。
+ 将自定义标签（键值对）添加到实例和卷。

**创建启动模板**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中的**实例**下，选择**启动模板**。

1. 选择 **Create launch template** (创建启动模板)。为启动模板的初始版本输入名称并提供描述。

1. （可选）在 **Auto Scaling 指导**下，选中复选框让 Amazon EC2 提供指导，以帮助创建要与 Amazon EC2 Auto Scaling 结合使用的模板。

1. 在 **Launch template contents**（启动模板内容）下，填写每个必填字段以及所有可选字段。

   1. **Application and OS Images (Amazon Machine Image)** [应用程序和操作系统镜像（Amazon Machine Image）]：（必填项）选择实例 AMI 的 ID。您可以搜索所有可用的 AMI AMIs，也可以从 “最**近**” 或 “**快速入门**” 列表中选择 AMI。如果您没有看到所需的 AMI，请选择 “**浏览更多**” AMIs 以浏览完整的 AMI 目录。

      要选择自定义 AMI，您必须首先从某个自定义实例创建该 AMI。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[创建 Amazon EBS-backed AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)。

   1. 对于 **Instance type**（实例类型），请选择与您指定的 AMI 兼容的单个实例类型。

      或者，要使用基于属性的实例类型选择，请选择**高级**、**指定实例类型属性**，然后指定以下选项：
      + **v 数 CPUs**：输入 v 的最小和最大数CPUs。 要表示没有限制，请输入最小值 0，并将最大值保留为空。
      + **Amount of memory (MiB)** [内存大小（MiB）]：输入最小和最大内存大小（以 MiB 为单位）。若要表示为无限制，请输入最小值为 0，然后将最大值留空。
      + 展开 **Optional instance type attributes**（可选的实例类型属性），然后选择 **Add attribute**（添加属性）以进一步限制可用于满足所需容量的实例类型。有关每个属性的信息，请参阅 *Amazon EC2 API 参考[InstanceRequirementsRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirementsRequest.html)*中的。
      + **生成的实例类型**：您可以查看符合指定计算要求的实例类型，例如 v CPUs、内存和存储。
      + 要排除实例类型，请选择 **Add Attribute**（添加属性）。从 **Attribute**（属性）列表中，选择 **Excluded instance types**（排除的实例类型）。从 **Attribute value**（属性值）列表中，选择要排除的实例类型。

   1. **Key pair (login)** [密钥对（登录）]：对于 **Key pair name**（密钥对名称），请选择一个现有密钥对，或选择 **Create new key pair**（创建新密钥对）以新建一个密钥对。有关更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 密钥对和 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

   1. **Network settings**（网络设置）：对于 **Firewall (security groups)** [防火墙（安全组）]，请使用一个或多个安全组，或将此留空并将一个或多个安全组配置为网络接口的一部分。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[适用于 Linux 实例的 Amazon EC2 安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)。

      如果您未在启动模板中指定任何安全组，则 Amazon EC2 将使用您的 Auto Scaling 组将在其中启动实例的 VPC 的原定设置安全组。预设情况下，此安全组不允许来自外部网络的入站流量。有关更多信息，请参阅 *Amazon VPC 用户指南 VPCs*中的[您的默认安全组](https://docs.aws.amazon.com/vpc/latest/userguide/default-security-group.html)。

   1. 请执行以下操作之一：
      + 更改原定设置网络接口设置。例如，您可以启用或禁用公有 IPv4寻址功能，该功能会覆盖子网上的自动分配公有 IPv4 地址设置。有关更多信息，请参阅 [更改默认网络接口设置（控制台）](#change-network-interface)。
      + 跳过此步骤以保留原定设置网络接口设置。

   1. 请执行以下操作之一：
      + 修改存储配置。有关更多信息，请参阅 [修改存储配置（控制台）](#modify-storage-configuration)。
      + 跳过此步骤以保留原定设置存储配置。

   1. 对于 **Resource tags**（资源标签），请提供键值组合以指定标签。如果您在启动模板中指定了实例标签，然后选择将 Auto Scaling 组的标签传播到其实例，则所有标签都会合并。如果为启动模板中的标签和 Auto Scaling 组中的标签指定了相同的标签键，则优先使用该组中的标签值。

1. （可选）配置高级设置。例如，您可以选择一个 IAM 角色，以供您的应用程序在访问其他 AWS 资源或指定实例启动后可用于执行常见自动配置任务的实例用户数据。有关更多信息，请参阅 [使用高级设置创建启动模板](advanced-settings-for-your-launch-template.md)。

1. 准备好创建启动模板后，请选择 **Create launch template**（创建启动模板）。

1. 要创建 Auto Scaling 组，请从确认页面上选择**创建 Auto Scaling 组**。

## 更改默认网络接口设置（控制台）
<a name="change-network-interface"></a>

网络接口提供与您的 VPC 中其他资源和互联网的连接。有关更多信息，请参阅 [使用 Amazon VPC 为 Auto Scaling 实例提供网络连接](asg-in-vpc.md)。

这一部分说明了如何更改原定设置网络接口设置。例如，您可以定义是否要为每个实例分配公有 IPv4 地址，而不是默认使用子网上的自动分配公有 IPv4 地址设置。

**注意事项和限制**

更改原定设置网络接口设置时，请记住以下注意事项和限制：
+ 您必须将安全组配置为该网络接口的一部分，而不是在模板的 **Security groups**（安全组）部分中配置。您不能在这两处指定安全组。
+ 如果指定现有的网络接口 ID，则只能启动一个实例。为此，您必须使用 AWS CLI 或 SDK 创建 Auto Scaling 组。创建组时，必须指定可用区，但不指定子网 ID。此外，仅当现有网络接口的设备索引为 0 时才可指定该接口。
+ 如果您指定多个网络接口，则无法自动分配公共 IPv4 地址。也无法跨网络接口指定重复的设备索引。主网络接口和辅助网络接口都驻留在同一子网中。
+ 实例启动时，系统会自动为每个网络接口分配一个私有地址。该地址来自启动实例的子网的 CIDR 范围。有关为 VPC 或子网指定 CIDR 范围（或 IP 地址范围）的信息，请参阅 [Amazon VPC 用户指南](https://docs.aws.amazon.com/vpc/latest/userguide/)。

**更改原定设置网络接口设置**

1. 在 **Network settings**（网络设置）下，展开 **Advanced network configuration**（高级网络配置）。

1. 选择 **Add network interface**（添加网络接口）以配置主网络接口，同时应注意以下字段：

   1. **Device index**（设备索引）：保留原定设置值 0 以将您的更改应用于主网络接口（eth0）。

   1. **Network interface**（网络接口）：保留原定设置值 **New interface**（新接口），以让 Amazon EC2 Auto Scaling 在启动实例时自动创建一个新的网络接口。您也可以选择一个设备索引为 0 的现有可用网络接口，但这将您的 Auto Scaling 组限定为单个实例。

   1. **Description**（描述）：（可选）请输入一个描述性的名称。

   1. **Subnet**（子网）：保留原定设置 **Don't include in launch template**（不包括在启动模板中）。

      如果 AMI 指定了子网的网络接口，则会导致错误。我们建议关闭 **Auto Scaling guidance**（Auto Scaling 指南）以解决此问题。进行此更改后，您将不会收到错误消息。但无论指定的子网来自何处，Auto Scaling 组的子网设置将会优先，且不能被覆盖。

   1. **自动分配公有 IP**：更改设备索引为 0 的网络接口是否接收公共 IPv4地址。默认情况下，默认子网中的实例会收到公有 IPv4 地址，而非默认子网中的实例则不会。选择**启用**或**禁用**可以覆盖子网的默认设置。

   1. **Security groups**（安全组）：为网络接口选择一个或多个安全组。对于 Auto Scaling 组会将实例启动到其中的 VPC，必须为其配置各个安全组。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[适用于 Linux 实例的 Amazon EC2 安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)。

   1. **Delete on termination**（终止时删除）：选择 **Yes**（是）以在实例终止时删除网络接口，或选择 **No**（否）以保留网络接口。

   1. **Elastic Fabric Adapter**：要支持高性能计算和机器学习使用案例，请将网络接口更改为某个 Elastic Fabric Adapter 网络接口。有关更多信息，请参阅《Amazon EC2 用户指南》**中的 [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)。

   1. **Network card index**（网卡索引）：选择 **0** 以将主要网络接口挂载到设备索引为 0 的网卡。如果此选项不可用，则保留原定设置 **Don't include in launch template**（不包括在启动模板中）。将网络接口挂载到特定网卡的功能仅适用于支持的实例类型。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[网卡](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#network-cards)。

   1. **ENA Express**：对于支持 ENA Express 的实例类型，您可以选择**启用**以启用 ENA Express，或者选择**禁用**将其禁用。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[在 Linux 实例上使用 ENA Express 提高网络性能](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ena-express.html)。

   1. **ENA Express UDP**：如果您启用 **ENA Express**，则可以选择将其用于 UDP 流量。选择**启用**以启用 ENA Express UDP，或者选择**禁用**将其禁用。

1. 要添加辅助网络接口，请选择**添加网络接口**。

## 修改存储配置（控制台）
<a name="modify-storage-configuration"></a>

您可以修改从由 Amazon EBS-backed AMI 或实例存储支持的 AMI 启动的实例的存储配置。您还可以指定要挂载到实例的附加 EBS 卷。AMI 会包含一个或多个存储卷，包括根卷 [**Volume 1 (AMI Root)**] [卷 1（AMI 根）]。

**修改存储配置**

1. 在 **Configure storage**（配置存储）中，修改卷的大小或类型。

   如果指定的卷大小值超出相应卷类型的限制，或者小于快照大小，则会显示错误消息。此消息会提供有关该字段可以接受的最小值或最大值信息，以帮助您解决此问题。

   这时仅会显示与由 Amazon EBS-backed AMI 关联的卷。要显示从实例存储支持的 AMI 启动的实例的存储配置信息，请选择 **Instance store volumes**（实例存储卷）部分的 **Show details**（显示详细信息）。

   要指定所有 EBS 卷参数，请切换到右上角的 **Advanced**（高级）视图。

1. 对于高级选项，请展开要修改的卷并按如下方式配置该卷：

   1. **Storage type**（存储类型）：要与实例关联的卷类型（EBS 或临时卷）。仅当您选择支持实例存储（临时）卷类型的实例类型时，该卷类型才可用。有关更多信息，请参阅《Amazon EBS User Guide》**中的 [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) 和《Amazon EC2 用户指南》**中的 [Amazon EC2 实例存储](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)。

   1. **Device name**（设备名称）：从卷的可用设备名称列表中进行选择。

   1. **Snapshot**（快照）：选择要从其中创建卷的快照。您可以通过在 **Snapshot**（快照）字段中输入文本来搜索可用的共享快照和公有快照。

   1. **Size (GiB)**（大小 (GiB)）：对于 EBS 卷，您可以指定存储大小。如果您选择了有资格享用免费套餐的 AMI 和实例，请记住，若要享用免费套餐，您必须将总存储大小保持为 30GiB 以下。有关更多信息，请参阅《Amazon EBS User Guide》**中的 [Constraints on the size and configuration of an EBS volume](https://docs.aws.amazon.com/ebs/latest/userguide/volume_constraints.html)。

   1. **Volume type**（卷类型）：对于 EBS 卷，请选择该卷类型。有关更多信息，请参阅《Amazon EBS 用户指南》**中的 [Amazon EBS 卷类型](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html)。

   1. **IOPS**：如果您选择了预配置 IOPS SSD（`io1`和`io2`）或通用型 SSD (`gp3`) 卷类型，则可以输入该卷可以支持的每秒 I/O 操作数 (IOPS)。这对于 io1、io2 和 gp3 卷是必需的。gp2、st1、sc1 或标准卷不支持。

   1. **Delete on termination**（终止时删除）：对于 EBS 卷，选择 **Yes**（是）以在终止实例时删除此卷或选择 **No**（否）以保留此卷。

   1. **Encrypted**（加密）：如果实例类型支持 EBS 加密，则可以选择 **Yes**（是）以为此卷启用加密。如果默认情况下在此区域中启用了加密，则会为您启用加密。有关更多信息，请参阅《Amazon EBS 用户指南》**中的 [Amazon EBS encryption](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) 和 [Enable encryption by default](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html)。

      设置此参数的默认效果会随所选卷源而异，如下表所述。在所有情况下，您都必须拥有使用指定内容的权限 AWS KMS key。  
**加密结果**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/autoscaling/ec2/userguide/create-launch-template.html)

      \$1 如果启用了原定设置加密，则所有新创建的卷 [不论是否将 **Encrypted**（加密）参数设置为 **Yes**（是）] 都将使用原定设置 KMS 密钥。如果您同时设置了 **Encrypted**（加密）和 **KMS key**（KMS 密钥）参数，则可指定非原定设置 KMS 密钥。

   1. **KMS key**（KMS 密钥）：如果您为 **Encrypted**（加密）选择的是 **Yes**（是），则必须选择一个客户管理的密钥来加密该卷。如果默认情况下在此区域中启用了加密，则将为您选择默认的客户托管密钥。您可以选择其他密钥，或指定您之前使用 AWS Key Management Service创建的任何客户管理的密钥的 ARN。

1. 要指定附加卷以挂载到此启动模板启动的实例，请选择 **Add new volume**（添加新卷）。

## 从现有实例创建启动模板（控制台）
<a name="create-launch-template-from-instance"></a>

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

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的 **Instances**（实例）下，选择 **Instances**（实例）。

1. 选择实例，然后依次选择**操作**、**图像和模板**、**从实例创建模板**。

1. 提供名称和说明。

1. 在 **Auto Scaling 指导**下，选中复选框。

1. 根据需要调整任何参数，然后选择**创建启动模板**。

1. 要创建 Auto Scaling 组，请从确认页面上选择**创建 Auto Scaling 组**。

## 相关资源
<a name="create-launch-template-related-resources"></a>

我们提供了几个 JSON 和 YAML 模板片段，您可以使用它们来了解如何在 CloudFormation 堆栈模板中声明启动模板。有关更多信息，请参阅《用户指南》[AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)和《[使用*AWS CloudFormation 用户指南》*中的创建启动模板 CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-launch-templates.html)部分。

有关启动模板的更多信息，请参阅《Amazon EC2 用户指南》**中的[从启动模板启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)。

## 限制
<a name="create-launch-template-limitations"></a>
+ 虽然可以在启动模板中指定子网，但如果您仅使用启动模板创建自动扩缩组，则无需这样做。您无法通过在启动模板中指定子网来为自动扩缩组指定子网。自动扩缩组的子网取自自动扩缩组自己的资源定义。
+ 有关用户定义网络接口的其他限制，请参阅 [更改默认网络接口设置（控制台）](#change-network-interface)。