本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
任务和任务执行状态
以下各个部分介绍 Amazon IoT 任务的生命周期和任务执行的生命周期。
任务状态
下图演示了 Amazon IoT 任务的不同状态。

使用 Amazon IoT Jobs 创建的任务可以处于以下状态之一:
-
已计划
在使用Amazon IoT控制台、CreateJobAPI 或 API 初始创建任务或任务模板期间,您可以在Amazon IoT控制台或 CreateJobTemplateAPI 或 CreateJobCreateJobTemplateAPI 中选择可选的调度配置。
SchedulingConfig
当您启动包含特定startTime
、endTime
和endBehavoir
的计划任务时,任务状态将更新为SCHEDULED
。当任务达到您选择的startTime
,startTime
或者如果您选择了任务推出时,状态将从更新为,IN_PROGRESS
并开始SCHEDULED
向目标组中的所有设备推出任务文档。 -
IN_PROGRESS
当您使用Amazon IoT控制台或 CreateJobAPI 创建任务时,任务状态更新为
IN_PROGRESS
。在任务创建期间,Amazon IoT Jobs 开始向目标组中的设备推出任务执行。一旦所有任务执行都已推出,Amazon IoT Jobs 就会等待设备完成远程操作。有关适用于进行中任务的并发和限制的信息,请参阅 任务限制。
注意
当
IN_PROGRESS
任务达到当前维护时段的结束时,任务文档的发布将停止。该作业将更新到,SCHEDULED
startTime
直到下一个维护时段结束。 -
COMPLETED
连续任务通过方式方式:
-
对于未选择可选计划配置的连续任务,该任务始终处于进行中,并继续针对添加到目标组的任何新设备运行。它永远不会达到状态为
COMPLETED
。 -
对于选择了可选调度配置的连续作业,以下情况成立:
-
如果提供
endTime
了,则连续作业将在结束且所有作业执行都达到终端COMPLETED
状态时endTime
达到状态。 -
如果在可选的调度配置中未提供,则连续作业将继续执行任务文档的发布。
endTime
-
对于快照任务,当其所有任务执行都进入最终状态(如
SUCCEEDED
、FAILED
、TIMED_OUT
、REMOVED
或CANCELED
)时,任务状态更改为COMPLETED
。 -
-
CANCELED
当您使用Amazon IoT控制台、CancelJobAPI 或取消任务时 任务中止配置,任务状态将更改为
CANCELED
。在取消任务期间,Amazon IoT Jobs 开始取消之前创建的任务执行。有关适用于正在取消的任务的并发和限制的信息,请参阅 任务限制。
-
DELETION_IN_PROGRESS
当您使用Amazon IoT控制台或 DeleteJobAPI 删除任务时,任务状态更改为
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
如果您的 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
当您使用控制台、
CancelJob
或CancelJobExecution
API 取消任务或取消任务执行时,或当满足使用 任务中止配置 指定的中止条件时,Amazon IoT Jobs 将取消任务并将任务执行状态设置为CANCELED
。