Jobs とジョブ実行の状態
以下のセクションでは、AWS IoT job のライフサイクルとジョブ実行のライフサイクルについて説明します。
ジョブの状態
次の図は、AWS IoT job のさまざまな状態を示しています。
AWS IoT Jobs を使用して作成したジョブは、次のいずれかの状態になります。
-
SCHEDULED
AWS IoT コンソール、CreateJob API、または CreateJobTemplate API を使用して最初のジョブまたはジョブテンプレートを作成する際に、AWS IoT コンソールまたは CreateJob API の
SchedulingConfig
、または CreateJobTemplate API でオプションのスケジューリング設定を選択できます。特定のstartTime
、endTime
、endBehavoir
を含むスケジューリングされたジョブを開始すると、ジョブのステータスは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
が指定されていない場合、連続ジョブは引き続きジョブドキュメントのロールアウトを実行します。
-
スナップショットジョブの場合、すべてのジョブ実行が
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 Jobs は、以前に作成したジョブ実行の削除を開始します。すべてのジョブ実行が削除されると、AWS アカウントからジョブが消えます。
Job 実行の状態
次の表は、AWS IoT ジョブ実行のさまざまな状態と、状態の変化がデバイスによって開始されたのか、AWS IoT ジョブによって開始されたのかを示しています。
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
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 は、コンソールや
CancelJob
、CancelJobExecution
API を使用してジョブをキャンセルした場合、または ジョブの中止設定 で指定した中止条件を満たした場合、ジョブをキャンセルしてジョブ実行状態をCANCELED
に設定します。