

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Jobs とジョブ実行の状態
<a name="iot-jobs-lifecycle"></a>

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

## ジョブの状態
<a name="iot-jobs-states"></a>

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

![AWS IoT ジョブのさまざまな状態を示す画像。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/job-states-diagram.png)


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

**SCHEDULED**  
コンソール、[CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) API、または [CreateJobTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API を使用した AWS IoT 最初のジョブまたはジョブテンプレートの作成中に、 AWS IoT コンソールまたは [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) API または [CreateJobTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API の `SchedulingConfig` でオプションのスケジューリング設定を選択できます。特定の `startTime`、`endTime`、`endBehavior` を含むスケジューリングされたジョブを開始すると、ジョブのステータスは `SCHEDULED` に更新されます。ジョブが選択した `startTime` または次のメインテナンスウィンドウの `startTime` に到達すると (メンテナンスウィンドウ中にジョブのロールアウトを選択した場合)、ステータスが `SCHEDULED` から `IN_PROGRESS` に更新され、ターゲットグループ内のすべてのデバイスへのジョブドキュメントのロールアウトが開始されます。
+ 

**IN\_PROGRESS**  
 AWS IoT コンソールまたは [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) API を使用してジョブを作成すると、ジョブのステータスは に更新されます`IN_PROGRESS`。ジョブ作成中、 AWS IoT ジョブは、ターゲットグループ内のデバイスへのジョブ実行のロールアウトを開始します。すべてのジョブ実行がロールアウトされたら、 AWS IoT Jobs は、デバイスがリモートアクションを完了するまで待機します。

  進行中のジョブに適用される同時実行性と制限については、「[AWS IoT ジョブの制限](job-limits.md)」を参照してください。
**注記**  
`IN_PROGRESS` ジョブが現在のメンテナンスウィンドウの終わりに達すると、ジョブドキュメントのロールアウトは停止します。ジョブは次のメンテナンスウィンドウの `startTime` まで `SCHEDULED` に更新されます。
+ 

**COMPLETED**  
連続ジョブは、以下のいずれかの方法で処理されます。
  + オプションのスケジュール設定が選択*されていない*連続ジョブは、常に実行され、ターゲットグループに追加された新しいデバイスに対して引き続き実行されます。ステータスが `COMPLETED` になることはありません。
  + オプションのスケジュール設定が選択*されている*連続ジョブの場合、次のことが当てはまります。
    + `endTime` が指定*されている*場合、連続ジョブは、`endTime` が経過し、すべてのジョブ実行が終了ステータスに達した時点で `COMPLETED` ステータスになります。
    + オプションのスケジュール設定で `endTime` が指定*されていない*場合、連続ジョブは引き続きジョブドキュメントのロールアウトを実行します。

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

**CANCELED**  
 AWS IoT コンソール、[CancelJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CancelJob.html) API、または を使用してジョブをキャンセルすると[ ジョブの中止設定](jobs-configurations-details.md#job-abort-using)、ジョブのステータスは に変わります`CANCELED`。ジョブのキャンセル中、 AWS IoT Jobs は以前に作成したジョブ実行のキャンセルを開始します。

  キャンセルされるジョブに適用される同時実行性と制限については、「[AWS IoT ジョブの制限](job-limits.md)」を参照してください。
+ 

**DELETION\_IN\_PROGRESS**  
 AWS IoT コンソールまたは [DeleteJob](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteJob.html) API を使用してジョブを削除すると、ジョブのステータスは に変わります`DELETION_IN_PROGRESS`。ジョブの削除中、 AWS IoT Jobs は以前に作成したジョブ実行の削除を開始します。すべてのジョブ実行が削除されると、ジョブは AWS アカウントから消えます。

## Job 実行の状態
<a name="iot-job-execution-states"></a>

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


**Job 実行の状態とソース**  

| Job 実行の状態 | デバイスによって開始されましたか? |  AWS IoT ジョブによって開始されましたか? | ターミナルステータス? | 再試行できますか。 | 
| --- | --- | --- | --- | --- | 
| QUEUED | いいえ | あり | なし | 該当しない | 
| IN\_PROGRESS | はい | なし | いいえ | 該当しない | 
| SUCCEEDED | はい | なし | はい | 該当しない | 
| FAILED | はい | なし | はい | あり | 
| TIMED\_OUT | なし | はい | はい | はい | 
| REJECTED | あり | なし | あり | なし | 
| REMOVED | なし | はい | あり | なし | 
| CANCELED | なし | はい | あり | なし | 

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

**QUEUED**  
 AWS IoT Jobs がターゲットデバイスのジョブ実行をロールアウトすると、ジョブ実行ステータスは に設定されます`QUEUED`。ジョブ実行は、以下を行うまで `QUEUED` 状態のままになります。
  + デバイスでジョブの実行を受け取り、ジョブ API オペレーションを呼び出し、ステータスを `IN_PROGRESS` とレポートします。
  + ジョブまたはジョブ実行をキャンセルするか、指定した中止基準を満たした場合、ステータスが `CANCELED` に変わります。
  + デバイスがターゲットグループから削除され、ステータスが `REMOVED` に変わります。  
![キューに入れられたジョブ実行がどのように IN_PROGRESS に状態を変化させるか、およびデバイスがジョブ作成要求を受け入れない場合にジョブが REJECTED になるかを示す画像。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/JE-queued-inprogress.png)
+ 

**IN\_PROGRESS**  
IoT デバイスがリザーブド [ジョブのトピック](reserved-topics.md#reserved-topics-job) `$notify` と にサブスクライブし`$notify-next`、デバイスが `StartNextPendingJobExecution` API または ステータスの `UpdateJobExecution` API を呼び出す場合`IN_PROGRESS`、 AWS IoT ジョブはジョブ実行ステータスを に設定します`IN_PROGRESS`。

  `UpdateJobExecution` API は、ステータス `IN_PROGRESS` で複数回呼び出すことができます。`statusDetails` オブジェクトを使用して、実行ステップに関する追加の詳細を指定できます。
**注記**  
デバイスごとに複数のジョブを作成する場合、 AWS IoT ジョブと MQTT プロトコルは配信順序を保証しません。
+ 

**成功**  
デバイスがリモートオペレーションを正常に完了すると、デバイスは ステータスの `UpdateJobExecution` API を呼び出し`SUCCEEDED`て、ジョブの実行が成功したことを示す必要があります。 AWS IoT ジョブは を更新し、ジョブの実行ステータスを として返します`SUCCEEDED`。  
![進行中のジョブが失敗する場合、および実行を再試行する方法を示す画像。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/JE-success-path.png)
+ 

**FAILED**  
デバイスがリモートオペレーションを完了できなかった場合、デバイスは ステータスの `UpdateJobExecution` API を呼び出し`Failed`て、ジョブの実行が失敗したことを示す必要があります。 AWS IoT ジョブは を更新し、ジョブの実行ステータスを として返します`Failed`。このジョブの実行は、[ジョブ実行再試行設定](jobs-configurations-details.md#job-retry-configuration) を使用してデバイスに対して再試行することができます。  
![進行中のジョブが失敗する場合、および実行を再試行する方法を示す画像。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/JE-inprogress-failed.png)
+ 

**TIMED\_OUT**  
ステータスが の場合にデバイスがジョブステップを完了できない場合`IN_PROGRESS`、または進行中のタイマーのタイムアウト期間内にリモートオペレーションを完了できない場合、 AWS IoT Jobs はジョブ実行ステータスを に設定します`TIMED_OUT`。また、進行中のジョブの各ジョブステップにステップタイマーがあり、ジョブの実行にのみ適用されます。進行中のタイマー時間は [ジョブ実行タイムアウトの設定](jobs-configurations-details.md#job-timeout-configuration) の `inProgressTimeoutInMinutes` プロパティを使用して指定されます。このジョブの実行は、[ジョブ実行再試行設定](jobs-configurations-details.md#job-retry-configuration) を使用してデバイスに対して再試行することができます。  
![進行中のジョブの実行がタイムアウトする方法と、実行を再試行する方法を示す画像。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/JE-inprogress-timedout.png)
+ 

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

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

**CANCELED**  
コンソール、、`CancelJob`または `CancelJobExecution` API を使用してジョブをキャンセルするか、ジョブ実行をキャンセルする場合、または を使用して指定された中止基準が満たされた場合、 AWS IoT Jobs [ ジョブの中止設定](jobs-configurations-details.md#job-abort-using)はジョブをキャンセルし、ジョブ実行ステータスを に設定します`CANCELED`。