

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

# 任务关键概念
<a name="key-concepts-jobs"></a>

以下概念提供了有关 Amazon IoT 作业以及如何创建和部署作业以在设备上运行远程操作的详细信息。

## 基本概念
<a name="basic-concepts-jobs"></a>

以下是您在使用 Amazon IoT Jobs 时必须了解的基本概念。

**任务**  
任务是被发送到一台或多台连接到 Amazon IoT的设备并在这些设备上运行的远程操作。例如，您可以定义一个任务，该任务指示一组设备下载并安装应用程序或运行固件更新、重启、轮换证书或执行远程故障排除操作。

**任务文档**  
要创建任务，您必须先创建一个任务文档，该文档是要由设备执行的远程操作的描述。  
任务文档是 UTF-8 编码的 JSON 文档，其中包含您的设备执行任务所需的信息。任务文档包含一个或多个文件，设备可以在 URLs 其中下载更新或其他数据。任务文档可存储在 Amazon S3 存储桶中，或者随用于创建任务的命令内联包含。  
在 MQTT 响应中，`jobDocument` 字段是一个 JSON 对象。在 HTTP 响应中，它是 JSON 对象的字符串表示形式。

** 目标**  
在创建任务时，您需要指定一系列目标，它们是应执行操作的设备。目标可以是事物和/或[事物组](thing-groups.md)。 Amazon IoT 作业服务向每个目标发送一条消息，告知其有任务可用。

**部署**  
通过提供任务文档并指定目标列表创建任务之后，系统会将任务文档部署到要为其执行更新的远程目标设备上。对于快照任务，任务会在部署到目标设备后完成。对于持续任务，任务会在设备添加到组时部署到该组设备。

**任务执行**  
任务执行是目标设备上的任务的实例。目标通过下载任务文档来开始执行任务。然后，它执行文档中指定的操作，并将其进度报告给 Amazon IoT。执行编号是特定目标上的任务执行的唯一标识符。 Amazon IoT 作业服务提供命令来跟踪目标上作业的执行进度以及所有目标上的作业进度。

## 任务类型概念
<a name="advanced-concepts-jobs"></a>

以下概念可以帮助您更多地了解可以使用 Jobs 创建的不同类型的 Amazon IoT 作业。

**快照任务**  
默认情况下，任务将发送到您在创建该任务时指定的所有目标。在这些目标完成任务（或报告它们无法执行此操作）后，任务即完成。

**持续任务**  
持续的任务将发送到您在创建该任务时指定的所有目标。它继续运行并发送到添加到目标组的任何新设备（事物）。例如，在将设备添加到组时，可使用持续任务加入或升级设备。您可以通过在创建任务时设置可选参数，来使任务成为持续任务。  
当使用动态事物组确定目标物联网实例集时，我们建议您使用连续任务而不是快照任务。通过使用连续任务，加入组的设备即使在任务创建之后也会收到任务执行。

## 预签名 URLs
<a name="security-concepts-jobs"></a><a name="presigned"></a>

为了安全、有时间限制地访问未包含在任务文档中的数据，您可以使用预签名的 Amazon S3。 URLs将数据放置在 Amazon S3 存储桶中，并添加一个指向任务文档中的数据的占位符链接。当 Amazon IoT Jobs 收到任务文档请求时，它会通过查找占位符链接来解析任务文档，然后用预签名的 Amazon S3 替换这些链接。 URLs

占位符链接采用以下格式：

```
${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key}
```

其中*bucket*，是您的存储桶名称，*key*是您要关联的存储桶中的对象。

在北京和宁夏区域，只有资源所有者拥有 ICP（互联网内容提供商）许可证，预签名才 URLs 有效。有关更多信息，请参阅《*中国[服务入门》文档中的 Amazon 简单存储](https://docs.amazonaws.cn/en_us/aws/latest/userguide/s3.html) Amazon 服务*。

## 任务配置概念
<a name="advanced-concepts-jobs"></a>

以下概念可以帮助您了解如何配置任务。

** 推出**  
您可以指定向目标发送待处理任务执行通知的速度。这样，您就可以创建一个分段推出以更好地管理更新、重启和其它操作。您可以使用静态推出率或指数级推出率来创建部署配置。您可以使用静态推出速率来指定每分钟可通知的最大任务目标数。  
有关设置推出速率的示例，以及有关配置任务推出的更多信息，请参阅 [任务推出、计划和中止配置](jobs-configurations-details.md#job-rollout-abort-scheduling)。

** 计划**  
通过任务计划，您可以计划向目标组中的所有设备推出连续任务和快照任务的任务文档的时间。此外，您可以创建一个可选的维护时段，其中包含任务向目标组中的所有设备推出任务文档的特定日期和时间。维护时段是一种周期性实例，其频率为每天、每周、每月或在初始任务或任务模板创建期间选择的自定义日期和时间。只能将连续任务安排为在维护时段内执行推出。  
任务计划是特定于您的任务的。无法安排单个任务执行。有关更多信息，请参阅 [任务推出、计划和中止配置](jobs-configurations-details.md#job-rollout-abort-scheduling)。

** 中止**  
您可以创建一组条件在满足您指定的特定条件时中止推出。有关更多信息，请参阅 [任务推出、计划和中止配置](jobs-configurations-details.md#job-rollout-abort-scheduling)。

** 超时**  
只要任务部署卡在 `IN_PROGRESS` 状态的时间超出预期，您就会收到任务超时通知。有两种类型的计时器：进行中计时器和步骤计时器。当任务为 `IN_PROGRESS` 时，您可以监控和跟踪任务部署的进度。  
推出和中止配置特定于您的任务，而超时配置特定于任务部署。有关更多信息，请参阅 [任务执行超时和重试配置](jobs-configurations-details.md#job-timeout-retry)。

** 重试**  
通过任务重试，可以在任务失败和/或超时时重试任务执行。您最多可以重试 10 次任务执行。您可以监控和跟踪重试的进度以及任务执行是否成功。  
推出和中止配置特定于您的任务，而超时和重试配置特定于任务执行。有关更多信息，请参阅 [任务执行超时和重试配置](jobs-configurations-details.md#job-timeout-retry)。