创建启动模板 - Amazon Elastic Compute Cloud

创建启动模板

使用定义的参数创建启动模板,或者将现有的启动模板或实例作为基础以创建新的启动模板。

根据参数创建启动模板

要创建启动模板,您必须指定启动模板名称和至少一个实例配置参数。

使用控制台创建启动模板
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择启动模板,然后选择创建启动模板

  3. 启动模板参数将分组。有关每个组的详细信息,请参阅以下各节。

  4. 使用摘要面板查看启动模板配置。您可以通过选择其链接导航到任何部分,然后进行任何必要的更改。

  5. 当您准备好创建启动模板时,请选择 Create launch template(创建启动模板)。

  1. 对于设备模板名称,请为您的启动模板输入描述性名称。

  2. 对于模板版本说明,提供此版本的启动模板的简短说明。

  3. 要在创建时标记启动模板,请展开 Template tags(模板标签),选择 Add tag(添加标签),然后输入标签键值对。为每个要添加的其它标签选择 Add tag(添加标签)。

    注意

    要标记启动实例时创建的资源,必须在 Resource tags(资源标签)下面指定标签。有关更多信息,请参阅 资源标签

Amazon Machine Image (AMI) 中包含了创建实例所需的信息。例如,AMI 可能包含充当 Web 服务器所需的软件,例如 Linux、Apache 和您的网站。

您可以找到适合的 AMI,如下所示。通过查找 AMI 的每个选项,您可以选择右上角的 Cancel(取消)以返回启动模板,而不选择 AMI。

搜索栏

要搜索所有可用的 AMI,请在 AMI 搜索栏中输入关键字,然后按 Enter 键。要选择 AMI,请选择 Select(选择)。

最近使用的项目

您最近使用的 AMI。

选择 Recently launched(最近启动)或 Currently in use(当前使用),然后在 Amazon Machine Image (AMI) 中,选择一个 AMI。

我的 AMI

您拥有的私有 AMI,或与您共享的私有 AMI。

选择 Owned by me(我拥有的)或 Shared with me(与我共享),然后在 Amazon Machine Image (AMI) 中选择一个 AMI。

Quick Start(快速入门)

AMI 按操作系统 (OS) 分组以助您快速入门。

首先选择所需的操作系统,然后从 Amazon Machine Image (AMI) 中选择一个 AMI。要选择符合免费套餐条件的 AMI,请确保该 AMI 已标记 Free tier eligible(符合免费套餐条件)。

浏览更多 AMI

选择 Browse more AMIs(浏览更多 AMI)以浏览完整的 AMI 目录。

  • 要搜索所有可用的 AMI,请在搜索栏中输入关键字,然后按 Enter 键。

  • 要使用 Systems Manager 参数查找 AMI,请选择搜索栏右侧的箭头按钮,然后选择 Search by Systems Manager parameter(按 Systems Manager 参数搜索)。有关更多信息,请参阅 使用 Systems Manager 参数查找 AMI

  • 要指定在从启动模板启动实例时解析为 AMI 的 Systems Manager 参数,请选择搜索栏右侧的箭头按钮,然后选择指定自定义值/Systems Manager 参数。有关更多信息,请参阅 使用 Systems Manager 参数而非 AMI ID

  • 要按类别搜索,请依次选择 Quickstart AMIMy AMIs(我的 AMI)、AWS Marketplace AMI 或者 Community AMIs(社区 AMI)。

    AWS Marketplace 是一个在线商店,您可以从中购买在 AWS 上运行的软件(包括 AMI)。有关从 AWS Marketplace 启动实例的更多信息,请参阅启动 AWS Marketplace 实例。在 Community AMIs(社区 AMI)中,您可以找到 AWS 社区成员提供给其它人使用的 AMI。将来自 Amazon 或经过验证的合作伙伴的 AMI 标记为经过验证的提供商

  • 要筛选 AMI 列表,请在屏幕左侧的 Refine results(优化结果)下方选中一个或多个复选框。筛选条件选项会因所选搜索类别而有所不同。

  • 检查对每个 AMI 列出的 Root device type (根设备类型)。请注意哪些 AMI 是您需要的类型:即 ebs(由 Amazon EBS 支持)或 instance-store(由实例存储支持)。有关更多信息,请参阅 根设备存储

  • 检查对每个 AMI 列出的 Virtualization type (虚拟化类型)。注意哪些 AMI 类型是您需要的类型:即 hvm(全虚拟化)或 paravirtual(半虚拟化)。例如,一些实例类型需要 HVM。有关更多信息,请参阅 Linux AMI 虚拟化类型

  • 检查对每个 AMI 列出的启动模式。请注意哪些 AMI 使用您需要的启动模式:legacy-biosuefiuefi-preferred。有关更多信息,请参阅 启动模式

  • 选择满足您的需求的 AMI,然后选择 Select

实例类型定义了实例的硬件配置和大小。更大的实例类型拥有更多的 CPU 和内存。有关更多信息,请参阅 Amazon EC2 实例类型

对于 Instance type(实例类型),可以选择一个实例类型或指定实例属性并让 Amazon EC2 使用这些属性识别实例类型。

注意

仅当使用 Auto Scaling 组、EC2 机群和竞价型实例集来启动实例时,才支持指定实例属性。有关更多信息,请参阅使用基于属性的实例类型选择创建 Auto Scaling 组EC2 机群的基于属性的实例类型选择竞价型实例集的基于属性的实例类型选择

如果您计划使用启动实例向导中的启动模板,或搭配使用 RunInstances API,则必须选择实例类型。

  • Instance type (实例类型):确保实例类型与指定的 AMI 兼容。有关更多信息,请参阅 Amazon EC2 实例类型

  • 比较实例类型:您可以通过以下属性比较不同的实例类型:vCPU 数、架构、内存量 (GiB)、存储量 (GB)、存储类型和网络性能。

  • 获取建议:您可以从 Amazon Q EC2 实例类型选择器中获取实例类型指导和建议。有关更多信息,请参阅 为新的工作负载获取实例类型建议

  • Advanced(高级):若要指定实例属性并让 Amazon EC2 使用这些属性识别实例类型,请选择 Advanced(高级),然后选择 Specify instance type attributes(指定实例类型属性)。

    • Number of vCPUs(vCPU 量):输入您的计算要求的最小 vCPU 数和最大 vCPU 数。若要表示为无限制,请输入最小值为 0,然后将最大值留空。

    • Amount of memory (MiB) (内存量 (MiB)):输入您的计算要求的最小内存量和最大内存量(以 MiB 为单位)。若要表示为无限制,请输入最小值为 0,然后将最大值留空。

    • 展开 Optional instance type attributes(可选的实例类型属性),然后选择 Add attribute(添加属性)以更详细地表达您的计算需求。有关每个属性的信息,请参阅 Amazon EC2 API 参考中的 InstanceRequirementsRequest

    • Resulting instance types(生成的实例类型):您可以预览与指定属性匹配的实例类型。若要排除实例类型,请选择 Add attribute(添加属性),并从 Attribute(属性)列表中选择 Excluded instance types(排除的实例类型)。从 Attribute value(属性值)列表中,选择要排除的实例类型。

实例的密钥对。

Key pair name(密钥对名称)选择一个现有密钥对,或选择 Create new key pair(创建新密钥对)来新建一个密钥对。有关更多信息,请参阅 Amazon EC2 密钥对和 Amazon EC2 实例

根据需要配置网络设置。

  • 子网:您可以在与可用区、本地扩展区、Wavelength 区域或 Outpost 关联的子网中启动实例。

    要在可用区中启动实例,请选择要在其中启动实例的子网。要创建新子网,请选择 Create new subnet 转到 Amazon VPC 控制台。完成此操作后,返回到向导并选择 Refresh(刷新)图标,以便将您的子网加载到列表中。

    要在本地区域中启动实例,请选择您在本地区域中创建的子网。

    要在 Outpost 中启动实例,请在 VPC 中选择与 Outpost 关联的子网。

  • Firewall (security groups)[防火墙(安全组)]:使用一个或多个安全组为实例定义防火墙规则。这些规则指定哪些传入的网络流量可传输到您的实例。所有其他的流量将被忽略。有关安全组的更多信息,请参阅 适用于 Linux 实例的 Amazon EC2 安全组

    添加网络接口时,您必须在网络接口中指定相同安全组。

    按如下所示进行选择或创建安全组:

    • 要选择现有安全组,请选择 Select an existing security group(选择现有安全组),然后从 Common security groups(通用安全组)中选择您的安全组。

    • 要创建新安全组,请选择 Create security group(创建安全组)。

      您可以根据需要添加规则。例如,如果您的实例是 Web 服务器,请打开端口 80 (HTTP) 和 443 (HTTPS) 以允许 Internet 流量。

      要添加规则,请选择 Add security group rule(添加安全组规则)。对于 Type(类型),请选择网络流量类型。将使用为网络流量打开的协议自动填充 Protocol(协议)字段。对于 Source type(源类型),请选择一种源类型。如需让启动模板添加您计算机的公有 IP 地址,请选择 My IP(我的 IP)。但是,如果您在没有静态 IP 地址的情况下通过 ISP 或从防火墙后面进行连接,则您需要了解客户端电脑使用的 IP 地址范围。

      警告

      如果您要短时启动测试实例并将很快停止或终止,那么允许所有 IP 地址 (0.0.0.0/0) 通过 SSH 或 RDP 访问您的实例的规则是可以接受的,但此规则对生产环境来说是不安全的。您应该仅授权特定 IP 地址或特定范围内的 IP 地址访问您的实例。

  • Advanced network configuration(高级网络配置)

    网络接口

    • Device index (设备索引):网络接口的设备号;例如,eth0 表示主网络接口。如果将该字段保留空白,AWS 将创建主网络接口。

    • Network interface(网络接口):选择 New interface(新接口)即可让 Amazon EC2 创建新的接口,或选择现有且可用的网络接口。

    • Description (描述):(可选)新网络接口的描述。

    • Subnet(子网):要在其中创建新网络接口的子网。对于主网络接口 (eth0),这是在其中启动实例的子网。如果为 eth0 输入了现有的网络接口,将在该网络接口所在的子网中启动实例。

    • 安全组:VPC 中要与网络接口关联的一个或多个安全组。

    • Auto-assign public IP(自动分配公有 IP):指定您的实例是否会收到公有 IPv4 地址。默认情况下,默认子网中的实例会收到公有 IPv4 地址,而非默认子网中的实例不会收到。可以选择 Enable (启用)Disable (禁用) 以覆盖子网的默认设置。有关更多信息,请参阅 公有 IPv4 地址

    • Primary IP (主要 IP):您的子网范围内的一个私有 IPv4 地址。保留空白会让 Amazon EC2 为您选择一个私有 IPv4 地址。

    • Secondary IP(辅助 IP):您的子网范围内的一个或多个其它私有 IPv4 地址。选择 Manually assign(手动分配)然后输入 IP 地址。选择 Add IP(添加 IP)以添加另一个 IP 地址。或者,选择 Automatically assign(自动分配)以使 Amazon EC2 来为您选择,然后输入一个值来指明要添加的 IP 地址的数量。

    • (仅限 IPv6) IPv6 IP:子网范围内的一个 IPv6 地址。选择 Manually assign(手动分配)然后输入 IP 地址。选择 Add IP(添加 IP)以添加另一个 IP 地址。或者,选择 Automatically assign(自动分配)以使 Amazon EC2 来为您选择,然后输入一个值来指明要添加的 IP 地址的数量。

    • IPv4 前缀:网络接口的 IPv4 前缀。

    • IPv6 前缀:网络接口的 IPv6 前缀。

    • (可选)分配主要 IPv6 IP:如果您要在双堆栈或仅使用 IPv6 的子网中启动实例,则可以选择分配主要 IPv6 IP。分配主要 IPv6 地址使您能够避免中断实例或 ENI 的流量。如果此实例依赖的 IPv6 地址不变,则选择启用。在您启动实例时,AWS 会自动将与您的实例连接的 ENI 相关联 IPv6 地址分配为主要 IPv6 地址。一旦将 IPv6 GUA 地址启用为主要 IPv6,您将无法将其禁用。当您将 IPv6 GUA 地址启用为主要 IPv6 时,第一个 IPv6 GUA 将成为主要 IPv6 地址,直到实例终止或网络接口断开为止。如果您有多个 IPv6 地址与连接到实例的 ENI 相关联,并且启用了主要 IPv6 地址,则与该 ENI 关联的第一个 IPv6 GUA 地址将成为主要 IPv6 地址。

    • Delete on termination (终止时删除):选择在删除实例时是否删除网络接口。

    • Elastic Fabric Adapter:指示网络接口是否为 Elastic Fabric Adapter。有关更多信息,请参阅 Elastic Fabric Adapter

    • 网卡索引 :网卡的索引。必须将主网络接口分配给网卡索引 0。有些实例类型支持多个网卡。

    • ENA Express:ENA Express 由 AWS 可扩展的可靠数据报(SRD)技术提供支持。SRD 技术使用数据包散射机制来分配负载并避免网络拥塞。启用 ENA Express 允许支持的实例在可能的情况下在常规 TCP 流量之上使用 SRD 进行通信。除非您选择启用禁用,否则启动模板不包括实例的 ENA Express 配置。

    • ENA Express UDP:如果您已启用 ENA Express,则可以选择将其用于 UDP 流量。除非您选择启用禁用,否则启动模板不包括实例的 ENA Express 配置。

    选择 Add network interface(添加网络接口)以添加更多网络接口。您可以添加的网络接口数量取决于选定实例类型支持的数量。其他网络接口既可位于同一 VPC 的不同子网中,也可位于您拥有的其他 VPC 的子网中(只要该子网与实例位于同一可用区中即可)。如果选择其他 VPC 中的子网,则添加的网络接口旁将会出现多 VPC 标签。这使您能够在具有不同网络和安全配置的 VPC 之间创建多宿主实例。请注意,如果附加其他 VPC 中的其他 ENI,则必须为该 VPC 中的 ENI 选择一个安全组。

    有关更多信息,请参阅 弹性网络接口。如果指定多个网络接口,则您的实例无法收到公有 IPv4 地址。此外,如果您为 eth0 指定某个现有网络接口,则无法使用 Auto-assign Public IP 覆盖子网的公有 IPv4 设置。有关更多信息,请参阅 在实例启动期间分配公有 IPv4 地址

如果您为启动模板指定了 AMI,则 AMI 会包含一个或多个存储卷,包括根卷 Volume 1 (AMI Root) [卷 1(AMI 根目录)]。您可以指定要附加到实例的其它卷。

您可以使用 Simple(简单)或 Advanced(高级)视图。在 Simple(简单)视图中,您可以指定卷的大小和类型。若要指定所有卷参数,请选择位于卡片的右上角的 Advanced(高级)视图。

要添加新卷,请选择 Add new volume(添加新卷)。

Advanced(高级)视图中,您可以按如下方式配置每个卷:

  • Storage type(存储类型):要与实例关联的卷类型(EBS 或临时卷)。仅当您选择支持实例存储(临时)卷类型的实例类型时,该卷类型才可用。有关更多信息,请参阅 Amazon EC2 实例存储Amazon EBS 卷

  • Device name(设备名称):从卷的可用设备名称列表中进行选择。

  • Snapshot(快照):选择要从其中创建卷的快照。您可以通过在 Snapshot(快照)字段中输入文本来搜索可用的共享快照和公有快照。

  • Size (GiB)(大小 (GiB)):对于 EBS 卷,您可以指定存储大小。如果您选择了有资格享用免费套餐的 AMI 和实例,请记住,若要享用免费套餐,您必须将总存储大小保持为 30GiB 以下。

  • 卷类型:对于 EBS 卷,请选择卷类型。有关更多信息,请参阅《Amazon EBS 用户指南》中的 Amazon EBS 卷类型

  • IOPS:如果您已选择预置 IOPS SSD(io1io2)以及通用型 SSD(gp3)卷类型,则您可以输入卷可支持的每秒输入/输出操作数(IOPS)。这对于 io1、io2 和 gp3 卷是必需的。gp2、st1、sc1 或标准卷不支持。如果您省略了启动模板中的此参数,必须在从启动模板启动实例时指定其值。

  • Delete on termination(终止时删除):对于 Amazon EBS 卷,选择 Yes(是)以在终止实例时删除此卷或选择 No(否)以保留此卷。有关更多信息,请参阅 实例终止时保留数据

  • Encrypted(加密):如果实例类型支持 EBS 加密,则可以选择 Yes(是)以为此卷启用加密。如果默认情况下在此区域中启用了加密,则会为您启用加密。有关更多信息,请参阅《Amazon EBS 用户指南》中的 Amazon EBS 加密

  • KMS key(KMS 密钥):如果您将 Encrypted(加密)选择为 Yes(是),则您必须选择一个客户托管式密钥来加密卷。如果默认情况下在此区域中启用了加密,则将为您选择默认的客户托管密钥。您可以选择不同的密钥或指定由您创建的任何客户托管密钥的 ARN。

标记启动实例时创建的资源,在 Resource tags(资源标签)下,选择 Add tag(添加标签),然后输入标签键值对。对于 Resource types(资源类型),指定创建时要标记的资源。您可以为所有资源指定相同的标签,也可以为不同的资源指定不同的标签。为每个要添加的其它标签选择 Add tag(添加标签)。

您可以为使用启动模板时创建的以下资源指定标签:

  • 实例

  • 竞价型实例请求

  • 网络接口

注意

要为启动模板本身添加标签,您必须在 Template tags(模板标签)下指定标签。有关更多信息,请参阅 启动模板名称、描述和标签

对于Advanced details (高级详细信息),请展开该部分以查看字段并为实例指定任何其他参数。

  • Purchasing option(购买选项):选择 Request Spot Instances(请求竞价型实例)即可按照 Spot 价格请求竞价型实例,以按需价格为上限,而选择 Customize(自定义)即可更改默认的竞价型实例设置。您可以设置最高价(不建议),并更改请求类型、请求时长和中断行为。如果您未请求竞价型实例,则预设情况下 EC2 会启动按需型实例。有关更多信息,请参阅 Spot Instances

  • IAM instance profile(IAM 实例配置文件):选择 AWS Identity and Access Management (IAM) 实例配置文件以与实例关联。有关更多信息,请参阅 适用于 Amazon EC2 的 IAM 角色

  • Hostname type(主机名类型):选择实例的来宾操作系统主机名将包括资源名称还是 IP 名称。有关更多信息,请参阅 Amazon EC2 实例主机名类型

  • DNS Hostname(DNS 主机名):确定对资源名称或 IP 名称的 DNS 查询(根据您对 Hostname type(主机名类型)的选择)是否将以 IPv4 地址(A 记录)、IPv6 地址(AAAA 记录)响应,还是同时以两者响应。有关更多信息,请参阅 Amazon EC2 实例主机名类型

  • Shutdown behavior (关闭行为):选择关闭时实例应该停止还是终止。有关更多信息,请参阅 更改实例启动的关闭操作

  • Stop - Hibernate behavior(停止 – 休眠行为):要启用休眠,请选择 Enable(启用)。此字段仅适用于满足休眠先决条件的实例。有关更多信息,请参阅 将您的 Amazon EC2 实例休眠

  • Termination protection(终止保护):要防止意外终止,请选择 Enable(启用)。有关更多信息,请参阅 启用终止保护

  • Stop protection(停止保护):为防止意外停止,请选择 Enable(启用)。有关更多信息,请参阅 启用停止保护

  • Detailed CloudWatch monitoring(详细的 CloudWatch 监控):选择 Enable(启用)以使用 Amazon CloudWatch 启用实例的详细监控。将收取额外费用。有关更多信息,请参阅 使用 CloudWatch 监控您的实例

  • Elastic inference (弹性推理):要连接到 EC2 CPU 实例的弹性推理加速器。有关更多信息,请参阅 Amazon Elastic Inference 开发人员指南 中的使用 Amazon Elastic Inference

    注意

    自 2023 年 4 月 15 日起,AWS 不再允许新客户加入 Amazon Elastic Inference(EI),并将帮助现有客户将其工作负载迁移到价格更低廉且性能更出色的选项。2023 年 4 月 15 日之后,新客户将无法在 Amazon SageMaker、Amazon ECS 或 Amazon EC2 中使用 Amazon EI 加速器启动实例。但是,在过去 30 天内至少使用过一次 Amazon EI 的客户将视为当前客户,可继续使用该服务。

  • Credit specification(积分规范):选择 Unlimited(无限)以允许应用程序只要有需要即突增到基准以上。此字段仅适用于 T 实例。可能收取额外费用。有关更多信息,请参阅具爆发能力的实例

  • Placement group name (置放群组名称):指定要在其中启动实例的置放群组。您可以选择现有置放群组或创建新组。并非可以在置放群组中启动所有实例类型。有关更多信息,请参阅 置放群组

  • EBS-optimized instance(EBS 优化的实例):选择 Enable(启用)为 Amazon EBS 输入/输出提供额外的专用容量。并非所有实例类型都支持此功能。将收取额外费用。有关更多信息,请参阅 Amazon EBS 优化的实例

  • Capacity Reservation(容量预留):指定是在任何开放容量预留 [Open(开放)]、特定容量预留 [Target by ID(按 ID 定位)],还是容量预留组 [Target by group(按组定位)] 中启动实例。要指定不使用容量预留,请选择 None(无)。有关更多信息,请参阅 在现有 容量预留 中启动实例

  • Tenancy (租期):选择是在共享硬件(Shared (共享))、隔离的专用硬件(Dedicated (专用)),还是在 专用主机(Dedicated host (专用主机))上运行您的实例。如果您选择在专用主机上启动实例,则可以指定是否在主机资源组中启动实例,也可以定位特定专用主机。可能收取额外费用。有关更多信息,请参阅 Dedicated InstancesDedicated Hosts

  • RAM disk ID(RAM 磁盘 ID):[仅对半虚拟 (PV) AMI 有效] 为实例选择一个 RAM 磁盘。如果您选择了一个内核,则您可能需要选择带有可支持该内核的驱动程序的某个特定 RAM 磁盘。

  • Kernel ID(内核 ID):[仅对半虚拟 (PV) AMI 有效] 为实例选择一个内核。

  • Nitro Enclave:允许您从 Amazon EC2 实例创建隔离的执行环境,称为 Enclave。选择 Enable(启用)以启用 AWS Nitro Enclaves 的实例。有关更多信息,请参阅 AWS Nitro Enclaves 用户指南中的什么是 AWS Nitro Enclaves?

  • 许可证配置:您可以根据指定的许可证配置启动实例,以跟踪您的许可证使用情况。有关更多信息,请参阅《AWS License Manager 用户指南》中的创建许可证配置

  • Specify CPU options(指定 CPU 选项):选择 Specify CPU options(指定 CPU 选项)可在启动期间指定自定义 vCPU 数。设置 CPU 内核数和每内核线程数。有关更多信息,请参阅 优化 CPU 选项

  • 元数据传输:您可以根据实例的 IP 地址类型(IPv4、IPv6 或 IPv4 和 IPv6)启用或禁用对该 EC2 实例可用的实例元数据服务(IMDS)的访问方法。有关更多信息,请参阅 检索实例元数据

  • 可访问的元数据:您可以启用或禁用对 IMDS 的访问权限。有关更多信息,请参阅 为新实例配置实例元数据选项

  • 元数据版本:如果您启用对 IMDS 的访问权限,可以选择在请求实例元数据时要求使用实例元数据服务版本 2。有关更多信息,请参阅 为新实例配置实例元数据选项

  • 元数据响应跃点限制:如果您启用 IMDS,可以为元数据标记设置允许的网络跃点数。有关更多信息,请参阅 为新实例配置实例元数据选项

  • Allow tags in metadata(允许元数据中的标签):如果选择 Enable(启用),该实例将允许从其元数据访问其所有标签。如果不在模板中包含此设置,则默认情况下,将不允许对实例元数据中的标签的访问。有关更多信息,请参阅 允许访问实例元数据中的标签

  • User data:您可以指定用户数据在启动时配置实例或运行配置脚本。有关更多信息,请参阅 启动时在 Linux 实例上运行命令

以下示例使用 create-launch-template 命令创建具有指定名称和实例配置的启动模板。

aws ec2 create-launch-template \ --launch-template-name TemplateForWebServer \ --version-description WebVersion1 \ --tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose,Value=production}]' \ --launch-template-data file://template-data.json

以下是一个示例 JSON,其指定实例配置的启动模板数据。将 JSON 保存到文件中并将其包含在 --launch-template-data 参数中,如示例命令中所示。

{ "NetworkInterfaces": [{ "AssociatePublicIpAddress": true, "DeviceIndex": 0, "Ipv6AddressCount": 1, "SubnetId": "subnet-7b16de0c" }], "ImageId": "ami-8c1be5f6", "InstanceType": "r4.4xlarge", "TagSpecifications": [{ "ResourceType": "instance", "Tags": [{ "Key":"Name", "Value":"webserver" }] }], "CpuOptions": { "CoreCount":4, "ThreadsPerCore":2 } }

下面是示例输出。

{ "LaunchTemplate": { "LatestVersionNumber": 1, "LaunchTemplateId": "lt-01238c059e3466abc", "LaunchTemplateName": "TemplateForWebServer", "DefaultVersionNumber": 1, "CreatedBy": "arn:aws:iam::123456789012:root", "CreateTime": "2017-11-27T09:13:24.000Z" } }

以下示例使用 New-EC2LaunchTemplate cmdlet 创建具有指定名称和实例配置的启动模板。

$launchTemplateData = [Amazon.EC2.Model.RequestLaunchTemplateData]@{ ImageId = 'ami-8c1be5f6' InstanceType = 'r4.4xlarge' NetworkInterfaces = @( [Amazon.EC2.Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]@{ AssociatePublicIpAddress = $true DeviceIndex = 0 Ipv6AddressCount = 1 SubnetId = 'subnet-7b16de0c' } ) TagSpecifications = @( [Amazon.EC2.Model.LaunchTemplateTagSpecificationRequest]@{ ResourceType = 'instance' Tags = [Amazon.EC2.Model.Tag]@{ Key = 'Name' Value = 'webserver' } } ) CpuOptions = [Amazon.EC2.Model.LaunchTemplateCpuOptionsRequest]@{ CoreCount = 4 ThreadsPerCore = 2 } } $tagSpecificationData = [Amazon.EC2.Model.TagSpecification]@{ ResourceType = 'launch-template' Tags = [Amazon.EC2.Model.Tag]@{ Key = 'purpose' Value = 'production' } } New-EC2LaunchTemplate -LaunchTemplateName 'TemplateForWebServer' -VersionDescription 'WebVersion1' -LaunchTemplateData $launchTemplateData -TagSpecification $tagSpecificationData

下面是示例输出。

CreatedBy : arn:aws:iam::123456789012:root CreateTime : 9/19/2023 16:57:55 DefaultVersionNumber : 1 LatestVersionNumber : 1 LaunchTemplateId : lt-01238c059eEXAMPLE LaunchTemplateName : TemplateForWebServer Tags : {purpose}

从现有启动模板创建启动模板

您可以克隆现有的启动模板,然后调整参数以创建新的启动模板。但是,您只能在使用 Amazon EC2 控制台时执行此操作;AWS CLI 不支持克隆模板。

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

  2. 在导航窗格中,选择启动模板,然后选择创建启动模板

  3. 对于设备模板名称,请为您的启动模板输入描述性名称。

  4. 对于模板版本说明,提供此版本的启动模板的简短说明。

  5. 要在创建时标记启动模板,请展开 Template tags (模板标签),选择 Add tag (添加标签),然后输入标签键值对。

  6. 展开源模板,对于启动模板名称,选择要作为新启动模板基础的启动模板。

  7. 对于源模板版本,请选择新启动模板版本所基于的启动模板版本。

  8. 根据需要,调整任何启动参数,然后选择Create launch template (创建启动模板)

从实例创建启动模板

Console
从实例创建启动模板
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择所需实例,然后依次选择操作从实例创建模板

  4. 提供名称、描述和标签,然后根据需要调整启动参数。

    注意

    通过实例创建启动模板时,该实例的网络接口 ID 和 IP 地址将不包含在模板中。

  5. 选择创建启动模板

AWS CLI

您可以使用 AWS CLI 从现有实例创建启动模板,方法是先从实例获取启动模板数据,然后使用启动模板数据创建启动模板。

从实例获取启动模板数据
  • 使用 get-launch-template-data 命令,并指定实例 ID。您可以将输出作为基础以创建新的启动模板或启动模板版本。默认情况下,输出包含一个顶级 LaunchTemplateData 对象,无法在启动模板数据中指定该对象。请使用 --query 选项排除该对象。

    aws ec2 get-launch-template-data \ --instance-id i-0123d646e8048babc \ --query "LaunchTemplateData"

    下面是示例输出。

    { "Monitoring": {}, "ImageId": "ami-8c1be5f6", "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": true } } ], "EbsOptimized": false, "Placement": { "Tenancy": "default", "GroupName": "", "AvailabilityZone": "us-east-1a" }, "InstanceType": "t2.micro", "NetworkInterfaces": [ { "Description": "", "NetworkInterfaceId": "eni-35306abc", "PrivateIpAddresses": [ { "Primary": true, "PrivateIpAddress": "10.0.0.72" } ], "SubnetId": "subnet-7b16de0c", "Groups": [ "sg-7c227019" ], "Ipv6Addresses": [ { "Ipv6Address": "2001:db8:1234:1a00::123" } ], "PrivateIpAddress": "10.0.0.72" } ] }

    您可以将输出直接写入到一个文件中,例如:

    aws ec2 get-launch-template-data \ --instance-id i-0123d646e8048babc \ --query "LaunchTemplateData" >> instance-data.json
使用启动模板数据创建启动模板

使用 Systems Manager 参数而非 AMI ID

您可以指定 AWS Systems Manager 参数,而不是在启动模板中指定 AMI ID。如果 AMI ID 发生变更,您可以通过更新 Systems Manager Parameter Store 中的 Systems Manager 参数在一个位置更新 AMI ID。参数也可以与其他 AWS 账户 共享。您可以在一个账户中集中存储和管理 AMI 参数,并与需要引用这些参数的所有其他账户共享。使用 Systems Manager 参数,只需一次操作即可更新所有启动模板。

Systems Manager 参数是用户定义的键值对,您可以在 Systems Manager Parameter Store 中创建该键值对。Parameter Store 提供了一个集中位置来存储应用程序配置值。有关更多信息,请参阅《AWS Systems Manager 用户指南》中的 AWS Systems Manager Parameter Store

在下图中,golden-ami 参数首先映射到 Parameter Store 中的原始 AMI ami-aabbccddeeffgghhi。在启动模板中,AMI ID 的值为 golden-ami。使用此启动模板启动实例时,AMI ID 解析为 ami-aabbccddeeffgghhi。之后,AMI 会更新,从而生成新的 AMI ID。在 Parameter Store 中,golden-ami 参数将映射到新的 ami-00112233445566778启动模板保持不变。使用此启动模板启动实例时,AMI ID 解析为新的 ami-00112233445566778


                    使用 Parameter Store 中的 Systems Manager 参数更新启动模板。

AMI ID 的 Systems Manager 参数格式

根据启动模板要求,用户定义的 Systems Manager 参数在替换 AMI ID 时应遵循以下格式:

  • 参数类型:String

  • 参数数据类型:aws:ec2:image – 确保 Parameter Store 验证您输入的值是否采用 AMI ID 的正确格式。

有关为 AMI ID 创建有效参数的更多信息,请参阅《AWS Systems Manager 用户指南》中的创建 Systems Manager 参数

启动模板中的 Systems Manager 参数格式

要在启动模板中使用 Systems Manager 参数替换 AMI ID,必须在启动模板中指定参数时采用以下格式之一:

要引用公有参数,请执行以下操作:

  • resolve:ssm:public-parameter

要引用存储在同一账户中的参数,请执行以下操作:

  • resolve:ssm:parameter-name

  • resolve:ssm:parameter-name:version-number – 版本号本身是默认标签

  • resolve:ssm:parameter-name:label

要引用其他 AWS 账户 共享的参数,请执行以下操作:

  • resolve:ssm:parameter-ARN

  • resolve:ssm:parameter-ARN:version-number

  • resolve:ssm:parameter-ARN:label

参数版本

Systems Manager 参数是版本控制资源。更新参数时,会创建该参数的连续新版本。Systems Manager 支持参数标签,您可以将其映射到参数的特定版本。

例如,golden-ami 参数可能有三个版本:123。您可以创建映射到版本 2 的参数标签 beta,以及映射到版本 3 的参数标签 prod

在启动模板中,您可以使用以下任一格式指定 golden-ami 参数的版本 3:

  • resolve:ssm:golden-ami:3

  • resolve:ssm:golden-ami:prod

指定版本或标签是可选的。如果未指定版本或标签,将使用参数的最新版本。

在启动模板中指定 Systems Manager 参数

创建启动模板或其新版本时,可以在启动模板中指定 Systems Manager 参数,而不是 AMI ID。

Console
在启动模板中指定 Systems Manager 参数
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择启动模板,然后选择创建启动模板

  3. 对于设备模板名称,请为您的启动模板输入描述性名称。

  4. Application and OS Images (Amazon Machine Image) [应用程序和操作系统镜像(Amazon 机器映像)] 下,选择 Browse more AMIs(浏览其他 AMI)。

  5. 选择搜索栏右侧的箭头按钮,然后选择指定自定义值/Systems Manager 参数

  6. 指定自定义值或 Systems Manager 参数对话框中,执行以下操作:

    1. 对于 AMI ID 或 Systems Manager 参数字符串,使用以下格式之一输入 Systems Manager 参数名称:

      要引用公有参数,请执行以下操作:

      • resolve:ssm:public-parameter

      要引用存储在同一账户中的参数,请执行以下操作:

      • resolve:ssm:parameter-name

      • resolve:ssm:parameter-name:version-number

      • resolve:ssm:parameter-name:label

      要引用其他 AWS 账户 共享的参数,请执行以下操作:

      • resolve:ssm:parameter-ARN

      • resolve:ssm:parameter-ARN:version-number

      • resolve:ssm:parameter-ARN:label

    2. 选择保存

  7. 根据需要指定任何其他启动模板参数,然后选择创建启动模板

有关更多信息,请参阅 根据参数创建启动模板

AWS CLI
在启动模板中指定 Systems Manager 参数
  • 使用 create-launch-template 命令创建启动模板。要指定要使用的 AMI,请使用以下格式之一输入 Systems Manager 参数名称:

    要引用公有参数,请执行以下操作:

    • resolve:ssm:public-parameter

    要引用存储在同一账户中的参数,请执行以下操作:

    • resolve:ssm:parameter-name

    • resolve:ssm:parameter-name:version-number

    • resolve:ssm:parameter-name:label

    要引用其他 AWS 账户 共享的参数,请执行以下操作:

    • resolve:ssm:parameter-ARN

    • resolve:ssm:parameter-ARN:version-number

    • resolve:ssm:parameter-ARN:label

    下面的示例创建一个指定以下内容的启动模板:

    • 启动模板的名称(TemplateForWebServer

    • 启动模板的标签 (purpose=production)

    • 在 JSON 文件中指定的实例配置数据:

      • 要使用的 AMI (resolve:ssm:golden-ami)

      • 要启动的实例类型 (m5.4xlarge)

      • 实例的标签(Name=webserver

    aws ec2 create-launch-template \ --launch-template-name TemplateForWebServer \ --tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose,Value=production}]' \ --launch-template-data file://template-data.json

    以下是一个示例 JSON 文件,其中包含实例配置的启动模板数据。ImageId 的值是以所需格式 resolve:ssm:golden-ami 输入的 Systems Manager 参数名称。

    {"LaunchTemplateData": { "ImageId": "resolve:ssm:golden-ami", "InstanceType": "m5.4xlarge", "TagSpecifications": [{ "ResourceType": "instance", "Tags": [{ "Key":"Name", "Value":"webserver" }] }] } }

验证启动模板是否获得正确的 AMI ID

将 Systems Manager 参数解析为实际的 AMI ID

使用 describe-launch-template-versions 命令并包含 --resolve-alias 参数。

aws ec2 describe-launch-template-versions \ --launch-template-name my-launch-template \ --versions $Default \ --resolve-alias

响应包含 ImageId 的 AMI ID。在本示例中,使用此启动模板启动实例时,AMI ID 解析为 ami-0ac394d6a3example

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-089c023a30example", "LaunchTemplateName": "my-launch-template", "VersionNumber": 1, "CreateTime": "2022-12-28T19:52:27.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-0ac394d6a3example", "InstanceType": "t3.micro", } } ] }

有关使用 Systems Manager 参数的更多信息,请参阅 Systems Manager 文档中的以下参考资料。

限制

  • 目前,EC2 实例集和竞价型实例集不支持使用指定了 Systems Manager 参数而不是 AMI ID 的启动模板。对于 EC2 实例集和竞价型实例集,如果您在启动模板中指定 AMI,则必须指定 AMI ID。

  • Amazon EC2 Auto Scaling 提供其他限制。有关更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的在启动模板中使用 AWS Systems Manager 参数代替 AMI ID