本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Spot 請求狀態
為協助您追蹤 Spot 執行個體請求並規劃 Spot 執行個體的使用,請使用 Amazon EC2 提供的請求狀態。例如,請求狀態可提供 Spot 請求尚未完成的理由,或列出阻礙完成 Spot 請求的限制。
在程序的每個步驟中— (此程序也稱為 Spot 請求生命週期)—,特定的事件會決定相繼請求的狀態。
Spot 請求的生命週期
下圖顯示 Spot 請求在整個生命週期的期間中可遵循的路徑 (從提交到終止)。每個步驟皆以節點表示,而每個節點的狀態碼則描述了 Spot 請求和 Spot 執行個體的狀態。
![Spot 執行個體請求的生命週期。](images/spot-request-status-diagram.png)
等待評估
除非有一個或多個請求參數無效 (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
。
中斷實驗
您可以使用 AWS Fault Injection Service 來啟動 Spot 執行個體中斷,以便測試 Spot 執行個體上的應用程式回應方式。如果 AWS FIS 停止 Spot 執行個體,您的 Spot 請求會進入marked-for-stop-by-experiment
狀態,然後進入instance-stopped-by-experiment
狀態。如果 AWS FIS 終止 Spot 執行個體,則您的 Spot 請求會進入該instance-terminated-by-experiment
狀態。如需詳細資訊,請參閱 啟動 Spot 執行個體中斷。
狀態碼 | 請求狀態 | 執行個體狀態 |
---|---|---|
marked-for-stop-by-experiment |
active |
running |
instance-stopped-by-experiment |
disabled |
stopped |
instance-terminated-by-experiment |
closed |
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 執行個體請求履行事件
完成競價型執行個體請求後,Amazon EC2 會將 EC2 競價型執行個體請求履行事件傳送給 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 使用者指南。