Jobs とジョブ実行の状態 - AWS IoT Core

Jobs とジョブ実行の状態

以下のセクションでは、AWS IoT job のライフサイクルとジョブ実行のライフサイクルについて説明します。

ジョブの状態

次の図は、AWS IoT job のさまざまな状態を示しています。

AWS IoT job のさまざまな状態を示すイメージ。

AWS IoT Jobs を使用して作成したジョブは、次のいずれかの状態になります。

  • SCHEDULED

    AWS IoT コンソール、CreateJob API、または CreateJobTemplate API を使用して最初のジョブまたはジョブテンプレートを作成する際に、AWS IoT コンソールまたは CreateJob API の SchedulingConfig、または CreateJobTemplate API でオプションのスケジューリング設定を選択できます。特定の startTimeendTimeendBehavoir を含むスケジューリングされたジョブを開始すると、ジョブのステータスは SCHEDULED に更新されます。ジョブが選択した startTime または次のメインテナンスウィンドウの startTime に到達すると (メンテナンスウィンドウ中にジョブのロールアウトを選択した場合)、ステータスが SCHEDULED から IN_PROGRESS に更新され、ターゲットグループ内のすべてのデバイスへのジョブドキュメントのロールアウトが開始されます。

  • IN_PROGRESS

    AWS IoT コンソールまたは CreateJob API を使用してジョブを作成すると、ジョブステータスが IN_PROGRESS に更新されます。ジョブ作成中、AWS IoT ジョブは、ターゲットグループ内のデバイスへのジョブ実行のロールアウトを開始します。すべてのジョブ実行がロールアウトされたら、AWS IoT Jobs は、デバイスがリモートアクションを完了するまで待機します。

    進行中のジョブに適用される同時実行性と制限については、「ジョブの制限」を参照してください。

    注記

    IN_PROGRESS ジョブが現在のメンテナンスウィンドウの終わりに達すると、ジョブドキュメントのロールアウトは停止します。ジョブは次のメンテナンスウィンドウの startTime まで SCHEDULED に更新されます。

  • COMPLETED

    連続ジョブは、以下のいずれかの方法で処理されます。

    • オプションのスケジュール設定が選択されていない連続ジョブは、常に実行され、ターゲットグループに追加された新しいデバイスに対して引き続き実行されます。ステータスが COMPLETED になることはありません。

    • オプションのスケジュール設定が選択されている連続ジョブの場合、次のことが当てはまります。

      • endTime が指定されている場合、連続ジョブは、endTime が経過し、すべてのジョブ実行が終了ステータスに達した時点で COMPLETED ステータスになります。

      • オプションのスケジュール設定で endTime が指定されていない場合、連続ジョブは引き続きジョブドキュメントのロールアウトを実行します。

    スナップショットジョブの場合、すべてのジョブ実行が SUCCEEDEDFAILEDTIMED_OUTREMOVED、または CANCELED などの終了状態になると、ジョブステータスは COMPLETED に変わります。

  • CANCELED

    AWS IoT コンソール、CancelJob API、または ジョブの中止設定 を使用してジョブをキャンセルした場合、ジョブのステータスが CANCELED に変わります。ジョブのキャンセル中、AWS IoT ジョブは、以前に作成したジョブ実行のキャンセルを開始します。

    キャンセルされるジョブに適用される同時実行性と制限については、「ジョブの制限」を参照してください。

  • DELETION_IN_PROGRESS

    AWS IoT コンソール、DeleteJob API を使用してジョブを削除すると、ジョブのステータスは DELETION_IN_PROGRESS に変わります。ジョブの削除中に、AWS IoT Jobs は、以前に作成したジョブ実行の削除を開始します。すべてのジョブ実行が削除されると、AWS アカウントからジョブが消えます。

Job 実行の状態

次の表は、AWS IoT ジョブ実行のさまざまな状態と、状態の変化がデバイスによって開始されたのか、AWS IoT ジョブによって開始されたのかを示しています。

Job 実行の状態とソース
Job 実行の状態 デバイスによって開始されましたか? AWS IoT Jobs によって開始されましたか? ターミナルステータス? 再試行できますか。
QUEUED いいえ はい いいえ 該当しない
IN_PROGRESS はい いいえ いいえ 該当しない
SUCCEEDED はい いいえ はい 該当しない
FAILED はい いいえ はい はい
TIMED_OUT いいえ はい はい はい
REJECTED はい いいえ はい いいえ
REMOVED いいえ はい はい いいえ
CANCELED いいえ はい はい いいえ

次のセクションでは、AWS IoT Jobs でジョブを作成したときにロールアウトされるジョブ実行のステータスについて詳しく説明します。

  • QUEUED

    AWS IoT Jobs がターゲットデバイスに対してジョブ実行をロールアウトすると、ジョブ実行ステータスは QUEUED に設定されます。ジョブ実行は、以下を行うまで QUEUED 状態のままになります。

    • デバイスでジョブの実行を受け取り、ジョブ API オペレーションを呼び出し、ステータスを IN_PROGRESS とレポートします。

    • ジョブまたはジョブ実行をキャンセルするか、指定した中止基準を満たした場合、ステータスが CANCELED に変わります。

    • デバイスがターゲットグループから削除され、ステータスが REMOVED に変わります。

    キューに入れられたジョブ実行がどのように IN_PROGRESS に状態を変化させるか、およびデバイスがジョブ作成要求を受け入れない場合にジョブが REJECTED になるかを示す画像。
  • IN_PROGRESS

    IoT デバイスが予約済み ジョブのトピック $notify および $notify-next、 にサブスクライブしており、デバイスが、IN_PROGRESS ステータスの StartNextPendingJobExecution API または UpdateJobExecution API を呼び出した場合、AWS IoT ジョブはジョブ実行ステータスを IN_PROGRESS に設定します。

    UpdateJobExecution API は、ステータス IN_PROGRESS で複数回呼び出すことができます。statusDetails オブジェクトを使用して、実行ステップに関する追加の詳細を指定できます。

    注記

    デバイスごとに複数のジョブを作成する場合は、AWS IoT ジョブと MQTT プロトコルは、配信の順序を保証するものではありません。

  • 成功

    デバイスがリモートオペレーションを正常に完了したら、デバイスは、ジョブ実行が成功したことを示す SUCCEEDED というステータスで UpdateJobExecution APIを呼び出す必要があります。AWS IoTその後、Jobs はジョブ実行のステータスを更新し、SUCCEEDED として返します。

    進行中のジョブが失敗する場合、および実行を再試行する方法を示す画像。
  • FAILED

    デバイスがリモート操作を完了できなかった場合、デバイスはジョブ実行に失敗したことを示す Failed というステータスで UpdateJobExecution APIを呼び出す必要があります。AWS IoTその後、Jobs はジョブ実行のステータスを更新し、Failed として返します。このジョブの実行は、ジョブ実行再試行設定 を使用してデバイスに対して再試行することができます。

    進行中のジョブが失敗する場合、および実行を再試行する方法を示す画像。
  • TIMED_OUT

    ステータスが IN_PROGRESS のとき、デバイスがジョブステップを完了できない場合、または進行中タイマーのタイムアウト時間内にリモート操作を完了できない場合、AWS IoT Jobs はジョブの実行ステータスを TIMED_OUT に設定します。また、進行中のジョブの各ジョブステップにステップタイマーがあり、ジョブの実行にのみ適用されます。進行中のタイマー時間は ジョブ実行タイムアウトの設定inProgressTimeoutInMinutes プロパティを使用して指定されます。このジョブの実行は、ジョブ実行再試行設定 を使用してデバイスに対して再試行することができます。

    進行中のジョブの実行がタイムアウトする方法と、実行を再試行する方法を示す画像。
  • 拒否

    デバイスが無効または互換性のないリクエストを受信すると、デバイスは REJECTED というステータスで UpdateJobExecution APIを呼び出す必要があります。AWS IoTその後、Jobs はジョブ実行のステータスを更新し、REJECTED として返します。

  • 削除済み

    デバイスが、モノの動的モノグループからデタッチされた場合など、ジョブ実行の有効なターゲットでなくなった場合、AWS IoT Jobs は、ジョブの実行ステータスを REMOVED に設定します。モノをターゲットグループに再アタッチし、デバイスのジョブ実行を再開できます。

  • CANCELED

    AWS IoT Jobs は、コンソールや CancelJobCancelJobExecution API を使用してジョブをキャンセルした場合、または ジョブの中止設定 で指定した中止条件を満たした場合、ジョブをキャンセルしてジョブ実行状態を CANCELED に設定します。