竞价型实例请求 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

竞价型实例请求

要使用竞价型实例,您需要创建竞价型实例请求,其中包括所需实例数量、实例类型、可用区以及您愿意为每实例小时支付的最高价。如果具有可用的容量,并且您的最高价超过当前 Spot 价格,Amazon EC2 将立即完成您的请求。否则,Amazon EC2 将等待直至可以完成您的请求,或者直至您取消请求。

以下演示了竞价型实例请求的运行方式。请注意,请求类型(一次性或持久性)确定在 Amazon EC2 中断竞价型实例时或者在您停止竞价型实例时是否重新打开请求。如果请求是持久性请求,则在中断竞价型实例之后将重新打开请求。如果请求是持久性的,并且您停止了竞价型实例,则请求仅在您启动竞价型实例后打开。


				竞价型实例请求的工作原理

竞价型实例请求状态

竞价型实例请求可以处于以下某种状态:

  • open – 请求正在等待执行。

  • active – 请求已执行并有关联的竞价型实例。

  • failed – 请求的一个或多个参数错误。

  • closed –竞价型实例被中断或终止。

  • disabled – 您停止了竞价型实例。

  • cancelled – 您取消了请求或请求已过期。

以下显示了请求状态之间的转换。请注意,转换取决于请求类型 (一次性还是持久性)。


					竞价型实例请求状态

一次性竞价型实例请求在 Amazon EC2 启动竞价型实例、请求过期前或者您取消请求前保持有效。如果 Spot 价格超过您的最高价或容量不可用,将终止您的竞价型实例并关闭竞价型实例请求。

持久性竞价型实例请求在过期或您取消它之前保持有效,即使该请求已完成也如此。如果 Spot 价格超过您的最高价或没有可用的容量,您的竞价型实例将会中断。在您的实例中断后,在最高价超过 Spot 价格或再次具有可用的容量时,将会启动竞价型实例(如果已停止)或将其恢复(如果已休眠)。您可以停止竞价型实例,如果容量可用并且您的最高价格超过当前 Spot 价格,则重新启动实例。如果竞价型实例终止(无论竞价型实例处于停止状态还是正在运行状态),则会重新打开竞价型实例请求,并且 Amazon EC2 启动一个新的竞价型实例。有关更多信息,请参阅停止竞价型实例启动竞价型实例终止竞价型实例

您可以跟踪竞价型实例请求的状态以及通过该状态启动的竞价型实例的状态。有关更多信息,请参阅Spot 请求状态

定义竞价型实例的持续时间

自 2021 年 7 月 1 日起,新客户不再享有具有定义持续时间(也称为 Spot 块)的竞价型实例。对于以前使用过该功能的客户,我们将继续支持具有定义持续时间的竞价型实例,直到 2022 年 12 月 31 日。

指定竞价型实例的租期

您可以在单租户硬件上运行竞价型实例。专用竞价型实例与属于其他Amazon账户的实例物理隔离。有关更多信息,请参阅Dedicated InstancesAmazon EC2 专用实例产品页面。

要运行专用竞价型实例,请执行以下操作之一:

  • 在创建竞价型实例请求时,请指定租期 dedicated。有关更多信息,请参阅创建竞价型实例请求

  • 在 VPC 中请求实例租期为 dedicated 的竞价型实例。有关更多信息,请参阅创建有专用实例租期的 VPC。如果您在 VPC 中请求实例租期为 dedicated 的竞价型实例,则无法请求租期为 default 的竞价型实例。

所有实例系列都支持除 T 实例外的专用竞价型实例。对于每个受支持的实例系列,只有最大的实例或设备支持专用竞价型实例。

竞价型实例请求的服务相关角色

Amazon EC2 使用服务相关角色获取代表您调用其他Amazon服务所需的权限。服务相关角色是一种独特类型的 IAM 角色,它与Amazon服务直接相关。服务相关角色提供了一种将权限委托给 Amazon 服务的安全方式,因为只有相关服务才能担任服务相关角色。有关更多信息,请参阅 IAM 用户指南 中的使用服务相关角色

Amazon EC2 使用名为 AWSServiceRoleForEC2Spot 的服务相关角色代表您启动和管理竞价型实例。

AWSServiceRoleForEC2Spot 授予的权限

Amazon EC2 使用 AWSServiceRoleForEC2Spot 完成以下操作:

  • ec2:DescribeInstances – 描述竞价型实例

  • ec2:StopInstances – 停止竞价型实例

  • ec2:StartInstances – 启动竞价型实例

创建服务相关角色

在大多数情况下,无需手动创建服务相关角色。Amazon EC2 在您首次使用控制台请求竞价型实例时创建 AWSServiceRoleForEC2Spot 服务相关角色。

如果在 2017 年 10 月之前具有活动竞价型实例请求(此时 Amazon EC2 开始支持该服务相关角色),则 Amazon EC2 在您的Amazon账户中创建 AWSServiceRoleForEC2Spot 角色。有关更多信息,请参阅IAM 用户指南中的我的账户中出现新角色

如果您使用 Amazon CLI 或 API 来请求竞价型实例,则必须确保此角色存在。

要使用控制台创建 AWSServiceRoleForEC2Spot

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

  2. 在导航窗格中,选择 Roles

  3. 选择创建角色

  4. Select type of trusted entity (选择受信任实体的类型) 页面上,依次选择 EC2EC2 - Spot Instances (EC2 -竞价型实例)Next: Permissions (下一步: 权限)

  5. 在下一页上,选择 Next:Review(下一步:审核)

  6. Review (审核) 页面上,选择 Create role (创建角色)

要使用 Amazon CLI 创建 AWSServiceRoleForEC2Spot

如下所示使用 create-service-linked-role 命令。

aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

如果您不再需要使用竞价型实例,我们建议您删除 AWSServiceRoleForEC2Spot 角色。从账户中删除该角色后,如果您请求竞价型实例,Amazon EC2 将再次创建该角色。

授予对用于加密的 AMI 和 EBS 快照的客户托管密钥的访问权限

如果为竞价型实例指定加密的 AMI加密的 Amazon EBS 快照,并且您使用客户托管密钥进行加密,则必须为 AWSServiceRoleForEC2Spot 角色授予使用客户托管密钥的权限,以便 Amazon EC2 可以代表您启动竞价型实例。为此,您必须在客户托管密钥中添加授权,如以下过程中所示。

在提供权限时,授权是密钥策略的替代方法。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的使用授权在 Amazon KMS 中使用密钥策略

AWSServiceRoleForEC2Spot 角色授予使用客户托管密钥的权限

  • 使用 create-grant 命令在客户托管密钥中添加授权,并指定授予权限的委托人(AWSServiceRoleForEC2Spot 服务相关角色),以执行授权允许的操作。客户托管密钥由 key-id 参数和客户托管密钥的 ARN 指定。委托人是由 grantee-principal 参数和 AWSServiceRoleForEC2Spot 服务相关角色的 ARN 指定的。

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2Spot \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

创建竞价型实例请求

请求竞价型实例的过程与启动按需型实例的过程相似。您可以通过以下方式请求竞价型实例:

在提交竞价型实例请求后,您无法更改该请求的参数。这意味着您无法更改您愿意支付的最高价。

如果您一次请求了多个竞价型实例,Amazon EC2 将创建单独的竞价型实例,这样您可以分别跟踪各个请求的状态。有关跟踪竞价型实例请求的更多信息,请参阅 Spot 请求状态

要启动包含竞价型实例和按需型实例的队列,请参阅 创建 Spot 队列请求

注意

您无法使用启动实例向导或 run-instances 命令在同一调用中启动竞价型实例和按需型实例。

先决条件

在开始之前,请确定最高价、所需的竞价型实例数以及要使用的实例类型。要查看 Spot 价格趋势,请参阅 竞价型实例定价历史记录

创建竞价型实例请求(控制台)

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

  2. 在屏幕顶部的导航栏中,选择一个区域。

  3. 从 Amazon EC2 控制台控制面板中,选择 Launch Instance

  4. 选择一个 Amazon Machine Image (AMI) 页上,选择一个 AMI。有关更多信息,请参阅步骤 1:选择 Amazon Machine Image (AMI)

  5. 选择实例类型页上,选择要启动的实例的硬件配置和大小,然后选择下一步: 配置实例详细信息。有关更多信息,请参阅步骤 2:选择实例类型

  6. 配置实例详细信息页上,按如下方式配置竞价型实例请求:

    • Number of instances (实例的数量):输入要启动的实例的数量。

      注意

      Amazon EC2 为每个竞价型实例创建一个单独的请求。

    • (可选)为帮助确保保持正确数量的实例来处理应用程序,您可选择 Launch into Auto Scaling Group (启动至 Auto Scaling 组) 以创建启动配置和 Auto Scaling 组。Auto Scaling 将根据您的规格来扩展组中的实例数。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南

    • Purchasing option (购买选项):选择 Request Spot instances (请求竞价型实例) 以启动竞价型实例。选择此选项后,将显示以下字段。

    • 当前价格:为选定的实例类型显示每个可用区中的当前 Spot 价格。

    • (可选)最高价:您可以将此字段留空,也可以指定您愿意支付的最高金额。

      • 如果您将此字段留空,则最高价默认为当前按需价格。您的竞价型实例按当前 Spot 价格启动,而不会超过按需价格。

      • 如果您指定的最高价高于当前 Spot 价格,则您的竞价型实例将启动并按当前 Spot 价格计费。

      • 如果您指定的最高价低于 Spot 价格,则不会启动您的竞价型实例。

    • Persistent request (持久性请求):如果您的竞价型实例已中断,请选择 Persistent request (持久性请求) 以重新提交竞价型实例请求。

    • Interruption behavior (中断行为):预设情况下,在竞价型实例中断后,Spot 服务会将它终止。如果选择 Persistent request (持久性请求),则可以指定 Spot 服务在竞价型实例中断后将它停止或休眠。有关更多信息,请参阅中断行为

    • (可选)请求有效截止时间:选择 Edit (编辑) 可指定竞价型实例请求的过期时间。

    有关配置竞价型实例的更多信息,请参阅步骤 3:配置实例详细信息

  7. 您选择的 AMI 包含一个或多个存储卷,包括根设备卷。在添加存储页面上,您可以选择添加新卷来指定要附加到实例的其他卷。有关更多信息,请参阅步骤 4:添加存储

  8. Add Tags 页面上,通过提供键和值组合来指定标签。有关更多信息,请参阅步骤 5:添加标签

  9. Configure Security Group (配置安全组) 页面上,使用安全组为实例定义防火墙规则。这些规则指定哪些传入的网络流量可传输到您的实例。所有其他的流量将被忽略。(有关安全组的更多信息,请参阅 适用于 Linux 实例的 Amazon EC2 安全组。) 选择或创建安全组,然后选择审核和启动。有关更多信息,请参阅步骤 6:配置安全组

  10. Review Instance Launch 页面上,检查您的实例的详细信息,然后选择相应的 Edit 链接进行任何必要更改。如果准备就绪,请选择 Launch。有关更多信息,请参阅步骤 7:查看实例启动并选择密钥对

  11. Select an existing key pair or create a new key pair (选择现有密钥对或创建新密钥对) 对话框中,您可以选择现有密钥对,也可以创建新的密钥对。例如,选择选择现有密钥对,然后选择您在进行设置时创建的密钥对。有关更多信息,请参阅Amazon EC2 密钥对和 Linux 实例

    重要

    如果您选择 Proceed without key pair 选项,则将无法连接到此实例,除非您选择配置为允许用户以其他方式登录的 AMI。

  12. 要启动您的实例,请选中确认复选框,然后选择 Launch Instances

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

使用 request-spot-instances 创建竞价型实例请求 (Amazon CLI)

使用 request-spot-instances 命令可创建一次性请求。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json

使用 request-spot-instances 命令可创建持久性请求。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "persistent" \ --launch-specification file://specification.json

有关要用于这些命令的启动规范文件的示例,请参阅竞价型实例请求示例启动规范。如果您从控制台下载启动规范文件,必须改为使用 request-spot-fleet 命令(控制台使用竞价型实例集指定竞价型实例请求)。

使用 run-instances 创建竞价型实例请求 (Amazon CLI)

使用 run-instances 命令并在 --instance-market-options 参数中指定竞价型实例选项。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --count 5 \ --subnet-id subnet-08fc749671b2d077c \ --key-name MyKeyPair \ --security-group-ids sg-0b0384b66d7d692f9 \ --instance-market-options file://spot-options.json

以下是要在 JSON 文件中为 --instance-market-options 指定的数据结构。您还可以指定 ValidUntilInstanceInterruptionBehavior。如果未在数据结构中指定字段,则将使用默认值。此示例创建一个 one-time 请求,并指定 0.02 作为您愿意为竞价型实例支付的最高价。

{ "MarketType": "spot", "SpotOptions": { "MaxPrice": "0.02", "SpotInstanceType": "one-time" } }

查找正在运行的竞价型实例

在最高价超过 Spot 价格并具有可用的容量时,Amazon EC2 会启动竞价型实例。竞价型实例将一直运行,直到该实例中断,或者您自行终止该实例。如果您的最高价与 Spot 价格完全相同,根据需求情况,您的竞价型实例可能会保持运行状态。

查找正在运行的竞价型实例(控制台)

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

  2. 在导航窗格中,请选择 Spot Requests。您可以同时查看竞价型实例请求和竞价型实例集请求。如果竞价型实例请求已执行,那么 Capacity (容量) 就是竞价型实例的 ID。对于 Spot 实例集,Capacity (容量) 表示已执行的请求容量。要查看 Spot 实例集中的实例的 ID,请选择扩展箭头,或者选择队列,然后选择 Instances (实例)

    注意

    对于由竞价型实例集创建的竞价型实例请求,不会立即为这些请求添加用于指示它们所属的竞价型实例的系统标签,并且这些请求在一段时间内可能会独立于竞价型实例请求显示。

    或者,在导航窗格中,选择 Instances。在右上角,选择设置图标 ( ),然后在属性列下选择实例生命周期。对于每个实例,实例生命周期normalspotscheduled

查找正在运行的竞价型实例(Amazon CLI)

要枚举您的竞价型实例,请结合使用 describe-spot-instance-requests 命令和 --query 选项。

aws ec2 describe-spot-instance-requests \ --query "SpotInstanceRequests[*].{ID:InstanceId}"

下面是示例输出:

[ { "ID": "i-1234567890abcdef0" }, { "ID": "i-0598c7d356eba48d7" } ]

或者,您可结合使用 describe-instances 命令和 --filters 选项来枚举您的竞价型实例。

aws ec2 describe-instances \ --filters "Name=instance-lifecycle,Values=spot"

要描述单个竞价型实例,请使用带 --spot-instance-request-ids 选项的 describe-spot-instance-requests 命令。

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-08b93456

标记竞价型实例请求

要对您的竞价型实例请求进行分类和管理,您可使用自定义元数据标记它们。您可以在创建竞价型实例请求时或之后为其分配标签。您可以使用 Amazon EC2 控制台或命令行工具分配标签。

在标记竞价型实例请求时,不会自动标记由竞价型实例请求启动的实例和卷。您需要明确标记由竞价型实例请求启动的实例和卷。您可以在启动期间或之后为竞价型实例和卷分配标签。

有关标签的工作原理的更多信息,请参阅标记 Amazon EC2 资源

先决条件

授予 IAM 用户标记资源的权限。有关 IAM 策略和示例策略的更多信息,请参阅示例:标记资源

您创建的 IAM 策略由您用于创建竞价型实例请求的方法决定。

在使用启动实例向导或 run-instances 命令时向 IAM 用户授予标记资源权限

创建包含以下内容的 IAM 策略:

  • ec2:RunInstances 操作。这将授予 IAM 用户授予启动实例的权限。

  • 对于 Resource,请指定 spot-instances-request。这允许用户创建竞价型实例请求,以请求竞价型实例。

  • ec2:CreateTags 操作。这将授予 IAM 用户创建标签的权限。

  • 对于 Resource,请指定 *。这将允许用户标记在实例启动期间创建的所有资源。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLaunchInstances", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagSpotInstanceRequests", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
注意

当您使用 RunInstances 操作创建竞价型实例请求并在创建时标记竞价型实例请求时,您需要了解 Amazon EC2 如何在 RunInstances 语句中评估 spot-instances-request 资源。

在 IAM 策略中评估 spot-instances-request 资源,如下所示:

  • 如果您在创建时未标记竞价型实例请求,则 Amazon EC2 不会在 RunInstances 语句中评估 spot-instances-request 资源。

  • 如果您在创建时标记竞价型实例请求,则 Amazon EC2 会在 RunInstances 语句中评估 spot-instances-request 资源。

因此,对于 spot-instances-request 资源,以下规则适用于 IAM 策略:

  • 如果您使用 RunInstances 创建竞价型实例请求,并且您不打算在创建时标记竞价型实例请求,则无需明确允许 spot-instances-request 资源;调用将成功。

  • 如果您使用 RunInstances 创建竞价型实例请求并打算在创建时标记竞价型实例请求,则必须在 RunInstances 允许语句中包含 spot-instances-request 资源,否则调用将失败。

  • 如果您使用 RunInstances 创建竞价型实例请求并打算在创建时标记竞价型实例请求,则必须在 CreateTags 允许语句中指定 spot-instances-request 资源或包括 * 通配符,否则调用将失败。

有关示例 IAM 策略(包括竞价型实例请求不支持的策略),请参阅使用竞价型实例

向 IAM 用户授予使用 request-spot-instances 时标记资源的权限

创建包含以下内容的 IAM 策略:

  • ec2:RequestSpotInstances 操作。这将授予 IAM 用户创建竞价型实例请求的权限。

  • ec2:CreateTags 操作。这将授予 IAM 用户创建标签的权限。

  • 对于 Resource,请指定 spot-instances-request。这将允许用户仅标记竞价型实例请求。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotInstanceRequest", "Effect": "Allow", "Action": [ "ec2:RequestSpotInstances", "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-instances-request/*" }

标记新的竞价型实例请求

使用控制台标记新的竞价型实例请求

  1. 按照创建竞价型实例请求过程操作。

  2. 要添加标签,请在添加标签页上,选择添加标签,然后输入标签的键和值。为每个附加标签选择添加其他标签

    对于每个标签,您可以使用相同标签来标记竞价型实例请求、竞价型实例和卷。要标记所有这三个项,请确保已选定 Instances (实例)Volumes (卷)Spot Instance Requests (竞价型实例请求)。要仅标记其中的一个或两个项,请确保已选定要标记的资源,并清除其他资源。

  3. 填写必填字段以创建竞价型实例请求,然后选择 Launch (启动)。有关更多信息,请参阅创建竞价型实例请求

使用 Amazon CLI 标记新的竞价型实例请求

要在创建时标记竞价型实例请求请求,请按以下方式配置竞价型实例请求配置:

  • 使用 --tag-specification 参数指定竞价型实例请求的标签。

  • 对于 ResourceType,请指定 spot-instances-request。如果指定其他值,则竞价型实例请求将失败。

  • 对于 Tags,请指定键值对。您可以指定多个键值对。

在以下示例中,使用两个标签来标记竞价型实例请求:键=环境,值=生产;键=成本中心,值=123。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json \ --tag-specification 'ResourceType=spot-instances-request,Tags=[{Key=Environment,Value=Production},{Key=Cost-Center,Value=123}]'

标记现有竞价型实例请求

使用控制台标记现有的竞价型实例请求

创建竞价型实例请求后,您可以使用控制台向竞价型实例请求添加标签。

  1. https://console.aws.amazon.com/ec2spot 处打开 Spot 控制台。

  2. 选择您的竞价型实例请求。

  3. 选择 Tags (标签) 选项卡,然后选择 Create Tag (创建标签)

使用控制台标记现有的竞价型实例

在竞价型实例请求启动竞价型实例后,您可以使用控制台向实例添加标签。有关更多信息,请参阅在单个资源上添加和删除标签

使用 Amazon CLI 标记现有的竞价型实例请求或竞价型实例

使用 create-tags 命令标记现有的资源。在以下示例中,使用以下标签标记现有竞价型实例请求和竞价型实例:键=目的,值=测试。

aws ec2 create-tags \ --resources sir-08b93456 i-1234567890abcdef0 \ --tags Key=purpose,Value=test

查看竞价型实例请求标记

使用控制台查看竞价型实例请求标签

  1. https://console.aws.amazon.com/ec2spot 处打开 Spot 控制台。

  2. 选择您的竞价型实例请求并选择 Tags (标签) 选项卡。

描述竞价型实例请求标记

使用 describe-tags 命令可查看指定资源的标签。在以下示例中,您将描述指定请求的标签。

aws ec2 describe-tags \ --filters "Name=resource-id,Values=sir-11112222-3333-4444-5555-66666EXAMPLE"
{ "Tags": [ { "Key": "Environment", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Production" }, { "Key": "Another key", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Another value" } ] }

您还可以通过描述竞价型实例请求来查看竞价型实例请求的标签。

使用 describe-spot-instance-requests 命令可查看指定的竞价型实例请求的配置,其中包括为请求指定的任何标签。

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-11112222-3333-4444-5555-66666EXAMPLE
{ "SpotInstanceRequests": [ { "CreateTime": "2020-06-24T14:22:11+00:00", "InstanceId": "i-1234567890EXAMPLE", "LaunchSpecification": { "SecurityGroups": [ { "GroupName": "launch-wizard-6", "GroupId": "sg-1234567890EXAMPLE" } ], "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": true, "VolumeSize": 8, "VolumeType": "gp2" } } ], "ImageId": "ami-1234567890EXAMPLE", "InstanceType": "t2.micro", "KeyName": "my-key-pair", "NetworkInterfaces": [ { "DeleteOnTermination": true, "DeviceIndex": 0, "SubnetId": "subnet-11122233" } ], "Placement": { "AvailabilityZone": "eu-west-1c", "Tenancy": "default" }, "Monitoring": { "Enabled": false } }, "LaunchedAvailabilityZone": "eu-west-1c", "ProductDescription": "Linux/UNIX", "SpotInstanceRequestId": "sir-1234567890EXAMPLE", "SpotPrice": "0.012600", "State": "active", "Status": { "Code": "fulfilled", "Message": "Your spot request is fulfilled.", "UpdateTime": "2020-06-25T18:30:21+00:00" }, "Tags": [ { "Key": "Environment", "Value": "Production" }, { "Key": "Another key", "Value": "Another value" } ], "Type": "one-time", "InstanceInterruptionBehavior": "terminate" } ] }

取消竞价型实例请求

如果您不再需要竞价型实例请求,您可以将其取消。您只能取消 openactivedisabled 的竞价型实例请求。

  • 当您的请求未执行,且实例没有启动时,您的竞价型实例请求处于 open 状态。

  • 当您的请求完成且竞价型实例因此已启动时,您的竞价型实例请求处于 active 状态。

  • 当您停止竞价型实例时,您的竞价型实例请求处于 disabled 状态。

如果您的竞价型实例请求处于 active 状态,且关联的竞价型实例正在运行,那么取消请求不会终止该实例。有关终止竞价型实例的更多信息,请参阅终止竞价型实例

取消竞价型实例请求(控制台)

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

  2. 在导航窗格中,选择 Spot Requests (Spot 请求),然后选择 Spot 请求。

  3. 依次选择操作取消请求

  4. (可选) 如果不再使用关联的竞价型实例,可以将其终止。在取消竞价请求对话框中,选择终止实例,然后选择确认

取消竞价型实例请求 (Amazon CLI)

  • 使用 cancel-spot-instance-requests 命令可取消指定的竞价型实例请求。

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-08b93456

停止竞价型实例

如果您现在不需要竞价型实例,但希望在以后重启它们且不会丢失 Amazon EBS 卷中保留的数据,您可以停止它们。停止竞价型实例的步骤与停止按需型实例的步骤类似。

注意

在停止竞价型实例后,您可以修改其部分实例属性,但不能修改实例类型。

我们不会对已停止的竞价型实例收费,也不会收取数据传输费,但我们会对所有 Amazon EBS 卷的存储收费。

限制

  • 只有当竞价型实例是从 persistent竞价型实例请求启动时,您才能停止竞价型实例。

  • 如果关联的竞价型实例请求被取消,则无法停止竞价型实例。当竞价型实例请求被取消后,您只能终止竞价型实例。

  • 如果竞价型实例是某个队列或启动组或可用区组的一部分,则无法停止它。

New console

停止竞价型实例(控制台)

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

  2. 在导航窗格中,选择 Instances (实例),然后选择竞价型实例。

  3. 依次选择实例状态停止实例

  4. 当系统提示您确认时,选择 Stop

Old console

停止竞价型实例(控制台)

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

  2. 在导航窗格中,选择 Instances (实例),然后选择竞价型实例。

  3. 依次选择 ActionsInstance StateStop

Amazon CLI

停止竞价型实例(Amazon CLI)

  • 使用 stop-instances 命令手动停止一个或多个竞价型实例。

    aws ec2 stop-instances --instance-ids i-1234567890abcdef0

启动竞价型实例

您可以启动以前停止的竞价型实例。启动竞价型实例的步骤与启动按需型实例的步骤类似。

先决条件

您只能在以下情况下启动竞价型实例:

  • 您手动停止了竞价型实例。

  • 竞价型实例是 EBS 支持的实例。

  • 竞价型实例容量可用。

  • Spot 价格低于您的最高价格。

限制

  • 如果竞价型实例是某个队列或启动组或可用区组的一部分,则无法启动它。

New console

启动竞价型实例(控制台)

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

  2. 在导航窗格中,选择 Instances (实例),然后选择竞价型实例。

  3. 依次选择实例状态启动实例

Old console

启动竞价型实例(控制台)

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

  2. 在导航窗格中,选择 Instances (实例),然后选择竞价型实例。

  3. 依次选择 ActionsInstance StateStart

Amazon CLI

启动竞价型实例(Amazon CLI)

  • 使用 start-instances 命令手动启动一个或多个竞价型实例。

    aws ec2 start-instances --instance-ids i-1234567890abcdef0

终止竞价型实例

如果您终止的运行中或已停止竞价型实例是由持久性竞价型实例请求启动的,则竞价型实例请求会转换为 open 状态,这样就可以启动新的竞价型实例。要确保没有启动新的竞价型实例,您必须首先取消该竞价型实例请求。

如果您取消含有正在运行的竞价型实例的 active竞价型实例请求,则正在运行的竞价型实例不会自动终止;您必须手动终止该竞价型实例。

如果您取消含有已停止的竞价型实例的 disabled竞价型实例请求,则 Amazon EC2 Spot 服务将自动终止已停止的竞价型实例。取消竞价型实例请求与 Spot 服务终止竞价型实例之间可能存在短暂的滞后。

有关取消竞价型实例请求的信息,请参阅 取消竞价型实例请求

New console

使用控制台手动终止竞价型实例

  1. 在终止实例前,请确认您是否会丢失任何数据,方法是确认您的 Amazon EBS 卷是否会在终止时被删除,以及您是否已将所需数据从实例存储卷复制到持久性存储,例如 Amazon EBS 或 Amazon S3。

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

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

  4. 要确认实例是否是竞价型实例,请检查 Instance lifecycle (实例生命周期) 列中是否显示 spot

  5. 选择所需实例,然后依次选择操作实例状态终止实例

  6. 当系统提示您确认时,选择终止

Old console

使用控制台手动终止竞价型实例

  1. 在终止实例前,请确认您是否会丢失任何数据,方法是确认您的 Amazon EBS 卷是否会在终止时被删除,以及您是否已将所需数据从实例存储卷复制到持久性存储,例如 Amazon EBS 或 Amazon S3。

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

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

  4. 要确认实例是否是竞价型实例,请检查 Lifecycle (生命周期) 列中是否显示 spot

  5. 选择所需实例,然后依次选择 ActionsInstance StateTerminate

  6. 当系统提示您确认时,选择 Yes, Terminate

Amazon CLI

使用 Amazon CLI 手动终止竞价型实例

  • 使用 terminate-instances 命令可手动终止竞价型实例。

    aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7