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
|
pending → running
|
fulfilled
|
active
|
stopped → running
|
如果您停止竞价型实例,则 Spot 请求将进入 marked-for-stop
或 instance-stopped-by-user
状态,直到竞价型实例可以重新启动或者取消了请求。
状态代码 | 请求状态 | 实例状态 |
---|---|---|
marked-for-stop
|
active |
stopping
|
instance-stopped-by-user ¹ |
disabled 或 cancelled ² |
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
|
closed 或 cancelled ¹ |
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 检测您的竞价型实例已终止的过程可能会有延迟。在这种情况下,请求状态可能是 closed
或 cancelled
。
† 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或命令行工具获取请求状态信息。
获取请求状态信息(控制台)
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,请选择 Spot Requests (Spot 请求),然后选择所需的 Spot 请求。
-
要检查状态,请在 Description (描述) 选项卡上检查 Status (状态) 字段。
使用命令行获取请求状态信息
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2。
-
describe-spot-instance-requests (Amazon CLI)
-
Get-EC2SpotInstanceRequest (Amazon Tools for Windows PowerShell)
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 General Reference中的 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
-dd
Thh
:mm
:ss
Z",
"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 用户指南。