View a markdown version of this page

设备和任务 - AWS IoT Core

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设备和任务

设备可以使用 MQTT、HTTP 签名版本 4 或 HTTP TLS 与 AWS IoT Jobs 通信。要确定设备与 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 Job 通信。设备订阅 MQTT 主题以接收有关新任务的通知并接收来自 AWS IoT 任务服务的响应。设备在 MQTT 主题上发布以查询或更新任务启动的状态。每台设备都有自己的一般 MQTT 主题。有关发布和订阅 MQTT 主题的更多信息,请参阅 设备通信协议。

通过这种通信方式,您的设备使用其设备专属证书和私钥向 Jobs 进行 AWS IoT 身份验证。

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

  • $aws/things/东西的名字/jobs/notify

    订阅此主题,以便在待处理任务启动列表中添加或删除任务启动时接收通知。

  • $aws/things/东西的名字/jobs/notify-下一步

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

  • $aws/things/东西的名字/工作/请求名称/已接受

    AWS IoT Jobs 服务发布有关 MQTT 主题的成功和失败消息。通过将 accepted 或 rejected 追加到用于发出请求的主题来构成该主题。这里, request-name 是请求的名称,例如Get,主题可以是:$aws/things/myThing/jobs/get. AWS IoT 然后,乔布斯发布有关该$aws/things/myThing/jobs/get/accepted主题的成功消息。

  • $aws/things/东西的名字/工作/请求名称/已拒绝

    此处,request-name 是请求的名称,例如 Get。如果请求失败, AWS IoT Jobs 会发布有关该$aws/things/myThing/jobs/get/rejected主题的失败消息。

您还可以使用以下 HTTPS API 操作:

设备可以在端口 443 上使用 HTTP 签名版本 4 与 AWS IoT Jobs 通信。这是由 AWS SDK 和 CLI 使用的方法。有关这些工具的更多信息,请参阅AWS CLI 命令参考:iot-jobs-data 或 AWS SDK 和工具,并参阅相应的首选语言 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 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

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