本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
裝置和任務
裝置可以使用 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 主題發佈成功與失敗訊息。主題是透過將
accepted
或rejected
附加到用於發出請求的主題來形成。在這裡,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 操作:
-
藉由呼叫
UpdateJobExecution
API 來更新任務執行的狀態。 -
藉由呼叫
DescribeJobExecution
API 來查詢任務執行的狀態。 -
藉由呼叫
GetPendingJobExecutions
API 來擷取待定任務執行的清單。 -
呼叫
DescribeJobExecution
API (其中jobId
作為$next
) 來擷取下一個待定任務執行。 -
藉由呼叫
StartNextPendingJobExecution
API 來取得並開始下一個待定任務執行。
裝置可以使用連接埠 443 上的 HTTP 簽章版本 4 與 AWS IoT 工作進行通訊。此為 AWS SDK 與 CLI 使用的方法。如需這些工具的詳細資訊,請參閱AWS CLI 命令參考: iot-jobs-data或 AWS SDK 和工具
使用這種通訊方法,您的裝置會使用 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
屬性。如需驗證程式碼檔簽章的詳細資訊,請參閱裝置代理程式範例