本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
裝置可以使用 MQTT、HTTP Signature 第 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
/acceptedAWS IoT Jobs 服務會在 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 來擷取待定任務執行的清單。 -
呼叫
DescribeJobExecution
API (其中jobId
作為$next
) 來擷取下一個待定任務執行。 -
藉由呼叫
StartNextPendingJobExecution
API 來取得並開始下一個待定任務執行。
裝置可以在連接埠 443 上使用 HTTP Signature 第 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
屬性。如需驗證程式碼檔簽章的詳細資訊,請參閱裝置代理程式範例