Spot 請求狀態 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Spot 請求狀態

為協助您追蹤 Spot 執行個體請求並規劃 Spot 執行個體的使用,請使用 Amazon EC2 提供的請求狀態。例如,請求狀態可提供 Spot 請求尚未完成的理由,或列出阻礙完成 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 pendingrunning
fulfilled active stoppedrunning

如果您停止 Spot 執行個體,則 Spot 請求會進入 marked-for-stopinstance-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 執行個體已終止前,可能會有一段延遲時間。在此種情況中,請求的狀態可以是 cancelledclosed

† 當 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 或命令列工具取得要求狀態資訊。

使用主控台取得要求狀態資訊
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在瀏覽窗格中,選取 Spot 請求 ,然後選取 Spot 請求。

  3. 若要檢查狀態,請在描述索引標籤上檢查狀態欄位。

使用命令列來取得請求狀態資訊

您可以使用下列其中一個命令。如需有關這些命令列介面的詳細資訊,請參閱存取 Amazon EC2

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-userspot-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-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 使用者指南