Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

通过启动模板启动实例

您可以创建一个启动模板,其中包含用于启动实例的配置信息。您可以在启动模板中存储启动参数,而无需在每次启动实例时都指定这些参数。例如,启动模板可能包含您通常用于启动实例的 AMI ID、实例类型和网络设置。在使用 Amazon EC2 控制台、AWS 软件开发工具包或命令行工具启动实例时,您可以指定要使用的启动模板。

对于每个启动模板,您可以创建一个或多个编号的启动模板版本。每个版本可能具有不同的启动参数。在通过启动模板启动实例时,您可以使用任何版本的启动模板。如果未指定版本,则使用默认版本。您可以将任何启动模板版本设置为默认版本 — 默认情况下,这是启动模板的第一个版本。

下图显示了具有三个版本的启动模板。第一个版本指定用于启动实例的实例类型、AMI ID、子网和密钥对。第二个版本基于第一个版本,并且还为实例指定了一个安全组。第三个版本在某些参数中使用不同的值。版本 2 设置为默认版本。如果通过该启动模板启动实例,并且未指定任何其他版本,则使用版本 2 中的启动参数。


            启动模板

启动模板限制

以下规则适用于启动模板和启动模板版本:

  • 您最多可以为每个区域创建 5,000 个启动模板,并且每个启动模板最多具有 10,000 个版本。

  • 启动参数是可选的。不过,您必须确保启动实例的请求包含所需的所有参数。例如,如果启动模板不包含 AMI ID,您必须在启动实例时指定启动模板和 AMI ID。

  • 在创建启动模板时,不会验证启动模板参数。确保您为参数指定正确的值,并使用支持的参数组合。例如,要在置放群组中启动实例,您必须指定一种支持的实例类型。

  • 您可以标记启动模板,但无法标记启动模板版本。

  • 启动模板版本是按创建顺序编号的。在创建启动模板版本时,您无法自行指定版本号。

使用启动模板控制启动参数

启动模板可以包含用于启动实例的全部或部分参数。在使用启动模板启动实例时,您可以覆盖启动模板中指定的参数。或者,也可以指定在启动模板中不包含的额外参数。

注意

您无法在启动期间删除启动模板参数 (例如,无法为参数指定空值)。要删除某个参数,请创建不包含该参数的新启动模板版本,并使用该版本启动实例。

要启动实例,IAM 用户必须有权使用 ec2:RunInstances 操作。您还必须有权创建或使用创建或与该实例关联的资源。您可以使用 ec2:RunInstances 操作的资源级权限控制用户可以指定的启动参数。或者,您可以为用户授予使用启动模板启动实例的权限。这样,您就可以在启动模板中管理启动参数,而不是在 IAM 策略中管理,并将启动模板作为授权方法以启动实例。例如,您可以指定用户只能使用启动模板启动实例,并且他们只能使用特定的启动模板。您还可以控制用户可以在启动模板中覆盖的启动参数。有关示例策略,请参阅 启动模板

控制如何使用启动模板

默认情况下,IAM 用户无权使用启动模板。您可以创建一个 IAM 用户策略,以便为用户授予创建、修改、描述和删除启动模板和启动模板版本的权限。您还可以将资源级权限应用于某些启动模板操作,以控制用户能否在这些操作中使用特定的资源。有关更多信息,请参阅Amazon EC2 API 操作支持的资源级权限以及以下示例策略:示例:使用启动模板

在为用户授予使用 ec2:CreateLaunchTemplateec2:CreateLaunchTemplateVersion 操作的权限时,应格外小心。这些操作不支持资源级权限,您无法控制用户可以在启动模板中指定哪些资源。要限制用于启动实例的资源,请确保仅为相应的管理员授予创建启动模板和启动模板版本的权限。

创建启动模板

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

使用定义的参数创建新启动模板(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

  3. 对于设备模板名称,请为您的启动模板输入描述性名称。要在创建时标记启动模板,请选择显示标签添加标签,然后输入标签键/值对。

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

  5. 对于 Launch template contents (启动模板内容),请提供以下信息:

    • AMI ID:要从中启动实例的 AMI。要搜索所有可用 AMI,请选择 Search for AMI (搜索 AMI)。要选择常用的 AMI,请选择 Quick Start (快速入门)。或者,选择 AWS MarketplaceCommunity AMIs (社区 AMI)。您可以使用自己的 AMI 或查找合适的 AMI

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

    • Key pair name (密钥对名称):实例的密钥对。有关更多信息,请参阅Amazon EC2 密钥对

    • Network type (网络类型):如果适用,选择是将实例启动到 VPC 还是 EC2-Classic。如果选择 VPC,请在 Network interfaces (网络接口) 部分中指定子网。如果选择 Classic,请确保在 EC2 Classic 中支持指定的实例类型,并为实例指定可用区。

    • Security Groups (安全组):一个或多个要与实例关联的安全组。有关更多信息,请参阅Linux 实例的 Amazon EC2 安全组

  6. 对于网络接口,您可以为实例最多指定两个网络接口

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

    • Network interface (网络接口):网络接口的 ID,或者保留空白以让 AWS 创建新的网络接口。

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

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

    • Auto-assign public IP (自动分配公有 IP):指定是否自动为设备索引为 eth0 的网络接口分配公有 IP 地址。只能为单个新网络接口启用该设置。

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

    • Secondary IP (辅助 IP):您的子网范围内的一个辅助私有 IPv4 地址。保留空白会让 AWS 为您选择一个辅助私有 IPv4 地址。

    • (仅限 IPv6) IPv6 IP:子网范围内的一个 IPv6 地址。

    • Security group ID (安全组 ID):您的 VPC 中与网络接口关联的安全组的 ID。

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

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

  7. 对于存储 (卷),除了 AMI 指定的卷以外,还可以指定要附加到实例的卷。

    • Volume type (卷类型):与实例关联的实例存储或 Amazon EBS 卷。卷类型取决于您选择的实例类型。有关更多信息,请参阅 Amazon EC2 实例存储Amazon EBS 卷

    • Device name (设备名称):卷的设备名称。

    • Snapshot (快照):用于创建卷的快照的 ID。

    • Size (大小)(对于 Amazon EBS 卷)存储大小。

    • Volume type (卷类型):(对于 Amazon EBS 卷)卷类型。有关更多信息,请参阅Amazon EBS 卷类型

    • IOPS:(对于 预配置 IOPS SSD 卷类型)卷可支持的每秒 I/O 操作数。

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

    • 加密:如果实例类型支持 EBS 加密,则可以为卷启用加密。如果默认情况下在此区域中启用了加密,则会为您启用加密。有关更多信息,请参阅 Amazon EBS Encryption

    • Key (密钥):要用于 EBS 加密的 CMK。您可以指定您使用 AWS Key Management Service 创建的任何客户主密钥 (CMK) 的 ARN。如果指定 CMK,还必须使用加密来启用加密。

  8. 对于标签,请提供键和值组合以指定标签。您可以标记实例、卷或两者。

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

    • Purchasing option (购买选项):购买模式。选择 Request Spot instances (请求 Spot 实例) 可按照 Spot 价格请求 Spot 实例,以按需价格为上限;而选择 Customize Spot parameters (自定义 Spot 参数) 可更改默认 Spot 实例 设置。如果您未请求 Spot 实例,则默认情况下 EC2 会启动 个按需实例。有关更多信息,请参阅Spot 实例

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

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

    • Stop - Hibernate behavior (停止 - 休眠操作):选择是否为实例启用休眠。此字段仅适用于满足休眠先决条件的实例。有关更多信息,请参阅使 Linux 实例休眠

    • Termination protection (终止保护):选择是否禁止意外终止。有关更多信息,请参阅为实例启用终止保护

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

    • T2/T3 Unlimited (T2/T3 无限):选择是否允许应用程序突增到基准以上所需的时间。此字段仅适用于 T2 和 T3 实例。可能收取额外费用。有关更多信息,请参阅可突增性能实例

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

    • EBS-optimized instance (EBS 优化的实例):为 Amazon EBS I/O 提供额外的专用容量。并非所有实例类型都支持该功能,并且会产生额外的费用。有关更多信息,请参阅Amazon EBS 优化的实例

    • Tenancy (租期):选择是在共享硬件(Shared (共享))、隔离的专用硬件(Dedicated (专用)),还是在 专用主机(Dedicated host (专用主机))上运行您的实例。可能收取额外费用。有关更多信息,请参阅 专用实例专用主机。如果指定专用主机,您可以为实例选择特定的主机和关联。

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

    • 内核 ID:实例的内核。仅对半虚拟化 (PV) AMIs 有效。

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

  10. 选择创建启动模板

通过现有启动模板创建启动模板(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Launch Templates

  3. 选择创建启动模板。提供启动模板的名称、描述和标签。

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

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

  6. 根据需要,调整任何启动参数,然后选择创建启动模板

通过实例创建启动模板(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

  3. 选择所需实例,然后依次选择 Actions (操作)Create Template From Instance (从实例创建模板)

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

    注意

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

  5. 选择 Create Template From Instance (从实例创建模板)

创建启动模板 (AWS CLI)

  • 使用 create-launch-template (AWS CLI) 命令。下面的示例创建一个指定以下内容的启动模板:

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

    • 要启动的实例类型 (r4.4xlarge) 和 AMI (ami-8c1be5f6)

    • 总共 8 个 vCPU 的内核数 (4) 和每内核线程数 (2)(4 个内核 x 2 个线程)

    • 要在其中启动实例的子网 (subnet-7b16de0c)

    该模板会向实例分配一个公有 IP 地址和一个 IPv6 地址,并为实例创建一个标签 (Name=webserver)。

    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

    以下是 template-data.json 文件示例:

    { "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" } }

获取启动模板的实例数据 (AWS CLI)

  • 使用 get-launch-template-data (AWS CLI) 命令,并指定实例 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

管理启动模板版本

您可以为特定启动模板创建启动模板版本,设置默认版本以及删除不再需要的版本。

创建启动模板版本

在创建启动模板版本时,您可以指定新的启动参数,或者将现有版本作为基础以创建新的版本。有关启动参数的更多信息,请参阅创建启动模板

创建启动模板版本(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Launch Templates

  3. 选择创建启动模板

  4. 对于您要做什么,选择创建新模板版本

  5. 对于启动模板名称,从列表中选择现有启动模板的名称。

  6. 对于模板版本说明,键入启动模板版本的说明。

  7. (可选)选择启动模板的版本或其他启动模板的版本,以用作新启动模板版本的基础。新启动模板版本从此启动模板版本继承启动参数。

  8. 根据需要修改启动参数,然后选择创建启动模板

创建启动模板版本 (AWS CLI)

  • 使用 create-launch-template-version (AWS CLI) 命令。您可以指定新版本所基于的源版本。新版本从此版本继承启动参数,您可以使用 --launch-template-data 覆盖参数。以下示例根据启动模板的版本 1 创建新的版本并指定不同的 AMI ID。

    aws ec2 create-launch-template-version --launch-template-id lt-0abcd290751193123 --version-description WebVersion2 --source-version 1 --launch-template-data "ImageId=ami-c998b6b2"

设置默认启动模板版本

您可以设置启动模板的默认版本。如果通过启动模板启动实例并且未指定版本,将使用默认版本的参数启动实例。

设置默认启动模板版本(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Launch Templates

  3. 选择启动模板,然后依次选择操作设置默认版本

  4. 对于默认版本,请选择版本号,然后选择设置为默认版本

设置默认启动模板版本 (AWS CLI)

  • 使用 modify-launch-template (AWS CLI) 命令,并指定要设置为默认版本的版本。

    aws ec2 modify-launch-template --launch-template-id lt-0abcd290751193123 --default-version 2

删除启动模板版本

如果不再需要某个启动模板版本,您可以将其删除。在删除该版本后,无法替换版本号。您无法删除启动模板的默认版本;您必须先分配一个不同的版本以作为默认版本。

删除启动模板版本(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Launch Templates

  3. 选择启动模板,然后依次选择操作删除模板版本

  4. 选择要删除的版本,然后选择删除启动模板版本

删除启动模板版本 (AWS CLI)

  • 使用 delete-launch-template-versions (AWS CLI) 命令,并指定要删除的版本号。

    aws ec2 delete-launch-template-versions --launch-template-id lt-0abcd290751193123 --versions 1

通过启动模板启动实例

您可以使用启动模板中包含的参数启动实例。在启动实例之前,您可以选择覆盖或添加启动参数。

将自动为使用启动模板启动的实例分配两个具有 aws:ec2launchtemplate:idaws:ec2launchtemplate:version 键的标签。您无法删除或编辑这些标签。

通过启动模板启动实例(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Launch Templates

  3. 选择启动模板,然后依次选择操作从模板启动实例

  4. 选择要使用的启动模板版本。

  5. (可选) 您可以在实例详细信息部分中更改和添加参数以覆盖或添加启动模板参数。

  6. 选择通过模板启动实例

通过启动模板启动实例 (AWS CLI)

  • 使用 run-instances AWS CLI 命令,并指定 --launch-template 参数。可以选择指定要使用的启动模板版本。如果未指定版本,则使用默认版本。

    aws ec2 run-instances --launch-template LaunchTemplateId=lt-0abcd290751193123,Version=1
  • 要覆盖启动模板参数,请在 run-instances 命令中指定该参数。以下示例覆盖在启动模板 (如果有) 中指定的实例类型。

    aws ec2 run-instances --launch-template LaunchTemplateId=lt-0abcd290751193123 --instance-type t2.small
  • 如果指定复杂结构包含的嵌套参数,则使用启动模板中指定的复杂结构以及您指定的任何其他嵌套参数启动实例。

    在以下示例中,将使用标签 Owner=TeamA 以及在启动模板中指定的任何其他标签启动实例。如果启动模板包含具有 Owner 键的现有标签,该值将替换为 TeamA

    aws ec2 run-instances --launch-template LaunchTemplateId=lt-0abcd290751193123 --tag-specifications "ResourceType=instance,Tags=[{Key=Owner,Value=TeamA}]"

    在以下示例中,将使用具有设备名称 /dev/xvdb 的卷以及在启动模板中指定的任何其他块储存设备映射启动实例。如果启动模板为 /dev/xvdb 定义了一个现有的卷,它的值将替换为指定的值。

    aws ec2 run-instances --launch-template LaunchTemplateId=lt-0abcd290751193123 --block-device-mappings "DeviceName=/dev/xvdb,Ebs={VolumeSize=20,VolumeType=gp2}"

如果实例无法启动或状态立即转至 terminated 而非 running,请参阅 排查实例启动问题

将启动模板与 Amazon EC2 Auto Scaling 一起使用

您可以创建一个 Auto Scaling 组,并指定一个用于该组的启动模板。在 Amazon EC2 Auto Scaling 启动 Auto Scaling 组中的实例时,它使用关联的启动模板中定义的启动参数。

有关更多信息,请参阅Amazon EC2 Auto Scaling 用户指南中的使用启动模板创建 Auto Scaling 组

通过启动模板创建或更新 Amazon EC2 Auto Scaling 组 (AWS CLI)

将启动模板与 EC2 队列 一起使用

您可以创建一个 EC2 队列请求,并在实例配置中指定一个启动模板。在 Amazon EC2 完成 EC2 队列 请求时,它使用关联的启动模板中定义的启动参数。您可以覆盖启动模板中指定的某些参数。

有关更多信息,请参阅创建 EC2 队列

通过启动模板创建 EC2 队列 (AWS CLI)

  • 使用 create-fleet AWS CLI 命令。请使用 --launch-template-configs 参数指定启动模板,并为启动模板指定任何覆盖值。

将启动模板与 Spot 队列一起使用

您可以创建一个 Spot 队列请求,并在实例配置中指定一个启动模板。在 Amazon EC2 完成 Spot 队列 请求时,它使用关联的启动模板中定义的启动参数。您可以覆盖启动模板中指定的某些参数。

有关更多信息,请参阅Spot 队列请求

通过启动模板创建 Spot 队列 请求 (AWS CLI)

  • 使用 request-spot-fleet AWS CLI 命令。请使用 LaunchTemplateConfigs 参数指定启动模板,并为启动模板指定任何覆盖值。

删除启动模板

如果不再需要某个启动模板,您可以将其删除。如果删除启动模板,则会删除该模板的所有版本。

删除启动模板(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Launch Templates

  3. 选择启动模板,然后依次选择操作删除模板

  4. 选择删除启动模板

删除启动模板 (AWS CLI)

  • 使用 delete-launch-template (AWS CLI) 命令,并指定启动模板。

    aws ec2 delete-launch-template --launch-template-id lt-01238c059e3466abc