View a markdown version of this page

任务和任务执行状态 - AWS IoT Core

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

任务和任务执行状态

以下各节描述了 AWS IoT 任务的生命周期和任务执行的生命周期。

任务状态

下图显示了 AWS IoT 作业的不同状态。

显示 AWS IoT 作业不同状态的图片。

使用 J AWS IoT obs 创建的任务可以处于以下状态之一:

  • SCHEDULED

    在使用 AWS IoT 控制台、 CreateJob API 或 API 创建初始任务或CreateJobTemplate作业模板期间,您可以在 AWS IoT 控制台或 CreateJob API 或 CreateJobTemplate API 中选择可选SchedulingConfig的计划配置。当您启动包含特定 startTime、endTime 和 endBehavior 的计划任务时,任务状态将更新为 SCHEDULED。当任务达到您选择的 startTime 或下一个维护时段的 startTime 时(如果您在维护时段中选择了任务推出),状态将从 SCHEDULED 更新为 IN_PROGRESS,并开始将任务文档推出到目标组中的所有设备。

  • 进行中

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

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

    注意

    当 IN_PROGRESS 任务达到当前维护时段结束时,任务文档的推出将停止。该任务将更新为 SCHEDULED,直至下一个维护时段的 startTime。

  • COMPLETED

    连续任务通过以下方式之一进行处理:

    • 对于未选择可选计划配置的连续任务,此任务始终处于进行中,并继续针对添加到目标组的任何新设备运行。它从不会达到 COMPLETED 状态。

    • 对于选择了可选计划配置的连续任务,以下表述是正确的:

      • 如果提供了 endTime,则连续任务将在 endTime 已过且所有任务执行都达到最终状态时达到 COMPLETED 状态。

      • 如果在可选计划配置中未提供 endTime,则连续任务将继续执行任务文档推出。

    对于快照任务,当其所有任务执行都进入最终状态(如 SUCCEEDED、FAILED、TIMED_OUT、REMOVED 或 CANCELED)时,任务状态更改为 COMPLETED。

  • CANCELED

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

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

  • DELETION_IN_PROGRESS

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

任务执行状态

下表显示了 AWS IoT 任务执行的不同状态以及状态更改是由设备启动还是由 AWS IoT 作业启动的。

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

下一节详细介绍了当您使用 Jobs 创建任务时推出的任务执行的 AWS IoT 状态。

  • QUEUED

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

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

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

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

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

    如果您的物联网设备订阅了预留任务主题$notify和$notify-next,并且您的设备调用了状态为StartNextPendingJobExecution的 API 或 UpdateJobExecution APIIN_PROGRESS,则 AWS IoT 作业会将任务执行状态设置为。IN_PROGRESS

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

    注意

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

  • SUCCEEDED

    当您的设备成功完成远程操作时,设备必须调用状态为UpdateJobExecution的 API,SUCCEEDED以表明任务执行成功。 AWS IoT 然后,作业更新并返回任务执行状态为SUCCEEDED。

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

    当您的设备无法完成远程操作时,设备必须调用状态为UpdateJobExecution的 API Failed 以表明任务执行失败。 AWS IoT 然后,作业更新并返回任务执行状态为Failed。您可以使用任务执行重试配置重试设备的这一任务执行。

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

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

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

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

  • REMOVED

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

  • CANCELED

    当您使用控制台或或 CancelJobExecution API 取消任务或取消任务执行时,或者当满足使用指定的中止条件时, AWS IoT Jobs 会取消作业并将任务执行状态设置 任务中止配置为。CancelJob CANCELED