「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
デバイスとジョブ
ジョブを処理するデバイスのプログラミング
このセクションの例では、MQTT を使用してデバイスと AWS IoT ジョブサービスの連携を示します。または、対応する API または CLI コマンドを使用できます。これらの例では、MyThing
と呼ばれるデバイスが以下の MQTT トピックにサブスクライブすることを想定しています。
-
$aws/things/
(またはMyThing
/jobs/notify$aws/things/
)MyThing
/jobs/notify-next -
$aws/things/
MyThing
/jobs/get/accepted -
$aws/things/
MyThing
/jobs/get/rejected -
$aws/things/
MyThing
/jobs/jobId
/get/accepted -
$aws/things/
MyThing
/jobs/jobId
/get/rejected
AWS IoT のコード署名を使用している場合は、デバイスコードでコードファイルの署名を確認する必要があります。署名は codesign
プロパティのジョブドキュメントにあります。コードファイル署名の検証の詳細については、「Device Agent Sample
デバイスのワークフロー
実行するために与えられたジョブをデバイスが処理できる方法は 2 つあります。
デバイスがジョブを実行できない場合は、UpdateJobExecution MQTT API を呼び出してジョブのステータスを REJECTED
に更新する必要があります。
新しいジョブの開始
デバイスにはジョブドキュメントがあるようになり、これを使用してジョブのリモートオペレーションを実行できます。ジョブドキュメントに Amazon S3 の署名付き URL が含まれている場合、デバイスはその URL を使用してジョブに必要なファイルをダウンロードできます。
ジョブの実行ステータスレポート
その他のジョブ
ジョブの通知
AWS IoT ジョブサービスは、ジョブが保留中の場合や、リスト内の最初のジョブ実行が変更された場合、MQTT メッセージを予約済みトピックに発行します。デバイスは、これらのトピックにサブスクライブすることによって、保留中のジョブを追跡できます。
ジョブ通知は、MQTT トピックに JSON ペイロードとして発行されます。通知は 2 種類あります。
-
ListNotification
には、10 を超えない保留中のジョブの実行リストが含まれます。このリスト内のジョブ実行のステータス値は、IN_PROGRESS
またはQUEUED
です。 ステータスによってソートされた後 (IN_PROGRESS
ジョブ実行前のQUEUED
ジョブ実行)、キューに入れられた時刻によってソートされます。ListNotification
は、次のいずれかの条件が満たされると必ず発行されます。-
新しいジョブ実行がキューに登録されたか、非ターミナルステータス (
IN_PROGRESS
またはQUEUED
) に変わった。 -
古いジョブの実行が終了ステータスに変わった (
FAILED
、SUCCEEDED
、CANCELED
、TIMED_OUT
、REJECTED
、またはREMOVED
)。
-
-
NextNotification
には、キュー内の次の 1 つのジョブ実行に関する概要が含まれています。NextNotification
は、リスト内の最初のジョブ実行が変更されると必ず発行されます。-
新しいジョブ実行は
QUEUED
としてリストに追加され、リスト内の最初の項目になります。 -
リスト内の最初の項目でない既存のジョブ実行のステータスは、
QUEUED
からIN_PROGRESS
に変わり、リストにある最初の項目になります。(これは、リスト内に他のIN_PROGRESS
ジョブ実行がない場合や、ステータスがQUEUED
からIN_PROGRESS
に変わったジョブ実行がリスト内の他のIN_PROGRESS
ジョブ実行より早くキューに登録された場合に発生します)。 -
リスト内の最小にあるジョブ実行のステータスがターミナルステータスに変更され、リストから削除されます。
-
MQTT トピックのパブリッシュとサブスクライブの詳細については、「デバイス通信プロトコル」を参照してください。
ジョブとの通信に HTTP 署名バージョン 4 あるいは HTTP TLS を使用する場合、通知は利用できません。