创建启动配置 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建启动配置

重要

您不能使用 2022 年 12 月 31 日之后发布的新 Amazon EC2 实例类型来调用 CreateLaunchConfiguration。此外,2023 年 6 月 1 日及之后创建的任何新账户都无法选择通过控制台创建新的启动配置。但是,在 2023 年 6 月 1 日至 2023 年 12 月 31 日期间创建的新账户将可用 API、 CLI 和 CloudFormation 访问权限,以通过自动化用例为客户提供支持。2024 年 1 月 1 日当天或之后创建的新账户将无法使用控制台、API、CLI 和 CloudFormation创建新的启动配置。有关为自动扩缩组创建启动模板的更多信息,请参阅 迁移到启动模板

本主题介绍如何创建启动配置。

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

要将新的启动配置与现有 Auto Scaling 组相关联,请参阅更改 Auto Scaling 组的启动配置。要创建新的 Auto Scaling 组,请参阅使用启动配置创建 Auto Scaling 组

创建启动配置

创建启动配置(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在顶部导航栏上,选择您所在 Amazon 的地区。

  3. 在左侧导航窗格的自动扩缩下方,选择自动扩缩组

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

  5. 选择创建启动配置,然后为您的启动配置输入名称。

  6. 对于 Amazon Machine Image (AMI),选择 AMI。要查找特定 AMI,您可以查找合适的 AMI,记下其 ID,然后输入 ID 作为搜索条件。

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

    1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

    2. 在导航窗格中的 实例下,选择 实例,然后选择 启动实例

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

  7. 对于实例类型,为您的实例选择硬件配置。

  8. 其他配置下,请注意以下字段:

    1. (可选)对于购买选项,您可以选择请求竞价型实例以按需价格为上限的 Spot 价格请求竞价型实例。(可选)您可以指定您的竞价型实例的每实例小时最高价。

      注意

      如果您能灵活控制应用程序的运行时间并且应用程序可以中断,那么相对于按需型实例,竞价型实例是经济实惠之选。有关更多信息,请参阅 为容错和灵活的应用程序请求竞价型实例

    2. (可选)对于 IAM 实例配置文件,选择要与实例关联的角色。有关更多信息,请参阅 在 Amazon EC2 实例上运行的应用程序的 IAM 角色

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

    4. (可选)对于高级详细信息用户数据,您可以指定用户数据在启动过程中配置实例或在实例启动后运行配置脚本。

    5. (可选)对于高级详细信息IP 地址类型,选择是否将公有 IP 地址分配到组的实例。如果未设置值,则原定设置为使用启动实例的子网的自动分配公有 IP 设置。

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

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

  11. 对于密钥对(登录),请选择密钥对选项下的选项。

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

    如果您尚未拥有 Amazon EC2 实例密钥对,请选择创建新密钥对并为密钥对指定一个可识别的名称。选择下载密钥对以将密钥对下载到您的计算机。

    重要

    如果需要连接到您的实例,不要选择在没有密钥对的情况下继续

  12. 选中确认复选框,然后选择 Create launch configuration(创建启动配置)。

从现有启动配置创建启动配置(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在顶部导航栏上,选择您所在 Amazon 的地区。

  3. 在左侧导航窗格的自动扩缩下方,选择自动扩缩组

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

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

  6. Copy Launch Configuration(复制启动配置)页面上,根据需要编辑配置选项,然后选择 Create launch configuration(创建启动配置)。

使用命令行创建启动配置

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

配置实例元数据选项

Amazon EC2 Auto Scaling 支持在启动配置中配置实例元数据服务 (IMDS)。这样,您可以选择使用启动配置将 Auto Scaling 组中的 Amazon EC2 实例配置为要求实例元数据服务版本 2 (IMDSv2),这是一种面向会话的方法,用于请求实例元数据。有关 IMDSv2 优势的详细信息,请参阅本文 Amazon 博客上有关为 EC2 实例元数据服务增加深度防御的增强功能的信息

您可以将 IMDS 配置为同时支持 IMDSv2 和 IMDSv1(原定设置),或者要求使用 IMDSv2。如果您使用 Amazon CLI 或其中一个软件开发工具包来配置 IMDS,则必须使用最新版本的 Amazon CLI 或 SDK 才能要求使用 imdsv2。

您可以针对以下内容配置启动配置:

  • 在请求实例元数据时要求使用 IMDSv2

  • 指定 PUT 响应跃点限制

  • 关闭对实例元数据的访问

您可以在以下主题中找到有关配置实例元数据服务的更多详细信息:适用于 Linux 实例的 Amazon EC2 用户指南中的配置实例元数据服务

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

在启动配置中配置 IMDS(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在顶部导航栏上,选择您所在 Amazon 的地区。

  3. 在左侧导航窗格的自动扩缩下方,选择自动扩缩组

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

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

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

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

    2. 对于元数据版本,您可以选择在请求实例元数据时要求使用实例元数据服务版本 2 (IMDSv2)。如果您不指定值,原定设置为同时支持 IMDSv1 和 IMDSv2。

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

  7. 完成后,选择创建启动配置

要求在启动配置中使用 Amazon CLI使用 IMDSv2

使用以下create-launch-configuration命令,--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命令关闭对实例元数据的访问。您可以稍后使用modify-instance-metadata-options命令重新开启访问权限。

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 实例创建启动配置

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

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

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

注意

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

重要

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

从 EC2 实例创建启动配置 (Amazon CLI)

可以使用以下 create-launch-configuration 命令从一个实例中创建启动配置,它使用与该实例相同的属性。将忽略在启动后添加的任何块储存设备。

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

您可以使用以下describe-launch-configurations命令来描述启动配置并验证其属性是否与实例的属性相匹配。

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)

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

使用以下create-launch-configuration命令使用 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命令描述启动配置并验证其是否使用您的自定义块储存设备映射。

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)

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

使用以下create-launch-configuration命令使用 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命令描述启动配置并验证实例类型是否已被覆盖。

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