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

任务和任务执行状态

以下各个部分介绍 Amazon IoT 任务的生命周期和任务执行的生命周期。

任务状态

下图演示了 Amazon IoT 任务的不同状态。


                        显示 Amazon IoT 任务的不同状态的图。

使用 Amazon IoT Jobs 创建的任务可以处于以下状态之一:

  • IN_PROGRESS

    当您使用 Amazon IoT 控制台或 CreateJob API 创建任务时,任务状态更改为 IN_PROGRESS。在任务创建期间,Amazon IoT Jobs 开始向目标组中的设备推出任务执行。一旦所有任务执行都已推出,Amazon IoT Jobs 就会等待设备完成远程操作。

    有关适用于进行中任务的并发和限制的信息,请参阅 任务限制

  • COMPLETED

    连续任务始终处于进行中,并继续针对添加到目标组的任何新设备运行。对于快照任务,当其所有任务执行都进入最终状态(如 SUCCEEDEDFAILEDTIMED_OUTREMOVEDCANCELED)时,任务状态更改为 COMPLETED

  • CANCELED

    当您使用 Amazon IoT 控制台、CancelJob API 或 任务中止配置 取消任务时,任务状态更改为 CANCELED。在取消任务期间,Amazon IoT Jobs 开始取消之前创建的任务执行。

    有关适用于正在取消的任务的并发和限制的信息,请参阅 任务限制

  • DELETION_IN_PROGRESS

    当您使用 Amazon IoT 控制台或 DeleteJob API 删除任务时,任务状态更改为 DELETION_IN_PROGRESS。在任务删除期间,Amazon IoT Jobs 开始删除之前创建的任务执行。删除所有任务执行后,该任务将从您的 Amazon 账户中消失。

任务执行状态

下表显示了 Amazon IoT 任务执行的不同状态,以及状态更改是由设备发起还是由 Amazon IoT Jobs 发起。

任务执行状态和源
任务执行状态 由设备发起? 由 Amazon IoT Jobs 发起? 终端状态? 是否可以重试?
QUEUED 不适用
IN_PROGRESS 不适用
SUCCEEDED 不适用
FAILED
TIMED_OUT
REJECTED
REMOVED
CANCELED

以下部分详细介绍了当您使用 Amazon IoT Jobs 创建任务时推出的任务执行的状态。

  • QUEUED

    当 Amazon IoT Jobs 为目标设备推出任务执行时,任务执行状态设置为 QUEUED。任务执行保留为 QUEUED 状态,直到:

    • 您的设备收到任务执行,调用任务 API 并将状态报告为 IN_PROGRESS

    • 您取消任务或任务执行,或者当满足您使用中止配置指定的中止条件且状态更改为 CANCELED 时。

    • 您的设备已从目标组中移除且状态更改为 REMOVED

    
                                此图像显示排队的任务执行如何将状态更改为 IN_PROGRESS 以及在设备不接受任务创建请求时如何拒绝任务。
  • IN_PROGRESS

    如果您的 IoT 设备订阅了保留的任务主题 $notify$notify-next,并且您的设备调用 StartPendingJobExecution API 或 UpdateJobExecution API 且状态为 IN_PROGRESS,则 Amazon IoT Jobs 会将任务执行状态设置为 IN_PROGRESS

    UpdateJobExecution API 可以多次调用,状态为 IN_PROGRESS。您可以使用 statusDetails 对象指定有关执行步骤的其他详细信息。

    注意

    如果您为每个设备创建多个任务,Amazon IoT Jobs 和 MQTT 协议不能保证交付顺序。

  • SUCCEEDED

    当您的设备成功完成远程操作时,设备必须调用 UpdateJobExecution API 且状态为 SUCCEEDED,以表示任务执行获得成功。然后,Amazon IoTJobs 将任务执行状态更新并返回为 SUCCEEDED

    
                                此图像显示正在进行的任务执行如何失败以及如何重试执行。
  • FAILED

    当您的设备未能完成远程操作时,设备必须调用 UpdateJobExecution API 且状态为 Failed,以表示任务执行失败。然后,Amazon IoTJobs 将任务执行状态更新并返回为 Failed。您可以使用任务执行重试配置重试设备的这一任务执行。

    
                                此图像显示正在进行的任务执行如何失败以及如何重试执行。
  • TIMED_OUT

    如果您的设备在状态为 IN_PROGRESS 时无法完成任务步骤,或在进行中计时器的超时持续时间内无法完成远程操作,Amazon IoT Jobs 会将任务执行状态设置为 TIMED_OUT。您还有一个用于正在进行的任务的每个任务步骤的步骤计时器,并且仅适用于任务执行。正在进行的计时器持续时间是使用 任务执行超时配置inProgressTimeoutInMinutes 属性指定的。您可以使用任务执行重试配置重试设备的这一任务执行。

    
                                此图像显示正在进行的任务执行如何超时以及如何重试执行。
  • REJECTED

    当您的设备收到无效或不兼容的请求时,设备必须调用 UpdateJobExecution API 且状态为 REJECTED。然后,Amazon IoT然后,Jobs 将任务执行状态更新并返回为 REJECTED

  • REMOVED

    当设备不再是任务执行的有效目标时,例如当它脱离动态事物组时,Amazon IoT Jobs 将任务执行状态设置为 REMOVED。您可以将事物重新附加到目标组,然后重新启动设备的任务执行。

  • CANCELED

    当您使用控制台、CancelJobCancelJobExecution API 取消任务或取消任务执行时,或当满足使用 任务中止配置 指定的中止条件时,Amazon IoT Jobs 将取消任务并将任务执行状态设置为 CANCELED