

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

# 创建启动配置
<a name="create-launch-config"></a>

**重要**  
限制：  
自 **2023 年 1 月 1 日起**，启动配置已不再支持新的 Amazon EC2 实例类型。这包括支持在初始区域启动 Amazon Web Services 区域 后添加到中的任何实例类型。
**2023 年 6 月 1 日**当天或之后创建的账户无法使用控制台创建新启动配置。
**2024 年 10 月 1 日**当天或之后创建的账户无法使用任何方法（控制台 Amazon CLI、API 或 CloudFormation）创建新的启动配置。
 迁移到启动模板以确保您现在或将来都不需要创建新的启动配置。有关为自动扩缩组创建启动模板的更多信息，请参阅 [将自动扩缩组迁移到启动模板](migrate-to-launch-templates.md)。

**注意**  
您也许能够使用某个区域不再支持的实例类型创建启动配置。建议迁移到启动模板。

本主题描述了如何创建启动配置。我们为尚未从启动配置迁移到启动模板的客户提供有关启动配置的信息。

创建启动配置后，您无法对其进行修改。相反，必须创建新的启动配置。

要将新的启动配置与现有自动扩缩组相关联，请参阅[更改 Auto Scaling 组的启动配置](change-launch-config.md)。要创建新自动扩缩组，请参阅[使用启动配置创建 Auto Scaling 组](create-asg-launch-configuration.md)。

**Topics**
+ [创建启动配置](#create-launch-configuration)
+ [配置实例元数据选项](#launch-configurations-imds)
+ [使用 EC2 实例创建启动配置](#create-lc-with-instanceID)

## 创建启动配置
<a name="create-launch-configuration"></a>

**创建启动配置（控制台）**

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

1. 在顶部导航栏上，选择您的 Amazon 区域。

1. 在左侧导航窗格的**自动扩缩**下方，选择**自动扩缩组**。

1. 在页面顶部附近，选择**启动配置**。当提示您确认时，选择**查看启动配置**以确认您要查看**启动配置**页面。

1. 选择**创建启动配置**，然后为您的启动配置输入名称。

1. 对于 **Amazon Machine Image (AMI)**，选择 AMI。要查找特定 AMI，您可以[查找合适的 AMI](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/finding-an-ami.html)，记下其 ID，然后输入 ID 作为搜索条件。

   要获取 Amazon Linux 2 AMI 的 ID，请执行以下操作：

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

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

   1. 在**选择 Amazon Machine Image** 页面的 **Quick Start** 选项卡上，请注意 **Amazon Linux 2 AMI (HVM)** 旁边的 AMI 的 ID。

1. 对于**实例类型**，为您的实例选择硬件配置。

1. 在**其他配置**下，请注意以下字段：

   1. （可选）对于**购买选项**，您可以选择**请求竞价型实例**以按需价格为上限的 Spot 价格请求竞价型实例。（可选）您可以指定您的竞价型实例的每实例小时最高价。
**注意**  
如果您能灵活控制应用程序的运行时间并且应用程序可以中断，那么相对于按需型实例，竞价型实例是经济实惠之选。有关更多信息，请参阅 [为容错和灵活的应用程序请求竞价型实例](launch-template-spot-instances.md)。

   1. （可选）对于 **IAM 实例配置文件**，选择要与实例关联的角色。有关更多信息，请参阅 [在 Amazon EC2 实例上运行的应用程序的 IAM 角色](us-iam-role.md)。

   1. （可选）对于**监控**，选择是否允许实例每隔 1 分钟向 Amazon 发布指标数据， CloudWatch 方法是启用详细监控。将收取额外费用。有关更多信息，请参阅 [配置 Auto Scaling 实例的监控](enable-as-instance-metrics.md)。

   1. （可选）对于**高级详细信息**、**用户数据**，您可以指定用户数据在启动过程中配置实例或在实例启动后运行配置脚本。

   1. （可选）对于**高级详细信息**、**IP 地址类型**，选择是否将[公有 IP 地址](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-instance-addressing.html#public-ip-addresses)分配到组的实例。如果未设置值，则原定设置为使用启动实例的子网的自动分配公有 IP 设置。

1. （可选）对于**存储（卷）**，如果您不需要额外存储，则可以跳过此部分。否则，除了 AMI 指定的卷以外，要指定要附加到实例的卷，请选择**添加新卷**。然后选择所需的选项和**设备**、**快照**、**大小**、**卷类型**、**IOPS**、**吞吐量**、**终止时删除**和**已加密**的关联值。

1. 对于**安全组**，创建或选择要与组实例关联的安全组。如果您保留选中**创建新安全组**选项，将为运行 Linux 的 Amazon EC2 实例配置默认 SSH 规则。将为运行 Windows 的 Amazon EC2 实例配置默认 RDP 角色。

1. 对于**密钥对（登录）**，请选择**密钥对选项**下的选项。

   如果您已配置 Amazon EC2 实例密钥对，则可在此处选择它。

   如果您尚未拥有 Amazon EC2 实例密钥对，请选择**创建新密钥对**并为密钥对指定一个可识别的名称。选择**下载密钥对**以将密钥对下载到您的计算机。
**重要**  
如果需要连接到您的实例，不要选择**在没有密钥对的情况下继续**。

1. 选中确认复选框，然后选择 **Create launch configuration**（创建启动配置）。

**从现有启动配置创建启动配置（控制台）**

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

1. 在顶部导航栏上，选择您的 Amazon 区域。

1. 在左侧导航窗格的**自动扩缩**下方，选择**自动扩缩组**。

1. 在页面顶部附近，选择**启动配置**。当提示您确认时，选择**查看启动配置**以确认您要查看**启动配置**页面。

1. 选择启动配置，选择 **Actions**（操作），然后单击 **Copy launch configuration**（复制启动配置）。这将设置与原启动配置选项相同的新启动配置，但在名称中会增加“Copy”文本。

1. 在 **Copy Launch Configuration**（复制启动配置）页面上，根据需要编辑配置选项，然后选择 **Create launch configuration**（创建启动配置）。

**使用命令行创建启动配置**

您可以使用以下任一命令：
+ [create-launch-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-launch-configuration.html) (Amazon CLI)
+ [新增-ASLaunch 配置](https://docs.amazonaws.cn/powershell/latest/reference/items/New-ASLaunchConfiguration.html) (Amazon Tools for Windows PowerShell)

## 配置实例元数据选项
<a name="launch-configurations-imds"></a>

Amazon EC2 Auto Scaling 支持在启动配置中配置实例元数据服务 (IMDS)。这使您可以选择使用启动配置将 Auto Scaling 组中的 Amazon EC2 实例配置为需要实例元数据服务版本 2 (IMDSv2)，这是一种用于请求实例元数据的面向会话的方法。有关优势 IMDSv2的详细信息，请参阅 Amazon 博客上的这篇文章，内容涉及[为 EC2 实例元数据服务添加深度防御的增强功能](https://www.amazonaws.cn/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/)。

您可以将 IMDS 配置为同时支持 IMDSv2 和 IMDSv1 （默认），或者要求使用。 IMDSv2如果您使用 Amazon CLI 或其中一个 SDKs 来配置 IMDS，则必须使用最新版本的 Amazon CLI 或 SDK 才能要求使用。 IMDSv2

您可以针对以下内容配置启动配置：
+ 要求在请求实例元数据 IMDSv2 时使用
+ 指定 `PUT` 响应跃点限制 
+ 关闭对实例元数据的访问

您可以在以下主题中找到有关配置实例元数据服务的更多详细信息：《Amazon EC2 用户指南》**中的[配置实例元数据服务](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。

使用以下步骤在启动配置中配置 IMDS 选项。创建启动配置后，您可以将其与 Auto Scaling 组关联。如果将启动配置与现有 Auto Scaling 组关联，现有启动配置将与 Auto Scaling 组取消关联，并且现有实例需要替换才能使用您在新启动配置中指定的 IMDS 选项。有关更多信息，请参阅 [更改 Auto Scaling 组的启动配置](change-launch-config.md)。

**在启动配置中配置 IMDS（控制台）**

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

1. 在顶部导航栏上，选择您的 Amazon 区域。

1. 在左侧导航窗格的**自动扩缩**下方，选择**自动扩缩组**。

1. 在页面顶部附近，选择**启动配置**。当提示您确认时，选择**查看启动配置**以确认您要查看**启动配置**页面。

1. 选择**创建启动配置**，然后按照常规方式创建启动配置。包括 Amazon Machine Image (AMI) 的 ID、实例类型和可选的密钥对、一个或多个安全组以及实例的任何其他EBS 卷或实例存储卷。

1. 要为与此启动配置关联的所有实例配置实例元数据选项，请在**其他配置**中的**高级详细信息**下，执行以下操作：

   1. 对于**元数据可访问**，选择是启用还是禁用对实例元数据服务的 HTTP 终端节点的访问。预设情况下，将启用 HTTP 终端节点。如果您选择禁用终端节点，则会关闭对实例元数据的访问。 IMDSv2 只有在启用 HTTP 终端节点时，您才能指定需要的条件。

   1. 对于**元数据版本**，您可以选择在请求实例元数据时要求使用实例元数据服务版本 2 (IMDSv2)。如果未指定值，则默认为同时支持 IMDSv1 和 IMDSv2。

   1. 对于**元数据标记响应跃点限制**，您可以为元数据标记设置允许的网络跃点数。如果您未指定值，则原定设置为 1。

1. 完成后，选择**创建启动配置**。

**要要求在启动配置 IMDSv2 中使用，请使用 Amazon CLI**  
使用以下[create-launch-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-launch-configuration.html)命令，`--metadata-options`将设置为`HttpTokens=required`。在为 `HttpTokens` 指定值时，还必须将 `HttpEndpoint` 设置为已启用。由于元数据检索请求将安全令牌标头设置为必填项，因此在请求实例元数据 IMDSv2 时会选择要求使用。

```
aws autoscaling create-launch-configuration \
  --launch-configuration-name my-lc-with-imdsv2 \
  --image-id ami-01e24be29428c15b2 \
  --instance-type t2.micro \
      ...    
  --metadata-options "HttpEndpoint=enabled,HttpTokens=required"
```

**关闭对实例元数据的访问**  
使用以下[create-launch-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-launch-configuration.html)命令关闭对实例元数据的访问。您可以稍后使用[modify-instance-metadata-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-instance-metadata-options.html)命令重新开启访问权限。

```
aws autoscaling create-launch-configuration \
  --launch-configuration-name my-lc-with-imds-disabled \
  --image-id ami-01e24be29428c15b2 \
  --instance-type t2.micro \
      ...    
  --metadata-options "HttpEndpoint=disabled"
```

## 使用 EC2 实例创建启动配置
<a name="create-lc-with-instanceID"></a>

您还可以选择使用正在运行的 EC2 实例中的属性创建启动配置。

从头创建启动配置和从现有 EC2 实例创建启动配置之间存在差异。如果从头创建启动配置，需要指定映像 ID、实例类型、可选资源（如存储设备）和可选设置（如监控）。从运行的实例中创建启动配置时，Amazon EC2 Auto Scaling 从指定的实例中派生启动配置的属性。属性也可能来自从中启动实例的 AMI 的块储存设备映射，从而忽略在启动后添加的任何其他块储存设备。

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

**注意**  
如果指定的实例有启动配置当前不支持的属性，则由Auto Scaling 组启动的实例可能不同于原始 EC2 实例。

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

**Topics**
+ [从 EC2 实例创建启动配置 (Amazon CLI)](#create-lc-with-defaultconfig-aws-cli)
+ [从实例创建启动配置以及覆盖块储存设备 (Amazon CLI)](#create-lc-with-bdm)
+ [创建启动配置和覆盖实例类型 (Amazon CLI)](#create-lc-with-instance-type)

### 从 EC2 实例创建启动配置 (Amazon CLI)
<a name="create-lc-with-defaultconfig-aws-cli"></a>

可以使用以下 [create-launch-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-launch-configuration.html) 命令从一个实例中创建启动配置，它使用与该实例相同的属性。将忽略在启动后添加的任何块储存设备。

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

您可以使用以下[describe-launch-configurations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-launch-configurations.html)命令来描述启动配置并验证其属性是否与实例的属性相匹配。

```
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
        }
    ]
}
```

### 从实例创建启动配置以及覆盖块储存设备 (Amazon CLI)
<a name="create-lc-with-bdm"></a>

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

使用以下[create-launch-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-launch-configuration.html)命令使用 EC2 实例创建启动配置，但使用自定义块储存设备映射。

```
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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-launch-configurations.html)命令描述启动配置并验证其是否使用您的自定义块储存设备映射。

```
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
        }
    ]
}
```

### 创建启动配置和覆盖实例类型 (Amazon CLI)
<a name="create-lc-with-instance-type"></a>

预设情况下，Amazon EC2 Auto Scaling 使用您指定的 EC2 实例中的属性创建启动配置。根据您的要求，您可能需要覆盖实例中的属性并使用所需的值。例如，您可以覆盖实例类型。

使用以下[create-launch-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-launch-configuration.html)命令使用 EC2 实例创建启动配置，但实例类型（例如`t2.medium`）与实例类型不同（例如`t2.micro`）。

```
aws autoscaling create-launch-configuration --launch-configuration-name my-lc-from-instance-changetype \
  --instance-id i-a8e09d9c --instance-type t2.medium
```

使用以下[describe-launch-configurations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-launch-configurations.html)命令描述启动配置并验证实例类型是否已被覆盖。

```
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": "t2.medium",
            "AssociatePublicIpAddress": true
        }
    ]
}
```