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

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

设备和任务

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

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

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

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

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

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

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

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

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

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

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

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

设备可以在端口 443 上使用 HTTP 签名版本 4 与 Amazon IoT Job 通信。这是由 Amazon SDK 和 CLI 使用的方法。有关这些工具的更多信息,请参阅Amazon CLI 命令参考: iot-jobs-dataAmazon 软件开发工具包和工具,并参阅您的首选语言 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 属性内。有关验证代码文件签名的更多信息,请参阅设备代理示例