裝置和任務 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

裝置和任務

裝置可以使用 MQTT、HTTP 簽章版本 4 或 HTTP TLS 與 AWS IoT 工作進行通訊。若要在裝置與 AWS IoT 工作通訊時決定要使用的端點,請執行指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 過工作進行驗證。

裝置可以訂閱下列主題。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 主題發佈成功與失敗訊息。主題是透過將 acceptedrejected 附加到用於發出請求的主題來形成。在這裡,request-name是請求的名稱,例如Get,主題可以是:$aws/things/myThing/jobs/get。 AWS IoT 然後,工作會發佈有關該$aws/things/myThing/jobs/get/accepted主題的成功訊息。

  • $aws/things/thing-name/jobs/request-name/rejected

    在此例中,request-name 是請求的名稱,例如 Get。如果請求失敗, AWS IoT 作業會發佈關於該$aws/things/myThing/jobs/get/rejected主題的失敗訊息。

您也可以使用下列 HTTPS API 操作:

裝置可以使用連接埠 443 上的 HTTP 簽章版本 4 與 AWS IoT 工作進行通訊。此為 AWS SDK 與 CLI 使用的方法。如需這些工具的詳細資訊,請參閱AWS CLI 命令參考: iot-jobs-dataAWS SDK 和工具,並參閱您偏好語言的 IotJobsDataPlane 章節。

使用這種通訊方法,您的裝置會使用 IAM 登入資料透過 AWS IoT 工作進行驗證。

使用此方法可運用下列命令:

  • 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 工作進行通訊。

若使用此方法,您的裝置會使用 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 屬性。如需驗證程式碼檔簽章的詳細資訊,請參閱裝置代理程式範例