デバイスとジョブ - AWS IoT Core

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

デバイスとジョブ

デバイスは、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/accepted

    AWS 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-nameGet のようなリクエスト名です。リクエストが失敗した場合、 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 とツール」を参照し、希望する言語 IotJobsDataPlane のセクションを参照してください。

この通信方法では、デバイスは 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」を参照してください。