本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
任務和任務執行狀態
下列各節說明 AWS IoT 任務的生命週期和任務執行的生命週期。
任務狀態
下圖顯示 AWS IoT 任務的不同狀態。
您使用 任務建立 AWS IoT 的任務可以處於下列其中一種狀態:
-
SCHEDULED
使用 AWS IoT 主控台、 或 CreateJob 建立初始任務或任務範本期間APICreateJobTemplateAPI,您可以在 AWS IoT 主控台或 CreateJobAPI或 CreateJobTemplate
SchedulingConfig
中選取選用的排程組態API。當您啟動包含特定startTime
、endTime
和endBehavoir
的排程任務時,任務狀態會更新為SCHEDULED
。當任務達到您選取的startTime
或下一個維護時段的startTime
(如果您選取了在維護時段推展任務),狀態會從SCHEDULED
更新為IN_PROGRESS
,並開始將任務文件推展至目標群組中的所有裝置。 -
IN_PROGRESS
當您使用 AWS IoT 主控台或 CreateJob 建立任務時API,任務狀態會更新為
IN_PROGRESS
。在建立任務期間, AWS IoT 任務開始將任務執行推展到目標群組中的裝置。在所有任務執行推展完畢之後, AWS IoT 任務會等待裝置完成遠端動作。如需套用至進行中任務的並行和限制的相關資訊,請參閱 任務限制。
注意
當
IN_PROGRESS
任務到達目前維護時段結束時,任務文件的展開就會停止。任務將更新為SCHEDULED
,直到下一個維護時段的startTime
。 -
COMPLETED
會以下列其中一種方式處理連續任務:
-
對於未選取選用排程組態的連續任務,它會始終在進行中,持續為新增至目標群組的任何新裝置執行。它永遠不會達到
COMPLETED
的狀態。 -
對於具有選用排程組態的連續任務,則會發生下列情況:
-
如果有提供
endTime
,則連續任務將在超過endTime
且所有任務執行都達到結束狀態時進入COMPLETED
狀態。 -
如果選用排程組態中未提供
endTime
,則連續任務會繼續執行任務文件推展。
-
對於快照任務,任務狀態會在所有任務執行進入終端狀態 (例如
SUCCEEDED
、FAILED
、TIMED_OUT
、REMOVED
或CANCELED
) 時變更為COMPLETED
。 -
-
CANCELED
當您使用 AWS IoT 主控台、 CancelJob API或 取消任務時 任務中止組態,任務狀態會變更為
CANCELED
。在任務取消期間, AWS IoT 任務會開始取消先前建立的任務執行。如需套用至取消中任務的並行和限制的相關資訊,請參閱 任務限制。
-
DELETION_IN_PROGRESS
當您使用 AWS IoT 主控台或 DeleteJob 刪除任務時API,任務狀態會變更為
DELETION_IN_PROGRESS
。在刪除任務期間, AWS IoT 任務會開始刪除先前建立的任務執行。刪除所有任務執行後,任務會從 AWS 您的帳戶消失。
任務執行狀態
下表顯示 AWS IoT 任務執行的不同狀態,以及狀態變更是由裝置或 AWS IoT 任務啟動。
任務執行狀態 | 由裝置起始? | 由 AWS IoT 任務啟動? | 結束狀態? | 可否重試? |
---|---|---|---|---|
QUEUED |
否 | 是 | 否 | 不適用 |
IN_PROGRESS |
是 | 否 | 否 | 不適用 |
SUCCEEDED |
是 | 否 | 是 | 不適用 |
FAILED |
是 | 否 | 是 | 是 |
TIMED_OUT |
否 | 是 | 是 | 是 |
REJECTED |
是 | 否 | 是 | 否 |
REMOVED |
否 | 是 | 是 | 否 |
CANCELED |
否 | 是 | 是 | 否 |
下一節將詳細說明當您使用 任務建立任務時,所推出 AWS IoT 之任務執行的狀態。
-
QUEUED
當 AWS IoT 任務為目標裝置推出任務執行時,任務執行狀態會設定為
QUEUED
。任務執行會維持在QUEUED
狀態,直到:-
您的裝置接收任務執行並叫用任務API操作,並將狀態報告為
IN_PROGRESS
。 -
您取消任務或任務執行,或在符合您指定的中止條件時,狀態會變更為
CANCELED
。 -
您的裝置已從目標群組中移除,且狀態變更為
REMOVED
。
-
-
IN_PROGRESS
如果您的 IoT 裝置訂閱預留的 任務主題
$notify
和$notify-next
,且您的裝置調用StartNextPendingJobExecution
API或 狀態UpdateJobExecution
API為 的IN_PROGRESS
, AWS IoT 則工作會將任務執行狀態設定為IN_PROGRESS
。UpdateJobExecution
API 可以多次叫用,狀態為IN_PROGRESS
。您可以使用statusDetails
物件來指定關於執行步驟的其他詳細資訊。注意
如果您為每個裝置建立多個任務, AWS IoT 則任務和MQTT通訊協定不保證交付順序。
-
SUCCEEDED
當您的裝置成功完成遠端操作時,裝置必須叫用 狀態
UpdateJobExecution
API為 的SUCCEEDED
,以表示任務執行成功。 AWS IoT 然後,任務會更新並傳回任務執行狀態為SUCCEEDED
。 -
FAILED
當您的裝置無法完成遠端操作時,裝置必須以
UpdateJobExecution
API 的狀態叫用Failed
,以表示任務執行失敗。然後 AWS IoT ,任務會更新並傳回任務執行狀態為Failed
。您可以使用 任務執行重試組態 未裝置重試此任務執行。 -
TIMED_OUT
當您的裝置在狀態為 時無法完成任務步驟
IN_PROGRESS
,或無法在進行中計時器的逾時持續時間內完成遠端操作時, AWS IoT 任務會將任務執行狀態設定為TIMED_OUT
。您也可以為進行中任務的每個任務步驟設定一個步驟計時器,且僅適用於任務執行。此進行中計時器期間使用 任務執行逾時組態 的inProgressTimeoutInMinutes
屬性指定。您可以使用 任務執行重試組態 未裝置重試此任務執行。 -
REJECTED
當您的裝置收到無效或不相容的請求時,裝置必須以
REJECTED
. AWS IoT JobsUpdateJobExecution
API 的狀態叫用 ,然後更新並傳回任務執行狀態為REJECTED
。 -
REMOVED
當您的裝置不再是任務執行的有效目標時,例如當它與動態物件群組分離時, AWS IoT 任務會將任務執行狀態設置為
REMOVED
。您可以將物件重新附加到目標群組,然後重新啟動裝置的任務執行。 -
CANCELED
當您使用主控台或 或
CancelJob
CancelJobExecution
取消任務執行API,或 任務中止組態滿足使用 指定的中止條件時, AWS IoT 任務會取消任務,並將任務執行狀態設定為CANCELED
。