

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

# Spot 請求的狀態變更
<a name="spot-instances-request-status-lifecycle"></a>

下圖顯示 Spot 請求在整個生命週期的期間中可遵循的路徑 (從提交到終止)。每個步驟皆以節點表示，而每個節點的狀態碼則描述了 Spot 請求和 Spot 執行個體的狀態。

![Spot 執行個體請求的生命週期。](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/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 1  |  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 1  |  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 執行個體中斷](initiate-a-spot-instance-interruption.md)。


| 狀態碼 | 請求狀態 | 執行個體狀態 | 
| --- | --- | --- | 
| 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 執行個體。