

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

# 使用作业 API 指定 AWS IoT 任务配置
<a name="job-configurations-api"></a>

您可以使用[CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)或 [CreateJobTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html)API 来指定不同的任务配置。以下各节介绍如何添加这些配置。添加配置后，您可以使用[JobExecutionSummary](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html)和[JobExecutionSummaryForJob](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummaryForJob.html)来查看其状态。

有关不同配置及其工作方式的更多信息，请参阅 [任务配置的工作原理](jobs-configurations-details.md)。

## 推出配置
<a name="job-rollout-api"></a>

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

**设置恒定推出速率**  
若要设置恒定推出速率，请使用 [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html) 对象将 `maximumPerMinute` 参数添加到 `CreateJob` 请求。该参数会指定任务执行的速率上限。此值为可选值，范围从 1 到 1000。如果不设置该值，则会使用 1000 作为默认值。

  ```
      "jobExecutionsRolloutConfig": {
          "maximumPerMinute": 1000
      }
  ```
+ 

**设置指数推出速率**  
若要设置任务可变推出速率，请使用 [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionsRolloutConfig.html) 对象。您可以在运行 `ExponentialRolloutRate` API 操作时配置 `CreateJob` 属性。以下示例使用 `exponentialRate` 参数设置指数推出速率。有关这些参数的更多信息，请参阅[https://docs.aws.amazon.com/iot/latest/apireference/API_ExponentialRolloutRate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ExponentialRolloutRate.html)。

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

其中，参数：

**baseRatePer分钟**  
指定达到 `numberOfNotifiedThings` 或 `numberOfSucceededThings` 阈值之前任务的执行速率。

**incrementFactor**  
指定达到 `numberOfNotifiedThings` 或 `numberOfSucceededThings` 阈值之后推出速率增加的指数因子。

**rateIncreaseCriteria**  
指定 `numberOfNotifiedThings` 或 `numberOfSucceededThings` 阈值。

## 中止配置
<a name="job-abort-api"></a>

要使用 API 添加此配置，请在运行 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) 或 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API 操作时指定 [https://docs.aws.amazon.com/iot/latest/apireference/API_AbortConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_AbortConfig.html) 参数。以下示例介绍了任务推出的中止配置，该任务经历了如 `CreateJob` API 操作指定的多次失败执行。

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

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

其中，参数：

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

**failureType**  
指定哪种失败类型应启动任务中止。有效值为 `FAILED`、`REJECTED`、`TIMED_OUT` 和 `ALL`。

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

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

## 计划配置
<a name="job-scheduling-api"></a>

要使用此 API 添加此配置，请在运行 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) 或 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API 操作时指定可选的 [https://docs.aws.amazon.com/iot/latest/apireference/API_SchedulingConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_SchedulingConfig.html)。

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

其中，参数：

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

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

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

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

**注意**  
作业`SchedulingConfig`的可选内容可在[https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html)和[https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobTemplate.html) APIs中查看。

## 超时配置
<a name="job-timeout-api"></a>

要使用 API 添加此配置，请在运行 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) 或 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API 操作时指定 [https://docs.aws.amazon.com/iot/latest/apireference/API_TimeoutConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_TimeoutConfig.html) 参数。

使用超时配置

1. 要在创建作业或作业模板时设置正在进行的计时器，请为可选[TimeoutConfig](https://docs.aws.amazon.com//iot/latest/apireference/API_TimeoutConfig.html)对象的`inProgressTimeoutInMinutes`属性设置一个值。

   ```
       "timeoutConfig": { 
         "inProgressTimeoutInMinutes": number
      }
   ```

1. 要为任务执行指定步数计时器，请为调用`stepTimeoutInMinutes`时设置一个值[UpdateJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html)。步骤计时器仅应用于您更新的任务执行。您每次更新任务执行时，可以为此计时器设置新值。
**注意**  
`UpdateJobExecution` 可以通过创建新的值为 -1 的步骤计时器来丢弃已经创建的步骤计时器。

   ```
   {
      ... 
       "statusDetails": { 
         "string" : "string" 
      },
      "stepTimeoutInMinutes": number
   }
   ```

1. 要创建新的步数计时器，您也可以调用 [StartNextPendingJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_StartNextPendingJobExecution.html)API 操作。

## 重试配置
<a name="job-retry-api"></a>

**注意**  
创建任务时，请考虑为配置采用适当的重试次数。为避免因潜在的重试失败产生额外成本，请添加中止配置。创建任务后，便无法更新重试次数。您只能使用 [UpdateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateJob.html)API 操作将重试次数设置为 0。

要使用 API 添加此配置，请在运行 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) 或 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html) API 操作时指定 [https://docs.aws.amazon.com/iot/latest/apireference/API_jobExecutionsRetryConfig.html](https://docs.aws.amazon.com/iot/latest/apireference/API_jobExecutionsRetryConfig.html) 参数。

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

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