

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

# ジョブの 設定
<a name="jobs-configurations"></a>

指定したターゲットにデプロイするジョブごとに、次の追加設定ができます。
+ **ロールアウト**: 毎分ジョブドキュメントを受信するデバイスの数を定義します。
+ **スケジューリング**: 定期的なメンテナンスウィンドウを使用する場合に加えて、将来の日時にジョブをスケジューリングします。
+ **中止**: 一部のデバイスがジョブ通知を受信しない場合や、デバイスがジョブ実行の失敗を報告する場合などに、ジョブをキャンセルします。
+ **タイムアウト** : ジョブの実行の開始後、特定の期間内にジョブターゲットから応答が受信されない場合、ジョブが失敗する可能性があります。
+ **再試行**: ジョブの実行を完了しようとしたときにデバイスが失敗を報告した、またはジョブの実行がタイムアウトした場合に、ジョブ実行を再試行します。

これらの設定を使用すると、ジョブ実行のステータスをモニタリングし、不正な更新がフリート全体に送信されるのを防ぐことができます。

**Topics**
+ [

# ジョブ設定の仕組み
](jobs-configurations-details.md)
+ [

# 追加の設定を指定する
](jobs-configurations-specify.md)

# ジョブ設定の仕組み
<a name="jobs-configurations-details"></a>

ジョブのデプロイ時にロールアウト設定と中止設定を使用し、タイムアウトと再試行設定をジョブの実行に使用します。以下のセクションに、これらの設定の仕組みの詳細を示します。

**Topics**
+ [

## ジョブのロールアウト、スケジュール、中止の設定
](#job-rollout-abort-scheduling)
+ [

## ジョブ実行タイムアウト設定と再試行の設定
](#job-timeout-retry)

## ジョブのロールアウト、スケジュール、中止の設定
<a name="job-rollout-abort-scheduling"></a>

ジョブのロールアウト、スケジューリング、中止の設定を使用して、ジョブドキュメントを受信するデバイスの数を定義し、ジョブのロールアウトをスケジューリングして、ジョブをキャンセルする基準を決定できます。

### ジョブのロールアウト設定
<a name="job-rollout-configuration"></a>

保留中のジョブの実行がターゲットに通知される速度を指定できます。また、ステージングされたロールアウトを作成し、更新、再起動、その他のオペレーションを管理できます。ターゲットの通知方法を指定するには、ジョブのロールアウトレートを使用します。

#### ジョブロールアウトレート
<a name="job-rollout-using"></a>

一定のロールアウトレートまたは指数関数的ロールアウトレートを使用して、ロールアウト設定を作成できます。1 分あたりに通知するジョブターゲットの最大数を指定するには、一定のロールアウトレートを使用します。

AWS IoT ジョブは、さまざまな基準としきい値が満たされると、指数ロールアウトレートを使用してデプロイできます。失敗したジョブの数が、指定した基準のセットと一致する場合、ジョブのロールアウトをキャンセルできます。ジョブのロールアウトレート基準は、ジョブを作成時に、[https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html) オブジェクトを使用して設定します。ジョブの中止基準も、ジョブの作成時に、[https://docs.aws.amazon.com/iot/latest/apireference/API_AbortConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_AbortConfig.html) オブジェクトを使用して設定します。

次の例は、ロールアウトレートの仕組みを示しています。例えば、基本レートが 50 分あたり、増分係数 2、通知および成功したデバイスの数がそれぞれ 1,000 のジョブロールアウトは、次のように機能します。ジョブは、1 分あたり 50 のジョブ実行の割合で開始され、1,000 個のモノがジョブの実行通知を受信するか、1,000 のジョブ実行が成功するまでその割合で継続されます。

次の表で、最初の 4 つのインクリメントでロールアウトを進める方法を示します。


|  |  |  |  |  | 
| --- |--- |--- |--- |--- |
|  分あたりのロールアウトレート  |  50  |  100  |  200  |  400  | 
|  レートの増加を満たすための通知されたデバイス数または成功したジョブ実行数  |  1,000  |  2,000  |  3,000  |  4,000  | 

**注記**  
同時に実行できるジョブの最大数が 500 (`isConcurrent = True`) の場合、同時実行ジョブの数が 499 以下 (`isConcurrent = False)` になるまで、すべてのアクティブなジョブのステータスは `IN-PROGRESS` のままで、新しいジョブは実行されません。これは、スナップショットジョブと連続ジョブに適用されます。  
`isConcurrent = True` の場合、このジョブによってターゲットグループ内のすべてのデバイスへのジョブ実行をロールアウトしています。`isConcurrent = False` の場合、ジョブがターゲットグループ内のすべてのデバイスへのジョブ実行のロールアウトを完了しました。ターゲットグループのすべてのデバイスが終了状態になるか、ジョブ停止設定を選択した場合は、ターゲットグループのしきい値 (パーセント) に達すると、ステータスが更新されます。`isConcurrent = True` および `isConcurrent = False` のジョブレベルのステータスは両方ともに `IN_PROGRESS` です。  
アクティブジョブと同時実行ジョブの制限の詳細については、「[アクティブなジョブおよび同時ジョブの制限](job-limits.md#job-limits-active-concurrent)」を参照してください。

#### モノの動的グループを使用した継続的ジョブのジョブロールアウトレート
<a name="job-rollout-dynamic-groups"></a>

連続ジョブを使用してフリートにリモートオペレーションをロールアウトすると、 AWS IoT Jobs はターゲットモノグループ内のデバイスのジョブ実行をロールアウトします。モノの動的グループに新たに追加されたデバイスについては、ジョブ作成後もこれらのジョブ実行がそれらのデバイスに対して引き続きロールアウトされます。

ロールアウト設定では、ジョブが作成されるまでグループに追加されたデバイスのみ、ロールアウトレートを制御できます。ジョブが作成されると、新しいデバイスについては、デバイスがターゲットグループに参加すると、ジョブ実行がほぼ同時に作成されます。

### ジョブスケジューリングの設定
<a name="job-scheduling"></a>

あらかじめ設定された開始時刻、終了時刻、終了時刻に達した際に各ジョブの実行がどのようになるかを示す終了動作を使用して、最大 1 年先まで連続ジョブまたはスナップショットのジョブをスケジューリングできます。さらに、オプションの定期メンテナンスウィンドウを作成して、継続的なジョブの頻度、開始時間、期間を柔軟に設定して、ジョブドキュメントをターゲットグループ内のすべてのデバイスにロールアウトできます。

#### ジョブスケジューリングの設定
<a name="jobs-scheduling-without-maintenance-window"></a>

**[開始時刻]**

スケジューリングされたジョブの開始時刻は、そのジョブがターゲットグループ内のすべてのデバイスへのジョブドキュメントのロールアウトを開始する将来の日付と時刻です。スケジューリングされたジョブの開始時刻は、連続ジョブとスナップショットジョブに適用されます。スケジューリングされたジョブが最初に作成されると、`SCHEDULED` のステータスは維持されます。選択した `startTime` に達すると、`IN_PROGRESS` に更新され、ジョブドキュメントのロールアウトが開始されます。`startTime` は、スケジューリングされたジョブを最初に作成した日から 1 年以内にする必要があります。

API コマンドまたは `startTime`を使用する場合の の構文の詳細については AWS CLI、[「タイムスタンプ](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-types.html#parameter-type-timestamp)」を参照してください。

夏時間 (DST) が適用されている場所での定期的なメンテナンスウィンドウでオプションのスケジュール設定が選択されているジョブの場合は、DST と標準時間を切り替える際に開始時間が 1 時間変わります。

**注記**  
に表示されるタイムゾーン AWS マネジメントコンソール は、現在のシステムのタイムゾーンです。ただし、これらのタイムゾーンはシステムによって UTC に変換されます。

**[終了時刻]**

スケジューリングされたジョブの終了時刻は、そのジョブがターゲットグループ内に残っているすべてのデバイスへのジョブドキュメントのロールアウトを停止する将来の日付と時刻です。スケジューリングされたジョブの終了時刻は、連続ジョブとスナップショットジョブに適用されます。スケジューリングされたジョブが選択した `endTime` に達し、すべてのジョブの実行が終了状態になると、ステータスが `IN_PROGRESS` から `COMPLETED` に更新されます。`endTime` は、スケジューリングされたジョブを最初に作成した日から 2 年以内にする必要があります。`startTime` と `endTime` との間の最短時間は 30 分です。ジョブ実行の再試行は、ジョブが `endTime` に到達するまで行われます。その後、`endBehavior` が処理方法を決定します。

API コマンドまたは `endTime`を使用する場合の の構文の詳細については AWS CLI、[「タイムスタンプ](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-types.html#parameter-type-timestamp)」を参照してください。

夏時間 (DST) が適用されている場所での定期的なメンテナンスウィンドウでオプションのスケジュール設定が選択されているジョブの場合は、DST と標準時間を切り替える際に開始時間が 1 時間変わります。

**注記**  
に表示されるタイムゾーン AWS マネジメントコンソール は、現在のシステムのタイムゾーンです。ただし、これらのタイムゾーンはシステムによって UTC に変換されます。

**終了動作**

スケジューリングされたジョブの終了動作によって、ジョブが選択した `endTime` に到達した際に、そのジョブと未完了のすべてのジョブ実行がどうなるかが決まります。

ジョブまたはジョブテンプレートの作成時に選択できる終了動作は次のとおりです。
+ `STOP_ROLLOUT`
  + `STOP_ROLLOUT` によって、ターゲットグループ内の残りのすべてのデバイスに対し、ジョブドキュメントのロールアウトを停止します。さらに、すべての `QUEUED` および `IN_PROGRESS` のジョブ実行はターミナル状態になるまで継続されます。`CANCEL` または `FORCE_CANCEL` を選択しない限り、これがデフォルトの終了動作になります。
+ `CANCEL`
  + `CANCEL` によって、ターゲットグループ内の残りのすべてのデバイスに対し、ジョブドキュメントのロールアウトを停止します。さらに、すべての `QUEUED` のジョブ実行はキャンセルされ、すべての `IN_PROGRESS` のジョブ実行は終了状態になるまで継続されます。
+ `FORCE_CANCEL`
  + `FORCE_CANCEL` によって、ターゲットグループ内の残りのすべてのデバイスに対し、ジョブドキュメントのロールアウトを停止します。さらに、`QUEUED` および `IN_PROGRESS` のジョブ実行はすべてキャンセルされます。

**注記**  
`endbehavior` を選択するには、`endtime` を選択する必要があります。

**最大継続時間**

スケジューリングされたジョブの最大継続時間は、`startTime` および `endTime` に関係なく 2 年以下にする必要があります。

スケジューリングされたジョブの一般的な継続時間のシナリオの表を以下に示します。


| **スケジュールされたジョブサンプル番号** | **startTime** | **endTime** | **最大継続時間** | 
| --- | --- | --- | --- | 
|  1  |  最初のジョブ作成直後。  |  最初のジョブ作成から 1 年後。  |  1 年  | 
|  2  |  最初のジョブ作成から 1 か月後。  |  最初のジョブ作成から 13 か月後。  |  1 年  | 
|  3  |  最初のジョブ作成から 1 年後。  |  最初のジョブ作成から 2 年後。  |  1 年  | 
|  4  |  最初のジョブ作成直後。  |  最初のジョブ作成から 2 年後。  |  2 年  | 

#### 定期メンテナンスウィンドウ
<a name="jobs-scheduling-maintenance-window"></a>

メンテナンスウィンドウは、 のスケジュール設定内`CreateJob`、 AWS マネジメントコンソール および `CreateJobTemplate` API `SchedulingConfig`内のオプション設定APIs。開始時間、期間、およびメンテナンスウィンドウが発生する頻度 (毎日、毎週、または毎月) をあらかじめ設定して、定期的なメンテナンスウィンドウを設定できます。メンテナンスウィンドウは連続ジョブにのみ適用されます。定期的なメンテナンスウィンドウの最大所要時間は 23 時間 50 分です。

次のリストでは、オプションのメンテナンスウィンドウを使用したスケジューリングされたさまざまなジョブシナリオのジョブステータスを示しています。

![\[特定のイベントで SCHEDULED、IN_PROGRESS、CANCELLED、DELETION_IN_PROGRESS の状態を進んでいく、連続ジョブのライフサイクルを示す図。\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/job-states-diagram-scheduled-maintenance-window.png)


ジョブのステータス状態の詳細については、「[Jobs とジョブ実行の状態](iot-jobs-lifecycle.md)」を参照してください。

**注記**  
メンテナンスウィンドウ中にジョブが `endTime` に到着すると、そのジョブは `IN_PROGRESS` から `COMPLETED` に更新されます。さらに、残りのジョブ実行は、そのジョブの `endBehavior` 後に実行されます。

**Cron 式**

メンテナンスウィンドウ中にカスタム頻度でジョブドキュメントをロールアウトするようにスケジュールされたジョブの場合、カスタム頻度は cron 式を使用して入力されます。Cron 式には 6 つの必須フィールドがあり、それらはスペースで区切られます。

**[Syntax]** (構文)

```
cron(fields)
```


| **フィールド** | **値** | **ワイルドカード** | 
| --- | --- | --- | 
|  分  |  0-59  |  , - \$1 /  | 
|  時間  |  0-23  |  , - \$1 /  | 
|  日  |  1-31  |  , - \$1 ? / L W  | 
|  月  |  1-12 または JAN-DEC  |  , - \$1 /  | 
|  曜日  |  1-7 または SUN-SAT  |  , - \$1 ? L \$1  | 
|  年  |  1970-2199  |  , - \$1 /  | 

**ワイルドカード**
+ **,** (カンマ) のワイルドカードには、追加の値が含まれます。月フィールドの、「JAN,FEB,MAR」は、1 月、2 月、3 月を含みます。
+ **-** (ダッシュ) のワイルドカードは、範囲を指定します。日フィールドの、「1-15」は、指定した月の 1 日から 15 日を含みます。
+ **[\$1]** (アスタリスク) のワイルドカードには、フィールドのすべての値が含まれます。時間フィールドの、**\$1** にはすべての時間が含まれています。[**\$1**] を日および曜日フィールドの両方に使用することはできません。一方に使用する場合は、もう一方に [**?**] を使用する必要があります。
+ **/** (スラッシュ) のワイルドカードは、増分を指定します。分フィールドで、「1/10」と入力して、その時間の最初の分から始めて、10 分毎を指定できます (11 分、21 分、31 分など)。
+ **[?]** (疑問符) のワイルドカードは、任意を意味します。[日] フィールドに **7** と入力し、7 日が何曜日であってもかまわない場合、[曜日] フィールドに **?** を入力できます。
+ Day-of-month フィールドまたは Day-of-week フィールドの、ワイルドカード **L** は月または週の最終日を指定します。
+ Day-of-month フィールドのワイルドカード **W** は、平日を指定します。Day-of-month フィールドで、**3W** は月の 3 日目に最も近い平日を指定します。
+ Day-of-week フィールドの **\$1** ワイルドカードは、月の指定された曜日の特定のインスタンスを指定します。例えば、3\$12 は、月の第 2 火曜日を示します。3 は週の 3 番目の日 (火曜日) を示し、2 は月のそのタイプの 2 番目の日を示します。
**注記**  
「\$1」文字を使用する場合、曜日フィールドには 1 つの式しか定義できません。例えば、`"3#1,6#3"` は 2 つの式として解釈されるため、無効です。

**制限事項**
+ cron 式の日フィールドと曜日フィールドを同時に指定することはできません。一方のフィールドに値 (または \$1) を指定する場合、もう一方のフィールドで **?** を使用する必要があります。

**例**

定期的なメンテナンスウィンドウの `startTime` に cron 式を使用する場合は、次の cron 文字列のサンプルを参照してください。


| **分** | **時間** | **日** | **月** | **曜日** | **年** | **意味** | 
| --- | --- | --- | --- | --- | --- | --- | 
| 0 | 10 | \$1 | \$1 | ? | \$1 |  毎日午前 10:00 (UTC) に実行  | 
| 15 | 12 | \$1 | \$1 | ? | \$1 |  毎日午後 12:15 (UTC) に実行  | 
| 0 | 18 | ? | \$1 | MON-FRI | \$1 |  毎週月曜日から金曜日まで午後 6:00 (UTC) に実行  | 
| 0 | 8 | 1 | \$1 | ? | \$1 |  毎月 1 日の午前 8:00 (UTC) に実行  | 

#### 定期メンテナンスウィンドウ期間の終了ロジック
<a name="jobs-scheduling-maintenance-window-end-behavoir"></a>

メンテナンスウィンドウ中のジョブのロールアウトが現在のメンテナンスウィンドウ発生期間の終わりに達すると、次のアクションが実行されます。
+ ターゲットグループ内の残りのデバイスに対し、ジョブドキュメントのロールアウトをすべて停止します。次のメンテナンスウィンドウの `startTime` に再開されます。
+ ステータスが `QUEUED` のすべてのジョブの実行は、次のメンテナンスウィンドウ発生の `startTime`まで `QUEUED` のままになります。次のウィンドウでは、ジョブドキュメントで指定されたアクションの実行をデバイスが開始できる状態になった時点で `IN_PROGRESS` に切り替えることができます。
+ `IN_PROGRESS` ステータスのすべてのジョブ実行は、ターミナル状態になるまでジョブドキュメントで指定されたアクションを実行し続けます。`JobExecutionsRetryConfig` で指定されている再試行は、次のメンテナンスウィンドウの `startTime` に行われます。

### ジョブの中止設定
<a name="job-abort-using"></a>

この設定を使用して、デバイスのしきい値の割合がその基準を満たした場合にジョブをキャンセルする基準を作成します。例えば、次の場合にこの設定を使用してジョブをキャンセルできます : 
+ デバイスのしきい値の割合がジョブ実行通知を受信しない場合（デバイスが 無線通信 (OTA) アップデートに対応していない場合など）。この場合、デバイスは `REJECTED` ステータスを報告します。
+ Amazon S3 URL からジョブドキュメントをダウンロードしようとしたときにデバイスが切断された場合など、デバイスのしきい値の割合によってジョブ実行の失敗が報告された場合。このような場合、デバイスを `FAILURE` ステータスを AWS IoTにレポートするようにプログラムする必要があります。
+ ジョブの実行が開始された後、デバイスのしきい値の割合でジョブ実行がタイムアウトしたために `TIMED_OUT` ステータスが報告された場合。
+ 複数の再試行が失敗した場合。再試行設定を追加すると、再試行のたびに AWS アカウントに追加料金が発生することがあります。このような場合、ジョブをキャンセルすると、キューに入れられたジョブの実行がキャンセルされ、これらの実行の再試行を回避できます。再試行設定と、中止設定との使用の詳細については、「[ジョブ実行タイムアウト設定と再試行の設定](#job-timeout-retry)」を参照してください。

 AWS IoT コンソールまたは AWS IoT Jobs API を使用して、ジョブ中止条件を設定できます。

## ジョブ実行タイムアウト設定と再試行の設定
<a name="job-timeout-retry"></a>

ジョブ実行タイムアウト設定を使用して、ジョブの実行が設定された期間より長く進行中の場合 [ジョブの通知](jobs-comm-notifications.md) を送信します。ジョブが失敗またはタイムアウトしたときに実行を再試行するには、ジョブ実行リトライ設定を使用します。

### ジョブ実行タイムアウトの設定
<a name="job-timeout-configuration"></a>

ジョブ実行タイムアウト設定を使用すると、予期せず長時間、ジョブの実行が `IN_PROGRESS` ステータスのままになるたびに、通知を受けることができます。ジョブが `IN_PROGRESS` のとき、ジョブ実行の進行状況をモニタリングできます。

#### ジョブタイムアウトのタイマー
<a name="job-timeout-timers"></a>

タイマーには、進捗タイマーとステップタイマーの 2 種類があります。

**進捗タイマー**  
ジョブまたはジョブテンプレートを作成するときに、進捗タイマーの値を 1 分から 7 日間の間で指定できます。ジョブ実行の開始まで、このタイマーの値を更新できます。タイマーが開始されると、タイマーは更新できず、タイマー値はジョブのすべての実行に適用されます。ジョブの実行がこの間隔より長く `IN_PROGRESS`ステータスのままになるたびに、ジョブの実行は失敗し、終了`TIMED_OUT`ステータスに切り替わります。 AWS IoT も MQTT 通知を発行します。

**ステップタイマー**  
更新するジョブ実行のみに適用されるステップタイマーを設定することもできます。このタイマーは、進捗タイマーには影響を与えません。ジョブの実行を更新するたびに、このステップタイマーに新しい値を設定できます。モノに対して保留中の次のジョブ実行を開始するときに、新しいステップタイマーを作成することもできます。ジョブの実行がステップタイマーの間隔より長い間、`IN_PROGRESS` ステータスのままになる場合、ジョブの実行は失敗し、終了ステータス `TIMED_OUT` に切り替わります。

**注記**  
コンソール AWS IoT または AWS IoT Jobs API を使用して、進行中のタイマーを設定できます。ステップタイマーを指定するには、API を使用します。

#### ジョブタイムアウトのタイマーの仕組み
<a name="job-timeout-timers-works"></a>

以下の図は、20 分のタイムアウト期間の間に、進捗タイムアウトとステップタイムアウトが相互に影響を与えている例を示しています。

![\[ネストされたステップタイマーが 7、5、8 分で、進行中のタイマーが 20 分であることを示すタイムライン。\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/timeout-diagram.png)


以下は異なるステップを示します。

1. 

**12:00**  
新しいジョブが作成され、ジョブの作成時に 20 分の進捗タイマーが開始されます。進捗タイマーが開始され、ジョブの実行が `IN_PROGRESS` に切り替えられます。

1. 

**午後 12:05**  
値 7 分の新しいステップタイマーを作成します。ジョブの実行は午後 12:12 にタイムアウトします。

1. 

**午後 12:10**  
値 5 分の新しいステップタイマーを作成します。新しいステップタイマーが作成されると、前のステップタイマーは破棄され、ジョブの実行は午後 12:15 にタイムアウトになります。

1. 

**午後 12:13**  
値 9 分の新しいステップタイマーを作成します。前のステップタイマーは破棄され、進捗タイマーが午後 12:20 にタイムアウトするため、ジョブの実行は午後 12:20 にタイムアウトします。ステップタイマーは、進捗タイマーによって作成された絶対限度時間を超えることはできません。

### ジョブ実行再試行設定
<a name="job-retry-configuration"></a>

再試行設定を使用して、特定の条件セットが満たされたときにジョブの実行を再試行できます。再試行は、ジョブがタイムアウトしたとき、またはデバイスで失敗が発生したときに試行できます。タイムアウト失敗が原因で実行を再試行するには、タイムアウト設定を有効にする必要があります。

**再試行設定の使用方法**  
設定を完了するには、次の手順を再試行します。

1. `FAILED`、`TIMED_OUT`、または両方の失敗基準に対して再試行設定を使用するかどうかを決定します。`TIMED_OUT` ステータスの場合、ステータスが報告されると、 AWS IoT Jobs は自動的にデバイスのジョブ実行を再試行します。

1. `FAILED` ステータスの場合、ジョブの実行失敗を再試行できるかどうかを確認します。再試行可能な場合は、`FAILURE` ステータスを AWS IoTに報告するようデバイスをプログラムします。次のセクションでは、再試行可能な失敗と復元不可能な失敗について詳しく説明します。

1. 前述の情報を使用して、各失敗タイプに使用する再試行回数を指定します。1 つのデバイスに対して、両方の失敗タイプを合わせて最大 10 回の再試行を指定できます。再試行は、実行が成功したとき、または指定された試行回数に達すると、自動的に停止します。

1. 再試行が繰り返し失敗した場合、ジョブをキャンセルする中止設定を追加して、再試行回数が多い場合でも追加料金が発生しないようにします。

**注記**  
ジョブが繰り返し発生するメンテナンスウィンドウの終わりに達すると、すべての `IN_PROGRESS` ジョブ実行は、ターミナル状態に達するまでジョブドキュメントで指定されたアクションを実行し続けます。ジョブの実行がウィンドウの外で `FAILED` または `TIMED_OUT` のターミナル状態になった場合は、再試行回数の上限に達するまで次のメンテナンスウィンドウで再試行されます。次のメンテナンスウィンドウが発生する `startTime` に、新しいジョブ実行が作成され、デバイスの起動準備が整うまで `QUEUED` のステータスに入ります。

**再試行と中止設定**  
再試行するたびに、 に追加料金が発生します AWS アカウント。繰り返しの再試行失敗による追加料金が発生しないように、中止設定を追加することを推奨します。料金の詳細については、「[AWS IoT Device Management の料金](https://aws.amazon.com/iot-device-management/pricing/)」を参照してください。

デバイスのしきい値が高い割合でタイムアウトしたり、失敗を報告したりすると、複数の再試行が失敗することがあります。この場合、中止設定を使用してジョブをキャンセルし、キューに入っているジョブの実行やそれ以上の再試行を回避できます。

**注記**  
ジョブ実行をキャンセルするための中止基準が満たされた場合のみ、`QUEUED` ジョブ実行はキャンセルされます。デバイスのキューに入れられた再試行は試行されません。ただし、現在の `IN_PROGRESS` ステータスのジョブ実行はキャンセルされません。

失敗したジョブ実行を再試行する前に、以下のセクションで説明するように、ジョブ実行の失敗が再試行可能かどうかをチェックすることを推奨します。

**`FAILED` の失敗タイプの再試行**  
`FAILED` の失敗タイプの再試行をする場合は、失敗したジョブ実行の `FAILURE` ステータスを AWS IoTにレポートするようにデバイスがプログラムされている必要があります。`FAILED` ジョブを再試行する条件再試行設定で設定し、また再試行回数を指定します。 AWS IoT Jobs が`FAILURE`ステータスを検出すると、デバイスのジョブ実行を自動的に再試行します。再試行は、ジョブの実行が成功するか、最大再試行回数に達するまで継続されます。

各再試行とこれらのデバイスで実行されているジョブを追跡できます。実行ステータスを追跡することで、指定した回数の再試行が試行された後、デバイスを使用して失敗を報告し、別の再試行を開始できます。

**再試行可能な失敗と復元不可能な失敗**  
ジョブ実行の失敗は、再試行可能または復元不可能の可能性があります。再試行するたびに、 AWS アカウントに料金が発生します。複数の再試行による追加料金が発生しないようにするには、まず、ジョブ実行の失敗が再試行可能かどうかをチェックすることを検討してください。再試行可能な失敗の例には、Amazon S3 URL からジョブドキュメントをダウンロードしようとしたときにデバイスに発生する接続エラーが含まれます。ジョブ実行の失敗が再試行可能な場合は、デバイスをプログラムして、ジョブの実行に失敗した場合に `FAILURE` ステータスを報告するように設定します。次に、`FAILED` の実行を再試行するように再試行を設定します。

実行を再試行できない場合、再試行してアカウントに追加料金が発生する可能性を回避するために、デバイスを `REJECTED` ステータスを AWS IoTに報告するようプログラムすることを推奨します。再試行不可能な障害の例としては、デバイスがジョブの更新を受信できない場合や、ジョブの実行中にメモリエラーが発生した場合などがあります。このような場合、 AWS IoT ジョブは `FAILED`または `TIMED_OUT`ステータスを検出した場合にのみジョブ実行を再試行するため、ジョブ実行を再試行しません。

ジョブ実行の失敗が再試行可能であると判断した後、再試行が失敗する場合は、デバイスログを確認することを検討してください。

**注記**  
オプションのスケジューリング設定によるジョブが `endTime` に達すると、選択された `endBehavior` はターゲットグループ内の残りのすべてのデバイスへのジョブドキュメントのロールアウトを停止し、残りのジョブ実行で再試行を進める方法を指示します。再試行設定で選択した場合、試行は再試行されます。

**`TIMEOUT` の失敗タイプの再試行**  
ジョブの作成時にタイムアウトを有効にすると、ジョブ AWS IoT はステータスが から `IN_PROGRESS`に変わったときにデバイスのジョブ実行を再試行しようとします`TIMED_OUT`。このステータスの変化は、進捗タイマーがタイムアウトしたとき、または指定したステップタイマーが `IN_PROGRESS` である場合に発生し、その後タイムアウトします。再試行は、ジョブの実行が成功するか、この失敗タイプの再試行の最大回数に達するまで継続されます。

**継続的なジョブとモノグループメンバーシップの更新**  
継続的なジョブのジョブステータスが `IN_PROGRESS` の場合、モノグループメンバーシップが更新されると、再試行回数はゼロにリセットされます。例えば、再試行を 5 回指定し、3 回の再試行がすでに実行されているとします。モノがモノグループから削除され、ダイナミックモノグループの場合などで、モノがグループに再登録されると、再試行回数はゼロにリセットされます。これで、残りの 2 回の試行ではなく、モノグループに対して 5 回の再試行を実行できます。さらに、モノがモノグループから削除されると、追加の再試行がキャンセルされます。

# 追加の設定を指定する
<a name="jobs-configurations-specify"></a>

ジョブまたはジョブテンプレートを作成する場合、これらの追加設定を指定できます。次に、これらの設定を指定できる時期を示します。
+ カスタムジョブテンプレートの作成時 テンプレートからジョブを作成するときに、指定した追加の構成設定が保存されます。
+ ジョブファイルを使用したカスタムジョブの作成時 ジョブファイルには、S3 バケットにアップロードされる JSON ファイルを使用できます。
+ カスタムジョブテンプレートを使用したカスタムジョブの作成時 テンプレートにこれらの設定が既に指定されている場合は、それらを再利用するか、新しい構成設定を指定して上書きできます。
+  AWS マネージドテンプレートを使用してカスタムジョブを作成する場合。

**Topics**
+ [

# を使用してジョブ設定を指定する AWS マネジメントコンソール
](job-configurations-console.md)
+ [

# Jobs API を使用して AWS IoT ジョブ設定を指定する
](job-configurations-api.md)

# を使用してジョブ設定を指定する AWS マネジメントコンソール
<a name="job-configurations-console"></a>

 AWS IoT コンソールを使用して、ジョブにさまざまな設定を追加できます。ジョブを作成した後、ジョブ設定のステータスの詳細を [job details] (ジョブ詳細) ページで確認できます。さまざまな設定とその動作の詳細については、「[ジョブ設定の仕組み](jobs-configurations-details.md)」を参照してください。

ジョブまたはジョブテンプレートを作成するときに、ジョブ設定を追加します。

**カスタムジョブテンプレートの作成時**  
カスタムジョブテンプレートの作成時にロールアウト設定を指定するには

1. [AWS IoT コンソールのジョブテンプレートハブ](https://console.aws.amazon.com/iot/home#/jobtemplatehub)に移動し、**ジョブテンプレートの作成**を選択します。

1. ジョブテンプレートのプロパティを指定し、ジョブドキュメントを指定し、追加する設定を展開して、設定パラメータを指定します。

**カスタムジョブの作成時**  
カスタムジョブの作成時にロールアウト設定を指定するには

1. [AWS IoT コンソールのジョブハブ](https://console.aws.amazon.com/iot/home#/jobhub)に移動し、**ジョブの作成**を選択します。

1. **[Create a custom job]** (カスタムジョブの作成) を選択し、ジョブのプロパティ、ターゲット、およびジョブドキュメントにジョブファイルまたはテンプレートを使用するかどうかを指定します。カスタムテンプレートまたは AWS マネージドテンプレートを使用できます。

1. ジョブ設定を選択し、**[Rollout configuration]** (ロールアウト設定) を展開し、**[Constant rate]** (一定のレート) または **[Exponential rate]** (指数関数的レート) を使用するかどうか指定します。次に、設定パラメータを指定します。

次のセクションでは、各設定に指定できるパラメータを示します。

## ロールアウト設定
<a name="job-rollout-console"></a>

一定のロールアウトレートを使用するか、指数関数的レートを使用するかを指定できます。
+ 

**一定のロールアウトレートを設定する**  
ジョブ実行の一定レートを設定するには、**[一定間隔]** を選択し、**[1 分あたりの最大数]** でレートの上限を指定します。この値はオプションで、1～1000 の範囲です。設定しないと、デフォルト値として 1000 が使用されます。
+ 

**指数関数的なロールアウトレートを設定する**  
指数関数的レートを設定するには、**[Exponential rate]** (指数関数的レート) を選択し、次に、パラメータを指定します。
  + 

**1 分あたりのベースレート**  
**[通知されたデバイス数]** または **[成功したデバイスの数]** が **[レート増価基準]** のしきい値を満たすまでジョブが実行されるレート。
  + 

**増分係数**  
ロールアウトレートが、**[Number of notified devices]** (通知されたデバイスの数) または**[Number of succeeded devices]** (成功したデバイスの数) が **[Rate increase criteria]** (レート上げ基準) のしきい値を満たした後にロールアウトレートが増加する指数係数。
  + 

**レート上げ基準**  
**[Number of notified devices]** (通知されたデバイスの数) または**[Number of succeeded devices]** (成功したデバイスの数) どちらかのしきい値。

## 中止設定
<a name="job-abort-console"></a>

**[Add new configuration]** (新しい設定の追加) を選択し、各設定の以下のパラメータを指定します。
+ 

**失敗タイプ**  
ジョブの中止を開始する失敗の種類を指定します。**[FAILED]** (失敗)、**[REJECTED]** (拒否)、**[TIMED\$1OUT]** (タイムアウト)、または **[ALL]** (すべて) が含まれます。
+ 

**増分係数**  
ジョブ中止基準が満たされる前に、完了が必要なジョブの数を指定します。
+ 

**しきい値割合**  
ジョブ中止を開始する、実行されたモノの合計数を指定します。

## スケジューリング設定
<a name="job-scheduling-console"></a>

各ジョブは、最初の作成時にすぐに開始することも、後の日時に開始するようにスケジューリングすることも、定期的なメンテナンスウィンドウで実行することもできます。

**[Add new configuration]** (新しい設定の追加) を選択し、各設定の以下のパラメータを指定します。
+ 

**ジョブ開始**  
ジョブを開始する日時を指定します。
+ 

**定期メンテナンスウィンドウ**  
定期的なメンテナンスウィンドウは、ジョブがジョブ内のターゲットデバイスにジョブドキュメントを配信できる特定の日付と時刻を定義します。メンテナンスウィンドウは、毎日、毎週、毎月、またはカスタムの曜日と時間の繰り返しが可能です。
+ 

**ジョブ終了**  
ジョブを終了する日時を指定します。
+ 

**ジョブ終了動作**  
ジョブ終了時の未完了のすべてのジョブ実行の終了動作を選択します。

**注記**  
オプションのスケジューリング設定があるジョブと選択した終了時刻が終了時刻に達すると、ジョブがターゲットグループ内の残りのすべてのデバイスへのジョブドキュメントのロールアウトを停止します。また、再試行設定に基づく残りのジョブ実行とその再試行回数をどのように進めるかについて、選択された終了動作を使用します。

## タイムアウト設定
<a name="job-timeout-console"></a>

デフォルトでは、タイムアウトはなく、ジョブの実行はキャンセルまたは削除されます。タイムアウトを使用するには、**[タイムアウトの有効化]** を選択し、1 分から 7 日の間のタイムアウト値を指定します。

## 再試行設定
<a name="job-retry-console"></a>

**注記**  
ジョブの作成後は、再試行回数は更新できません。すべての失敗タイプの再試行設定のみを削除できます。ジョブを作成するときは、設定に使用する適切な再試行回数を考慮してください。再試行失敗の可能性による過剰なコストが発生しないようにするには、中止設定を追加します。

**[Add new configuration]** (新しい設定の追加) を選択し、各設定の以下のパラメータを指定します。
+ 

**失敗タイプ**  
ジョブ実行の再試行をトリガーする失敗の種類を指定します。**[Failed]** (失敗)、**[Timeout]** (タイムアウト)、**[All]** (すべて) が含まれます。
+ 

**再試行回数**  
選択した **[Failure type]** (失敗タイプ) の再試行回数を指定します。両方の失敗タイプを組み合わせると、最大 10 回の再試行が可能です。

# Jobs API を使用して AWS IoT ジョブ設定を指定する
<a name="job-configurations-api"></a>

[[CreateJob]](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) (ジョブの作成) または[[CreateJobTemplate]](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) (ジョブテンプレートの作成) API を使用してさまざまなジョブ設定を指定できます。次のセクションでは、これらの設定を追加する方法について説明します。設定を追加後、[[JobExecutionSummary]](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html) (ジョブ実行概要) および [[JobExecutionSummaryForJob]](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummaryForJob.html) (ジョブ用のジョブ実行概要) を使用して、そのステータスを表示します。

さまざまな設定とその動作の詳細については、「[ジョブ設定の仕組み](jobs-configurations-details.md)」を参照してください。

## ロールアウト設定
<a name="job-rollout-api"></a>

ロールアウト設定には、一定のロールアウトレートまたは指数関数的なロールアウトレートを指定できます。
+ 

**一定のロールアウトレートを設定する**  
一定のロールアウトレートを設定するには、[https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html) オブジェクトを使用して`maximumPerMinute` パラメータを `CreateJob` リクエストに追加します。このパラメータはジョブ実行が発生するレートの上限を指定します。この値はオプションで、1～1000 の範囲です。値を設定しないと、デフォルト値として 1000 が使用されます。

  ```
      "jobExecutionsRolloutConfig": {
          "maximumPerMinute": 1000
      }
  ```
+ 

**指数関数的なロールアウトレートを設定する**  
可変ジョブロールアウトレートを設定するには、[https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html) オブジェクトを使用します。`CreateJob` API オペレーション実行時の `ExponentialRolloutRate` プロパティを設定できます。次の例では、`exponentialRate` パラメータを使用して指数関数的ロールアウトレートを設定します。パラメータの詳細については、「 」を参照してください[https://docs.aws.amazon.com/iot/latest/apireference/API_ExponentialRolloutRate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ExponentialRolloutRate.html)

  ```
  {
  ...
    "jobExecutionsRolloutConfig": {
      "exponentialRate": {
        "baseRatePerMinute": 50,
        "incrementFactor": 2,
        "rateIncreaseCriteria": {
          "numberOfNotifiedThings": 1000,
          "numberOfSucceededThings": 1000
        },
        "maximumPerMinute": 1000
      }
    }
  ...
  }
  ```

パラメータが以下の場合 :

**baseRatePerMinute**  
`numberOfNotifiedThings` または `numberOfSucceededThings` しきい値に達するまで、ジョブを実行するレートを指定します。

**incrementFactor**  
`numberOfNotifiedThings` または `numberOfSucceededThings` しきい値に達した後にロールアウトレートを増加する指数係数を指定します。

**rateIncreaseCriteria**  
`numberOfNotifiedThings` または `numberOfSucceededThings` しきい値のいずれかを指定します。

## 中止設定
<a name="job-abort-api"></a>

API を使用してこの設定を追加するには、[https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) または [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API オペレーションを実行するときに [https://docs.aws.amazon.com/iot/latest/apireference/API_AbortConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_AbortConfig.html) パラメータを指定します。次の例は、`CreateJob` API オペレーションで指定された複数回失敗した実行のジョブロールアウトに対する中止設定を示しています。

**注記**  
ジョブ実行を削除すると、完了した実行の合計数の計算値に影響します。ジョブを中止するとき、サービスは自動で `comment` と `reasonCode` を作成し、ジョブ中止のキャンセルとユーザーによるキャンセルを区別します。

```
   "abortConfig": { 
      "criteriaList": [ 
         { 
            "action": "CANCEL",
            "failureType": "FAILED",
            "minNumberOfExecutedThings": 100,
            "thresholdPercentage": 20
         },
         { 
            "action": "CANCEL",
            "failureType": "TIMED_OUT",
            "minNumberOfExecutedThings": 200,
            "thresholdPercentage": 50
         }
      ]
    }
```

パラメータが以下の場合 :

**action**  
中止基準が満たされたときに実行するアクションを指定します。このパラメータは必須であり、`CANCEL` が唯一の有効な値です。

**failureType**  
ジョブの中止を開始する失敗の種類を指定します。有効な値は、`FAILED`、`REJECTED`、`TIMED_OUT`、および `ALL` です。

**minNumberOfExecutedThings**  
ジョブ中止基準が満たされる前に、完了が必要なジョブの数を指定します。この例では、 AWS IoT は、ジョブ実行が完了しているデバイスが少なくとも 100 個になるまで、ジョブ中止が必要かどうかをチェックしません。

**thresholdPercentage**  
ジョブ中止を開始する、ジョブが実行されたモノの合計数を指定します。この例では、 は順番に AWS IoT チェックし、しきい値の割合が満たされた場合にジョブの中止を開始します。100 回の実行が完了した後に完了した実行の 20% 以上が失敗した場合、ジョブのロールアウトはキャンセルされます。この基準が満たされない場合、 AWS IoT は、200 回の実行が完了した後に、完了した実行の少なくとも 50% がタイムアウトしたかどうかを確認します。この場合、ジョブのロールアウトがキャンセルされます。

## スケジューリング設定
<a name="job-scheduling-api"></a>

API を使用してこの設定を追加するには、[https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) または [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API オペレーションを実行する際にオプションの [https://docs.aws.amazon.com/iot/latest/apireference/API_SchedulingConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_SchedulingConfig.html) を指定します。

```
    "SchedulingConfig": { 
      "endBehavior": string
      "endTime": string
      "maintenanceWindows": string
      "startTime": string
   }
```

パラメータが以下の場合 :

**startTime**  
ジョブを開始する日時を指定します。

**endTime**  
ジョブを終了する日時を指定します。

**maintenanceWindows**  
対象グループ内のすべてのデバイスに対し、ジョブドキュメントのロールアウトスケジュールジョブに、オプションのメンテナンスウィンドウが選択されていた場合に指定します。`maintenanceWindow` の文字列形式は、日付は YYYY/MM/DD、時刻は hh:mm です。

**endBehavior**  
スケジュールされたジョブが `endTime` に達したときのジョブの動作を指定します。

**注記**  
ジョブのオプション `SchedulingConfig` は、[https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html) および [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobTemplate.html) API で表示できます。

## タイムアウト設定
<a name="job-timeout-api"></a>

API を使用してこの設定を追加するには、[https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) または [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API オペレーションを実行するときに [https://docs.aws.amazon.com/iot/latest/apireference/API_TimeoutConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_TimeoutConfig.html) パラメータを指定します。

タイムアウト設定を使用するには

1. ジョブまたはジョブテンプレートの作成時に進捗タイマーを設定するには、オプションの [TimeoutConfig](https://docs.aws.amazon.com//iot/latest/apireference/API_TimeoutConfig.html) オブジェクトの `inProgressTimeoutInMinutes` プロパティの値を設定します。

   ```
       "timeoutConfig": { 
         "inProgressTimeoutInMinutes": number
      }
   ```

1. ジョブ実行のステップタイマーを設定するには、[UpdateJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html) を呼び出すときの `stepTimeoutInMinutes`の値を設定します。ステップタイマーは更新するジョブ実行にのみ適用されます。ジョブの実行を更新するたびに、このタイマーに新しい値を設定できます。
**注記**  
`UpdateJobExecution` は、値 -1 の新しいステップタイマーを作成することで、すでに作成されたステップタイマーを破棄できます。

   ```
   {
      ... 
       "statusDetails": { 
         "string" : "string" 
      },
      "stepTimeoutInMinutes": number
   }
   ```

1. 新しいステップタイマーを作成するには、[StartNextPendingJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_StartNextPendingJobExecution.html) API オペレーションを呼び出すこともできます。

## 再試行設定
<a name="job-retry-api"></a>

**注記**  
ジョブを作成するときは、設定に使用する適切な再試行回数を考慮してください。再試行失敗の可能性による過剰なコストが発生しないようにするには、中止設定を追加します。ジョブの作成後は、再試行回数は更新できません。[UpdateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateJob.html) API オペレーションを使用する場合、再試行回数は 0 のみに設定できます。

API を使用してこの設定を追加するには、[https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) または [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API オペレーションを実行するときに [https://docs.aws.amazon.com/iot/latest/apireference/API_jobExecutionsRetryConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_jobExecutionsRetryConfig.html) パラメータを指定します。

```
{
...
  "jobExecutionsRetryConfig": { 
      "criteriaList": [ 
         { 
            "failureType": "string",
            "numberOfRetries": number
         }
      ]
  }
...
}
```

**criteriaList** は、ジョブの失敗タイプごとに許可される再試行回数を決定する基準のリストを指定する配列です。