翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
デバイスとジョブ
デバイスは、MQTT、HTTP 署名バージョン 4、または HTTP TLS を使用して AWS IoT ジョブと通信できます。デバイスが AWS IoT Jobs と通信するときに使用するエンドポイントを決定するには、 DescribeEndpoint コマンドを実行します。たとえば、次のコマンドを実行するとします。
aws iot describe-endpoint --endpoint-type iot:Data-ATS
以下のような応答が得られます。
{ "endpointAddress": "a1b2c3d4e5f6g7-ats.iot.us-west-2.amazonaws.com" }
デバイスは MQTT プロトコルを使用して AWS IoT ジョブと通信できます。デバイスは MQTT トピックをサブスクライブして、新しいジョブの通知を受け取り、 AWS IoT ジョブサービスからレスポンスを受け取ります。デバイスは、MQTT トピックを発行して、ジョブ起動の状態をクエリまたは更新します。各デバイスには、全般的な MQTT トピックがあります。MQTT トピックのパブリッシュとサブスクライブの詳細については、「デバイス通信プロトコル」を参照してください。
この通信方法では、デバイスはデバイス固有の証明書とプライベートキーを使用して AWS IoT Jobs で認証します。
デバイスは次のトピックをサブスクライブできます。thing-name
はデバイスに関連付けられたモノの名前です。
-
$aws/things/
thing-name
/jobs/notifyこのトピックをサブスクライブして、保留中のジョブ起動のリストに対してジョブ起動が追加または削除されたときに、通知を受け取ります。
-
$aws/things/
thing-name
/jobs/notify-nextこのトピックをサブスクライブして、次の保留中のジョブ実行が変更されたときに通知を受信します。
-
$aws/things/
thing-name
/jobs/request-name
/acceptedAWS IoT ジョブサービスは、MQTT トピックに成功と失敗のメッセージを発行します。このトピックは、
accepted
またはrejected
を、リクエストを行うために使用されたトピックに追加することで構成されます。ここで、request-name
は などのリクエストの名前Get
であり、トピックは になります$aws/things/myThing/jobs/get
。 AWS IoT Jobs は成功メッセージを$aws/things/myThing/jobs/get/accepted
トピックに発行します。 -
$aws/things/
thing-name
/jobs/request-name
/rejectedここで、
request-name
はGet
のようなリクエスト名です。リクエストが失敗した場合、 AWS IoT Jobs は$aws/things/myThing/jobs/get/rejected
トピックに失敗メッセージを発行します。
以下の HTTPS API オペレーションを使用することもできます。
-
UpdateJobExecution
API を呼び出してジョブ実行のステータスを更新します。 -
DescribeJobExecution
API を呼び出してジョブ実行のステータスをクエリします。 -
GetPendingJobExecutions
API を呼び出して保留中のジョブの実行リストを取得します。 -
jobId
を$next
としてDescribeJobExecution
API を呼び出して次の保留中のジョブ実行を取得します。 -
StartNextPendingJobExecution
API を呼び出して次の保留中のジョブ実行を取得して開始します。
デバイスは、ポート 443 で HTTP 署名バージョン 4 を使用して AWS IoT ジョブと通信できます。これは、 AWS SDK と CLI で使用されるメソッドです。これらのツールの詳細については、AWS CLI 「 コマンドリファレンス: iot-jobs-data」またはAWS SDKs とツール
この通信方法では、デバイスは IAM 認証情報を使用して AWS IoT Jobs で認証します。
この方法では次のコマンドを使用できます。
-
DescribeJobExecution
aws iot-jobs-data describe-job-execution ...
-
GetPendingJobExecutions
aws iot-jobs-data get-pending-job-executions ...
-
StartNextPendingJobExecution
aws iot-jobs-data start-next-pending-job-execution ...
-
UpdateJobExecution
aws iot-jobs-data update-job-execution ...
デバイスは、このプロトコルをサポートするサードパーティーのソフトウェアクライアントを使用して、ポート 8443 で HTTP TLS を使用して AWS IoT Jobs と通信できます。
この方法では、デバイスは X.509 証明書ベースの認証 (たとえば、デバイス固有の証明書とプライベートキー) を使用します。
この方法では次のコマンドを使用できます。
-
DescribeJobExecution
-
GetPendingJobExecutions
-
StartNextPendingJobExecution
-
UpdateJobExecution
ジョブを処理するデバイスのプログラミング
このセクションの例では、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