Spot 請求狀態
為協助您追蹤 Spot 執行個體請求並規劃 Spot 執行個體的使用,請使用 Amazon EC2 提供的請求狀態。例如,請求狀態可提供 Spot 請求尚未完成的理由,或列出阻礙完成 Spot 請求的限制。
在程序的每個步驟中— (此程序也稱為 Spot 請求生命週期)—,特定的事件會決定相繼請求的狀態。
Spot 請求的生命週期
下圖顯示 Spot 請求在整個生命週期的期間中可遵循的路徑 (從提交到終止)。每個步驟皆以節點表示,而每個節點的狀態碼則描述了 Spot 請求和 Spot 執行個體的狀態。

等待評估
除非有一個或多個請求參數無效 (pending-evaluation
),否則當您建立 Spot 執行個體請求後,它就會立即進入 bad-parameters
狀態。
狀態碼 | 請求狀態 | 執行個體狀態 |
---|---|---|
pending-evaluation |
open |
不適用 |
bad-parameters |
closed |
不適用 |
保留
如果有一個或多個請求限制為有效但尚未滿足,或是沒有足夠的容量,則請求會進入保留狀態,以等待限制條件滿足。請求選項會影響請求完成的可能性。例如,如果沒有容量,則請求會持續處於保留狀態,直到有可用的容量為止。如果指定了可用區域群組,則請求會持續處於保留狀態,直到可用區域的限制條件滿足。
如果其中一個可用區域中斷,其他可用區域內的 Spot 執行個體請求可用的備用 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
|
不適用 |
等待評估/實現-終止
如果所建立的請求只在特定期間內有效,而且在請求進入待完成階段之前,此期間就會到期,則此 Spot 執行個體請求可以進入 terminal
狀態。如果您取消請求或系統發生錯誤,也會發生此狀況。
狀態碼 | 請求狀態 | 執行個體狀態 |
---|---|---|
schedule-expired
|
cancelled
|
不適用 |
canceled-before-fulfillment ¹ |
cancelled
|
不適用 |
bad-parameters
|
failed
|
不適用 |
system-error
|
closed
|
不適用 |
¹ 若您取消請求。
等待實現
當您所指定的限制條件 (如果有的話) 已滿足,則 Spot 請求會進入 pending-fulfillment
狀態。
此時,Amazon EC2 會準備佈建您所請求的執行個體。如果程序在此時停止,可能是因為使用者已在啟動 Spot 執行個體前取消程序。也可能是因為發生未預期的系統錯誤。
狀態碼 | 請求狀態 | 執行個體狀態 |
---|---|---|
pending-fulfillment
|
open
|
不適用 |
已實現
當滿足 Spot 執行個體的所有規格時,Spot 請求即已完成。Amazon EC2 會啟動 Spot 執行個體,這可能需要幾分鐘。如果 Spot 執行個體已進入休眠或是在中斷時停止,它將會繼續處於此狀態,直到請求可以再次完成或取消。
狀態碼 | 請求狀態 | 執行個體狀態 |
---|---|---|
fulfilled
|
active
|
pending → running
|
fulfilled
|
active
|
stopped → running
|
如果您停止 Spot 執行個體,則 Spot 請求會進入 marked-for-stop
或 instance-stopped-by-user
狀態,直到 Spot 執行個體可以再次啟動或取消請求為止。
狀態碼 | 請求狀態 | 執行個體狀態 |
---|---|---|
marked-for-stop
|
active |
stopping
|
instance-stopped-by-user ¹ |
disabled 或是 cancelled ² |
stopped
|
¹ 如果您停止執行個體或從執行個體執行 shutdown 指令,Spot 執行個體就會進入 instance-stopped-by-user
狀態。停止執行個體之後,您可以重新啟動它。重新啟動時,Spot 執行個體請求返回 pending-evaluation
狀態,然後在符合限制時 Amazon EC2 會啟動新的 Spot 執行個體。
² 如果您停止 Spot 執行個體但不取消請求,Spot 請求狀態則為 disabled
。如果 Spot 執行個體已停止且請求到期,請求狀態則為 cancelled
。
已實現-終止
只要有該執行個體類型可用的容量,且您未終止執行個體,您的Spot 執行個體就會持續運作。如果 Amazon EC2 必須終止 Spot 執行個體,則 Spot 請求會進入終止狀態。如果取消 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
。即使您在取消 Spot 執行個體的請求之前就先終止它,在 Amazon EC2 偵測到 Spot 執行個體已終止前,可能會有一段延遲時間。在此種情況中,請求的狀態可以是 cancelled
或 closed
。
† 當 Amazon EC2 中斷 Spot 執行個體 (若其需要回收容量)和將執行個體設定為中斷時終止,狀態會立即設定為 instance-terminated-no-capacity
(其未設定為 marked-for-termination
)。但是,執行個體會保留在 running
狀態 2 分鐘,反映執行個體收到 Spot 執行個體中斷通知的 2 分鐘時段。2 分鐘後,執行個體狀態設定為 terminated
。
永久性請求
當 Spot 執行個體終止時 (由您或 Amazon EC2 終止),如果 Spot 請求為持久性請求,則會回到 pending-evaluation
狀態,之後 Amazon EC2 就可以在滿足限制條件時啟動新的 Spot 執行個體。
取得請求狀態資訊
您可以使用 AWS Management Console 或命令列工具來取得請求狀態資訊。
取得請求狀態資訊 (主控台)
-
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在瀏覽窗格中,選取 Spot 請求 ,然後選取 Spot 請求。
-
若要檢查狀態,請在描述索引標籤上檢查狀態欄位。
使用命令列來取得請求狀態資訊
您可以使用下列其中一個命令。如需關於這些命令列介面的詳細資訊,請參閱 存取 Amazon EC2。
-
describe-spot-instance-requests (AWS CLI)
-
Get-EC2SpotInstanceRequest (AWS Tools for Windows PowerShell)
Spot 請求狀態碼
Spot 請求狀態資訊包含狀態碼、更新時間和狀態訊息。綜合這些資訊,可協助您決定 Spot 請求的處理方式。
下列是 Spot 請求的狀態碼:
az-group-constraint
-
Amazon EC2 無法在同一個可用區域中,啟動您請求的所有執行個體。
bad-parameters
-
Spot 請求的一個或多個參數無效 (例如,指定的 AMI 不存在)。狀態訊息會顯示哪個參數無效。
canceled-before-fulfillment
-
Spot 請求在完成之前已遭到使用者取消。
capacity-not-available
-
您所請求的執行個體沒有足夠的可用容量。
constraint-not-fulfillable
-
無法完成 Spot 請求,因為有一個或多個限制條件無效 (例如,可用區域不存在)。狀態訊息會顯示哪個限制條件無效。
fulfilled
-
Spot 請求是
active
,並且 Amazon EC2 正在啟動您的 競價型執行個體。 instance-stopped-by-price
-
您的執行個體已停止,因為 Spot 價格超過您的最高價格。
instance-stopped-by-user
-
您的執行個體已停止,因為使用者已停止該執行個體或從該執行個體執行關機命令。
instance-stopped-no-capacity
-
由於 EC2 容量管理需求,您的執行個體已停止。
instance-terminated-by-price
-
您的執行個體已終止,因為 Spot 價格超過您的最高價格。如果請求為永久性,程序會重新開始執行,因此請求會處於等待評估的狀態。
instance-terminated-by-schedule
-
您的 Spot 執行個體已在排程持續時間結束時終止。
instance-terminated-by-service
-
執行個體會從停止狀態終止。
instance-terminated-by-user
或spot-instance-terminated-by-user
-
您終止了已完成的 Spot 執行個體,因此請求狀態為
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
-
Spot 執行個體已標記停止。
marked-for-termination
-
Spot 執行個體已標記終止。
not-scheduled-yet
-
在尚未達到排程日期之前,將不會評估 Spot 請求。
pending-evaluation
-
在您發出 Spot 執行個體請求後,在系統評估請求的參數時,該請求會進入
pending-evaluation
狀態。 pending-fulfillment
-
Amazon EC2 正在嘗試佈建 競價型執行個體。
placement-group-constraint
-
尚無法完成 Spot 請求,因為目前無法將 Spot 執行個體加入置放群組。
price-too-low
-
尚無法完成 Spot 請求,因為最高價格低於 Spot 價格。在這種情況中,不會啟動任何執行個體,而請求的狀態仍為
open
。 request-canceled-and-instance-running
-
您在 競價型執行個體仍在執行時取消了 Spot 請求。請求已
cancelled
,但執行個體仍處於running
狀態。 schedule-expired
-
Spot 請求已過期,因為未在指定日期之前完成。
system-error
-
出現未預期的系統錯誤。如果此問題重複出現,請聯絡 AWS Support 取得協助。
EC2 Spot 執行個體請求履行事件
履行 Spot 執行個體請求後,Amazon EC2 會將 EC2 Spot 執行個體請求履行事件傳送至 Amazon EventBridge。您可以建立規則以在發生此事件時採取動作,例如叫用 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 使用者指南》。