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

设备工作流程

设备可以使用以下任一方式处理它运行的任务。

  • 获取下一个任务

    1. 当设备首次联机时,它应订阅设备的 notify-next 主题。

    2. 使用 jobId $next 调用 DescribeJobExecution MQTT API 以获取下一个任务、其任务文档和其他详细信息,包括保存在 statusDetails 中的任何状态。如果任务文档具有代码文件签名,则您必须验证签名,然后才能继续处理任务请求。

    3. 调用 UpdateJobExecution MQTT API 以更新任务状态。或者,要在一个调用中将此步骤与上一步骤合并,设备可调用 StartNextPendingJobExecution

    4. (可选)您可在调用 UpdateJobExecutionStartNextPendingJobExecution 时为 stepTimeoutInMinutes 设置值来添加步骤计时器。

    5. 使用 UpdateJobExecution MQTT API 执行任务文档所指定的操作以报告任务的进度。

    6. 通过使用此 jobId 调用 DescribeJobExecution MQTT API 来继续监控任务执行。如果删除了任务执行,DescribeJobExecution 将返回 ResourceNotFoundException

      如果在设备运行任务时取消或删除了任务执行,则设备应能够恢复到有效状态。

    7. 在任务完成后调用 UpdateJobExecution MQTT API 以更新任务状态并报告成功或失败。

    8. 由于此任务的执行状态已更改为最终状态,因此,可用于执行的下一个任务(如果有)将发生更改。设备将收到下一个待处理任务执行已更改的通知。此时,设备将按照步骤 2 中所述继续操作。

    如果设备保持联机状态,则它在完成任务或添加新的待处理任务执行时,将继续收到下一个待处理任务执行的通知,包括其任务执行数据。在发生此情况时,设备将按照步骤 2 中所述继续操作。

  • 从可用任务中选取

    1. 当设备首次联机时,它应订阅事物的 notify 主题。

    2. 调用 GetPendingJobExecutions MQTT API 以获取待处理任务执行的列表。

    3. 如果列表包含一个或多个任务执行,请选取一个任务执行。

    4. 调用 DescribeJobExecution MQTT API 以获取任务文档和其它详细信息,包括保存在 statusDetails 中的任何状态。

    5. 调用 UpdateJobExecution MQTT API 以更新任务状态。如果在此命令中将 includeJobDocument 字段设置为 true,则设备可跳过上一个步骤并在此时检索任务文档。

    6. (可选)您可在调用 UpdateJobExecution 时为 stepTimeoutInMinutes 设置值来添加步骤计时器。

    7. 使用 UpdateJobExecution MQTT API 执行任务文档所指定的操作以报告任务的进度。

    8. 通过使用此 jobId 调用 DescribeJobExecution MQTT API 来继续监控任务执行。如果在设备运行任务时取消或删除了任务执行,则设备应能够恢复到有效状态。

    9. 在任务完成后调用 UpdateJobExecution MQTT API 以更新任务状态并报告成功或失败。

    如果设备保持联机状态,则在一个新的待处理任务执行变为可用时,它将收到所有待处理任务执行的通知。在发生此情况时,设备可按照步骤 2 中所述继续操作。

如果设备无法执行任务,它将调用 UpdateJobExecution MQTT API 来将任务状态更新为 REJECTED