设备和任务 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

设备和任务

设备可以使用 MQTT、HTTP 签名版本 4 或 HTTP TLS 的任务与 Amazon IoT Jobs 通信。确定设备与 Amazon IoT Jobs 通信时要使用的端点,运行 DescribeEndpoint 命令。例如,如果您运行此命令:

aws iot describe-endpoint --endpoint-type iot:Data-ATS

您会获得与以下内容相似的结果:

{ "endpointAddress": "a1b2c3d4e5f6g7-ats.iot.us-west-2.amazonaws.com" }

设备可以用 MQTT 协议的任务与 Amazon IoT Jobs 通信。设备将订阅 MQTT 主题,以便获得新任务通知和接收来自 Amazon IoT Jobs 服务的响应。设备在 MQTT 主题上发布以查询或更新任务执行的状态。每台设备都有自己的一般 MQTT 主题。有关发布和订阅 MQTT 主题的更多信息,请参阅 设备通信协议

利用此通信方法,您的设备可使用其特定于设备的证书和私有密钥向 Amazon IoT Jobs 服务进行身份验证。

您的设备可以订阅以下主题。thing-name 是与设备关联的事物名称。

  • $aws/things/thing-name/jobs/notify

    设备订阅此主题,在某个事物的待处理执行列表中添加或删除任务执行时接收通知。

  • $aws/things/thing-name/jobs/notify-next

    设备订阅此主题,在下一个待处理任务执行发生更改时通知。

  • $aws/things/thing-name/request-name/accepted

    Amazon IoT Jobs 服务在 MQTT 主题上发布成功和失败消息。通过将 acceptedrejected 追加到用于发出请求的主题来构成该主题。此处,request-name 是请求的名称,例如 Get 和主题可以是:$aws/things/myThing/jobs/get.Amazon IoT 然后,Jobs 将在 $aws/things/myThing/jobs/get/accepted 主题上发布成功消息。

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

    此处,request-name 是请求的名称,例如 Get。如果请求失败,Amazon IoT Jobs 将在 $aws/things/myThing/jobs/get/rejected 主题上发布失败消息。

还可使用下列 HTTPS API:

设备可以使用端口443 上的 HTTP 签名版本 4 与 Amazon IoT Jobs 通信。这是由Amazon SDK 和 CLI 使用的方法。有关这些工具的更多信息,请参阅 Amazon CLI 命令引用:iot-jobs-dataAmazon SDK 和工具,并参考您的首选语言的 IotJobsDataPlane 部分。

利用这种通信方法,您的设备将使用 IAM 凭证向 Amazon 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 与 Amazon IoT Jobs 通信。

利用此方法,您的设备可使用基于 X.509 证书的身份验证(例如,其特定于设备的证书和私有密钥)。

可以使用此方法执行以下命令:

  • DescribeJobExecution

  • GetPendingJobExecutions

  • StartNextPendingJobExecution

  • UpdateJobExecution

对设备进行编程以使用任务

本部分中的示例使用 MQTT 来演示设备如何使用 Amazon IoT Jobs 服务。或者,您也可以使用对应的 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

如果您使用 Amazon IoT 的代码签名,则设备代码必须验证代码文件的签名。该签名在任务文档中的 codesign 属性内。有关验证代码文件签名的更多信息,请参阅设备代理示例