任務和任務執行狀態 - AWS IoT Core

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

任務和任務執行狀態

下列各節說明 AWS IoT 任務的生命週期和任務執行的生命週期。

任務狀態

下圖顯示 AWS IoT 任務的不同狀態。

顯示 AWS IoT 任務不同狀態的圖片。

您使用 任務建立 AWS IoT 的任務可以處於下列其中一種狀態:

  • SCHEDULED

    使用 AWS IoT 主控台、 或 CreateJob 建立初始任務或任務範本期間APICreateJobTemplateAPI,您可以在 AWS IoT 主控台或 CreateJobAPI或 CreateJobTemplate SchedulingConfig中選取選用的排程組態API。當您啟動包含特定 startTimeendTimeendBehavoir 的排程任務時,任務狀態會更新為 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,則連續任務會繼續執行任務文件推展。

    對於快照任務,任務狀態會在所有任務執行進入終端狀態 (例如 SUCCEEDEDFAILEDTIMED_OUTREMOVEDCANCELED) 時變更為 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,以及裝置不接受任務建立請求REJECTED時如何取得任務的圖片。
  • IN_PROGRESS

    如果您的 IoT 裝置訂閱預留的 任務主題$notify$notify-next,且您的裝置調用 StartNextPendingJobExecutionAPI或 狀態UpdateJobExecutionAPI為 的 IN_PROGRESS, AWS IoT 則工作會將任務執行狀態設定為 IN_PROGRESS

    UpdateJobExecution API 可以多次叫用,狀態為 IN_PROGRESS。您可以使用 statusDetails 物件來指定關於執行步驟的其他詳細資訊。

    注意

    如果您為每個裝置建立多個任務, AWS IoT 則任務和MQTT通訊協定不保證交付順序。

  • SUCCEEDED

    當您的裝置成功完成遠端操作時,裝置必須叫用 狀態UpdateJobExecutionAPI為 的 SUCCEEDED,以表示任務執行成功。 AWS IoT 然後,任務會更新並傳回任務執行狀態為 SUCCEEDED

    顯示進行中任務執行會如何發生失敗以及如何重試執行的影像。
  • FAILED

    當您的裝置無法完成遠端操作時,裝置必須以 UpdateJobExecution API 的狀態叫用 Failed,以表示任務執行失敗。然後 AWS IoT ,任務會更新並傳回任務執行狀態為 Failed。您可以使用 任務執行重試組態 未裝置重試此任務執行。

    顯示進行中任務執行會如何發生失敗以及如何重試執行的影像。
  • TIMED_OUT

    當您的裝置在狀態為 時無法完成任務步驟IN_PROGRESS,或無法在進行中計時器的逾時持續時間內完成遠端操作時, AWS IoT 任務會將任務執行狀態設定為 TIMED_OUT。您也可以為進行中任務的每個任務步驟設定一個步驟計時器,且僅適用於任務執行。此進行中計時器期間使用 任務執行逾時組態inProgressTimeoutInMinutes 屬性指定。您可以使用 任務執行重試組態 未裝置重試此任務執行。

    顯示進行中任務執行會如何發生逾時以及如何重試執行的影像。
  • REJECTED

    當您的裝置收到無效或不相容的請求時,裝置必須以 REJECTED. AWS IoT Jobs UpdateJobExecution API 的狀態叫用 ,然後更新並傳回任務執行狀態為 REJECTED

  • REMOVED

    當您的裝置不再是任務執行的有效目標時,例如當它與動態物件群組分離時, AWS IoT 任務會將任務執行狀態設置為 REMOVED。您可以將物件重新附加到目標群組,然後重新啟動裝置的任務執行。

  • CANCELED

    當您使用主控台或 或 CancelJob CancelJobExecution 取消任務執行API,或 任務中止組態滿足使用 指定的中止條件時, AWS IoT 任務會取消任務,並將任務執行狀態設定為 CANCELED