Spot 请求状态 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Spot 请求状态

要帮助跟踪您的竞价型实例请求和规划您对竞价型实例的使用,请使用 Amazon EC2 提供的请求状态。例如,请求状态可以提供尚未完成 Spot 请求的原因,或者列出妨碍完成 Spot 请求的限制。

在此过程(也称为 Spot 请求生命周期)中的每一步,都有特定事件确定连续的请求状态。

Spot 请求的生命周期

以下图表显示您的 Spot 请求在其整个生命周期 (从提交到终止) 所遵循的路径。每个步骤用节点表示,每个节点状态代码描述您的 Spot 请求和竞价型实例的状态。


					竞价型实例请求的生命周期。
待评估

当您创建竞价型实例请求之后,除非一个或多个请求参数无效(bad-parameters),否则该请求就会进入 pending-evaluation 状态。

状态代码 请求状态 实例状态
pending-evaluation open 不适用
bad-parameters closed 不适用
暂停

如果一个或多个请求限制有效但目前无法满足,或者如果没有足够的容量,那么请求将进入暂挂状态,等待满足限制。请求选项影响请求完成的可能性。例如,如果没有容量可用,您的请求将会保持暂挂状态,直到有容量可用为止。如果您指定了可用区组,则该请求将保持为暂挂状态,直至满足可用区的限制。

如果其中一个可用区中断,则可能会影响其他可用区中可用于竞价型实例请求的备用 EC2 容量。

状态代码 请求状态 实例状态
capacity-not-available open

不适用

price-too-low open

不适用

not-scheduled-yet open

不适用

launch-group-constraint open

不适用

az-group-constraint open

不适用

placement-group-constraint open

不适用

constraint-not-fulfillable open

不适用

等待评估/最终执行

如果您创建的请求仅在特定时段内有效,但该时段在您的请求到达等待执行阶段之前过期,则您的竞价型实例请求可能会进入 terminal 状态。如果您取消请求,或者出现系统错误,请求也可能会进入该状态。

状态代码 请求状态 实例状态
schedule-expired cancelled

不适用

canceled-before-fulfillment ¹ cancelled

不适用

bad-parameters failed

不适用

system-error closed

不适用

¹ 如果您取消请求。

等待履行

如果满足指定的限制(如有),您的 Spot 请求将会进入 pending-fulfillment 状态。

此时,Amazon EC2 已经准备好为您预置您请求的实例。如果该过程在此时停止,则可能是因为用户在启动竞价型实例之前取消了请求。也可能是因为出现了意外的系统错误。

状态代码 请求状态 实例状态
pending-fulfillment open

不适用

已完成

当您的竞价型实例的所有规范都得到满足时,您的竞价型实例就会执行。Amazon EC2 会启动竞价型实例,这可能需要几分钟的时间。如果竞价型实例在中断时休眠或停止,它将保持该状态,直到可以再次完成该请求或取消该请求。

状态代码 请求状态 实例状态
fulfilled active pendingrunning
fulfilled active stoppedrunning

如果您停止竞价型实例,则 Spot 请求将进入 marked-for-stopinstance-stopped-by-user 状态,直到竞价型实例可以重新启动或者取消了请求。

状态代码 请求状态 实例状态
marked-for-stop active stopping
instance-stopped-by-user ¹ disabledcancelled ² stopped

¹ 如果您停止实例或从实例运行 shutdown 命令,则竞价型实例将进入 instance-stopped-by-user 状态。停止实例后,您可以重新启动它。重新启动时,竞价型实例请求将返回 pending-evaluation 状态,然后 Amazon EC2 在满足约束时启动一个新的竞价型实例。

² 如果您停止竞价型实例但不取消请求,则 Spot 请求状态为 disabled。如果您的竞价型实例已停止并且请求已过期,则请求状态为 cancelled

执行的最终

只要实例类型具有可用的容量,并且您未终止竞价型实例,这些实例就会继续运行。如果 Amazon EC2 必须终止竞价型实例,竞价型请求将会进入终止状态。如果取消 Spot 请求或终止竞价型实例,请求也将进入终止状态。

状态代码 请求状态 实例状态
request-canceled-and-instance-running cancelled running
marked-for-stop active running
marked-for-termination active running
instance-stopped-by-price disabled stopped
instance-stopped-by-user disabled stopped
instance-stopped-no-capacity disabled stopped
instance-terminated-by-price closed(一次性),open(持久性) terminated
instance-terminated-by-schedule closed terminated
instance-terminated-by-service cancelled terminated
instance-terminated-by-user closedcancelled ¹ terminated
instance-terminated-no-capacity closed(一次性),open(持久性) running
instance-terminated-no-capacity closed(一次性),open(持久性) terminated
instance-terminated-launch-group-constraint closed(一次性),open(持久性) terminated

¹ 如果您终止实例但未取消请求,则请求状态为 closed。如果您终止实例并取消请求,则请求状态为 cancelled。即使您在取消实例请求之前终止了竞价型实例,Amazon EC2 检测您的竞价型实例已终止的过程可能会有延迟。在这种情况下,请求状态可能是 closedcancelled

† Amazon EC2 中断竞价型实例时(如果其需要恢复容量该实例配置为在中断时终止),状态将立即设置为 instance-terminated-no-capacity(如果未设置为 marked-for-termination)。但是,实例会保持 2 分钟 running 状态,以反映实例收到竞价型实例中断通知的 2 分钟时间段。2 分钟后,实例状态设置为 terminated

持久性请求:

当您的竞价型实例终止(由您或由 Amazon EC2)时,如果 Spot 请求为持久性请求,则该请求返回 pending-evaluation 状态,并且在满足约束时,Amazon EC2 可以启动新的竞价型实例。

获取请求状态信息

您可以使用 Amazon Web Services Management Console或命令行工具获取请求状态信息。

获取请求状态信息(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 要检查状态,请在 Description (描述) 选项卡上检查 Status (状态) 字段。

使用命令行获取请求状态信息

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

Spot 请求状态代码

Spot 请求状态信息包含状态代码、更新时间以及状态消息。这些信息帮助您确定如何处理 Spot 请求。

下面是 Spot 请求状态代码:

az-group-constraint

Amazon EC2 无法在同一可用区中启动您请求的所有实例。

bad-parameters

您的 Spot 请求的一个或多个参数无效 (例如,您指定的 AMI 不存在)。状态消息指示哪个参数无效。

canceled-before-fulfillment

在完成前,用户取消了竞价请求。

capacity-not-available

您请求的实例没有足够的容量可用。

constraint-not-fulfillable

由于一个或多个限制无效 (例如,可用区不存在),Spot 请求无法完成。状态消息指示哪个限制无效。

fulfilled

Spot 请求处于 active 状态,Amazon EC2 正在启动您的 Spot 实例。

instance-stopped-by-price

您的实例已停止,因为 Spot 价格超出了您的最高价格。

instance-stopped-by-user

由于用户停止了实例或从实例运行了 shutdown 命令,您的实例已停止。

instance-stopped-no-capacity

由于 EC2 容量管理需要,您的实例已停止。

instance-terminated-by-price

您的实例已终止,因为 Spot 价格超出了您的最高价格。如果您的请求是持久性的,该过程将重新开始,因此,您的请求将等待进行评估。

instance-terminated-by-schedule

您的竞价型实例在其计划持续时间结束时终止。

instance-terminated-by-service

您的实例从停止状态终止。

instance-terminated-by-user 或者 spot-instance-terminated-by-user**

您终止了已完成的竞价型实例,因此,请求状态为(closed除非这是持久性请求),实例状态为 terminated

instance-terminated-launch-group-constraint

您的启动组中的一个或多个实例已终止,因此不再满足启动组的限制。

instance-terminated-no-capacity

由于标准容量管理流程,您的实例已终止。

launch-group-constraint

Amazon EC2 无法同时启动您请求的所有实例。启动组内的所有实例都一起启动和终止。

limit-exceeded

超过了 EBS 卷数量或总卷存储的限制。有关这些限制以及如何请求提高限制的更多信息,请参阅 Amazon Web Services 一般参考 中的 Amazon EBS 限制

marked-for-stop

竞价型实例被标记为停止。

marked-for-termination

竞价型实例被标记为终止。

not-scheduled-yet

您的 Spot 请求在指定日期之前不会被评估。

pending-evaluation

当您提交竞价型实例请求之后,该请求会进入 pending-evaluation 状态,同时系统会评估您的请求中的参数。

pending-fulfillment

Amazon EC2 正尝试预置竞价型实例。

placement-group-constraint

因为竞价型实例目前不能添加到置放群组中,因此尚无法完成 Spot 请求。

price-too-low

由于您的最高价低于 Spot 价格,无法完成请求。在这种情况下,不会启动任何实例,并且您的请求保持 open 状态。

request-canceled-and-instance-running

在竞价型实例仍在运行时,您取消了 Spot 请求。请求为 cancelled,但是,实例保持为 running

schedule-expired

由于没有在指定日期前完成,Spot 请求已过期。

system-error

出现意外系统错误。如果这是反复出现的问题,请联系 Amazon Web Services Support 以获取帮助。

EC2 竞价型实例请求履行事件

当竞价型实例请求履行后,Amazon EC2 会向 Amazon EventBridge 发送一个 EC2 竞价型实例请求履行事件。您可以创建一条规则,以在此事件发生时执行操作,例如调用某个 Lambda 函数或通知某个 Amazon SNS 主题。

以下是此事件的示例数据。

{ "version": "0", "id": "01234567-1234-0123-1234-012345678901", "detail-type": "EC2 Spot Instance Request Fulfillment", "source": "aws.ec2", "account": "123456789012", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-2", "resources": ["arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890abcdef0"], "detail": { "spot-instance-request-id": "sir-1a2b3c4d", "instance-id": "i-1234567890abcdef0" } }

有关更多信息,请参阅 Amazon EventBridge 用户指南