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

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

使用 Amazon IoT Jobs API 指定任务配置

您可以使用 CreateJobCreateJobTemplate API 指定不同的任务配置。以下各节介绍如何添加这些配置。添加配置后,您可以使用 JobExecutionSummaryJobExecutionSummaryForJob 查看配置状态。

有关不同配置及其工作方式的更多信息,请参阅 任务配置的工作原理

推出配置

您可以为推出配置指定恒定推出速率或指数推出速率。

  • 设置恒定推出速率

    若要设置恒定推出速率,请使用 JobExecutionsRolloutConfig 对象将 maximumPerMinute 参数添加到 CreateJob 请求。该参数会指定任务执行的速率上限。此值为可选值,范围从 1 到 1000。如果不设置该值,则会使用 1000 作为默认值。

    "jobExecutionsRolloutConfig": { "maximumPerMinute": 1000 }
  • 设置指数推出速率

    若要设置任务可变推出速率,请使用 JobExecutionsRolloutConfig 对象。您可以在运行 ExponentialRolloutRate API 操作时配置 CreateJob 属性。以下示例使用 exponentialRate 参数设置指数推出速率。有关这些参数的更多信息,请参阅ExponentialRolloutRate

    { ... "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": 50, "incrementFactor": 2, "rateIncreaseCriteria": { "numberOfNotifiedThings": 1000, "numberOfSucceededThings": 1000 }, "maximumPerMinute": 1000 } } ... }

其中,参数:

baseRatePerMinute

指定达到 numberOfNotifiedThingsnumberOfSucceededThings 阈值之前任务的执行速率。

incrementFactor

指定达到 numberOfNotifiedThingsnumberOfSucceededThings 阈值之后推出速率增加的指数因子。

rateIncreaseCriteria

指定 numberOfNotifiedThingsnumberOfSucceededThings 阈值。

中止配置

要使用 API 添加此配置,请在运行 CreateJobCreateJobTemplate API 操作时指定 AbortConfig 参数。以下示例介绍了任务推出的中止配置,该任务经历了如 CreateJob API 操作指定的多次失败执行。

注意

删除任务执行会影响已完成执行总数的计算值。当任务中止时,服务会创建自动的 commentreasonCode 以将用户驱动的取消与任务中止取消区分开来。

"abortConfig": { "criteriaList": [ { "action": "CANCEL", "failureType": "FAILED", "minNumberOfExecutedThings": 100, "thresholdPercentage": 20 }, { "action": "CANCEL", "failureType": "TIMED_OUT", "minNumberOfExecutedThings": 200, "thresholdPercentage": 50 } ] }

其中,参数:

action

指定满足中止条件时要采取的操作。此参数是必需的,并且 CANCEL 是唯一的有效值。

failureType

指定哪种失败类型应启动任务中止。有效值为 FAILEDREJECTEDTIMED_OUTALL

minNumberOfExecutedThings

指定在满足任务中止条件之前必须完成的任务执行数量。在此示例中,Amazon IoT 直到至少 100 个设备已完成任务执行时才检查是否应执行任务中止。

thresholdPercentage

指定可启动任务中止的已执行任务的事物总数。在此示例中,Amazon IoT 会按顺序检查;如果达到阈值百分比,则启动任务中止。如果完成 100 次执行后至少有 20% 的完整执行失败,则会取消任务推出。如果不符合该条件,在完成 200 次执行后,Amazon IoT 会检查是否至少有 50% 的已完成执行超时。如果是这样,则会取消任务推出。

计划配置

要使用此 API 添加此配置,请在运行 CreateJobCreateJobTemplate API 操作时指定可选的 SchedulingConfig

"SchedulingConfig": { "endBehavior": string "endTime": string "maintenanceWindows": string "startTime": string }

其中,参数:

startTime

指定任务开始的日期和时间。

endTime

指定任务结束的日期和时间。

maintenanceWindows

指定是否为计划任务选择了可选维护时段,以便将任务文档推出到目标组中的所有设备。maintenanceWindow 的字符串格式为 YYYY/MM/DD(表示日期)和 hh: mm(表示时间)。

endBehavior

指定计划任务到达 endTime 时的任务行为。

注意

任务的可选 SchedulingConfig 可在 DescribeJobDescribeJobTemplate API 中查看。

超时配置

要使用 API 添加此配置,请在运行 CreateJobCreateJobTemplate API 操作时指定 TimeoutConfig 参数。

使用超时配置

  1. 若要在创建任务或任务模板时设置进行中计时器,请为可选 TimeoutConfig 对象的 inProgressTimeoutInMinutes 属性设置一个值。

    "timeoutConfig": { "inProgressTimeoutInMinutes": number }
  2. 若要为任务执行设置步骤计时器,请在调用 UpdateJobExecution 时为 stepTimeoutInMinutes 设置一个值。步骤计时器仅应用于您更新的任务执行。您每次更新任务执行时,可以为此计时器设置新值。

    注意

    UpdateJobExecution 可以通过创建新的值为 -1 的步骤计时器来丢弃已经创建的步骤计时器。

    { ... "statusDetails": { "string" : "string" }, "stepTimeoutInMinutes": number }
  3. 若要创建新的步骤计时器,您也可以调用 StartNextPendingJobExecution API 操作。

重试配置

注意

创建任务时,请考虑为配置采用适当的重试次数。为避免因潜在的重试失败产生额外成本,请添加中止配置。创建任务后,便无法更新重试次数。您只能使用 UpdateJob API 操作将重试次数设置为 0。

要使用 API 添加此配置,请在运行 CreateJobCreateJobTemplate API 操作时指定 jobExecutionsRetryConfig 参数。

{ ... "jobExecutionsRetryConfig": { "criteriaList": [ { "failureType": "string", "numberOfRetries": number } ] } ... }

其中 criteriaList 是指定条件列表的数组,用于确定任务的每种失败类型允许的重试次数。