

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

# 使用 AWS 托管模板创建作业 AWS CLI
<a name="job-template-manage-cli-create"></a>

使用获取 AWS CLI 有关 AWS 托管模板的信息，并使用这些模板创建作业。然后，您可以将任务另存为模板，并创建自己的自定义模板。

## 列出托管模板
<a name="job-template-manage-cli-list"></a>

该[https://docs.aws.amazon.com/cli/latest/reference/iot/list-managed-job-templates.html](https://docs.aws.amazon.com/cli/latest/reference/iot/list-managed-job-templates.html) AWS CLI 命令列出了您的所有作业模板 AWS 账户。

```
 aws iot list-managed-job-templates
```

默认情况下，运行此命令会显示所有可用的 AWS 托管模板及其详细信息。

```
{
    "managedJobTemplates": [
        {
            "templateArn": "arn:aws:iot:region::jobtemplate/AWS-Reboot:1.0",
            "templateName": "AWS-Reboot",
            "description": "A managed job template for rebooting the device.",
            "environments": [
                "LINUX"
            ],
            "templateVersion": "1.0"
        },
        {
            "templateArn": "arn:aws:iot:region::jobtemplate/AWS-Remove-Application:1.0",
            "templateName": "AWS-Remove-Application",
            "description": "A managed job template for uninstalling one or more applications.",
            "environments": [
                "LINUX"
            ],
            "templateVersion": "1.0"
        },
        {
            "templateArn": "arn:aws:iot:region::jobtemplate/AWS-Stop-Application:1.0",
            "templateName": "AWS-Stop-Application",
            "description": "A managed job template for stopping one or more system services.",
            "environments": [
                "LINUX"
            ],
            "templateVersion": "1.0"
        },

        ...

        {
            "templateArn": "arn:aws:iot:us-east-1::jobtemplate/AWS-Restart-Application:1.0",
            "templateName": "AWS-Restart-Application",
            "description": "A managed job template for restarting one or more system services.",
            "environments": [
                "LINUX"
            ],
            "templateVersion": "1.0"
        }
    ]
}
```

有关更多信息，请参阅 [ListManagedJobTemplates](https://docs.aws.amazon.com/iot/latest/apireference/API_ListManagedJobTemplates.html)。

## 获取有关托管式模板的详细信息
<a name="job-template-manage-cli-get"></a>

该[https://docs.aws.amazon.com/cli/latest/reference/iot/describe-managed-job-template.html](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-managed-job-template.html) AWS CLI 命令获取有关指定作业模板的详细信息。指定任务模板名称和可选的模板版本。如果未指定模板版本，则返回预定义的默认版本。以下示例显示运行命令以获取有关 `AWS-Download-File` 模板的详细信息。

```
aws iot describe-managed-job-template \
    --template-name AWS-Download-File
```

该命令显示模板详细信息和 ARN、其任务文档以及 `documentParameters` 参数，此参数是模板输入参数的键/值对的列表。有关不同模板和输入参数的信息，请参阅[托管模板远程操作和任务文档](job-templates-managed.md#job-template-manage-actions)。

**注意**  
使用此 API 时返回的`documentParameters`对象只能在通过 AWS 托管模板创建任务时使用。此对象不得用于自定义任务模板。有关演示如何使用此参数的示例，请参阅[使用托管模板创建任务](#job-template-manage-cli-create-job)。

```
{
    "templateName": "AWS-Download-File",
    "templateArn": "arn:aws:iot:region::jobtemplate/AWS-Download-File:1.0",
    "description": "A managed job template for downloading a file.",
    "templateVersion": "1.0",
    "environments": [
        "LINUX"
    ],
    "documentParameters": [
        {
            "key": "downloadUrl",
            "description": "URL of file to download.",
            "regex": "(.*?)",
            "example": "http://www.example.com/index.html",
            "optional": false
        },
        {
            "key": "filePath",
            "description": "Path on the device where downloaded file is written.",
            "regex": "(.*?)",
            "example": "/path/to/file",
            "optional": false
        },
        {
            "key": "runAsUser",
            "description": "Execute handler as another user. If not specified, then handler is executed as the same user as device client.",
            "regex": "(.){0,256}",
            "example": "user1",
            "optional": true
        },
        {
            "key": "pathToHandler",
            "description": "Path to handler on the device. If not specified, then device client will use the current working directory.",
            "regex": "(.){0,4096}",
            "example": "/path/to/handler/script",
            "optional": true
        }
    ],
    "document": "{\"version\":\"1.0\",\"steps\":[{\"action\":{\"name\":\"Download-File\",\"type\":\"runHandler\",\"input\":{\"handler\":\"download-file.sh\",\"args\":[\"${aws:iot:parameter:downloadUrl}\",\"${aws:iot:parameter:filePath}\"],\"path\":\"${aws:iot:parameter:pathToHandler}\"},\"runAsUser\":\"${aws:iot:parameter:runAsUser}\"}}]}"
}
```

有关更多信息，请参阅 [DescribeManagedJobTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeManagedJobTemplate.html)。

## 使用托管模板创建任务
<a name="job-template-manage-cli-create-job"></a>

该[https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html) AWS CLI 命令可用于根据作业模板创建作业。它的目标是名为 `thingOne` 的设备，并将指定托管模板的 Amazon Resource Name (ARN)，用作该任务的基础。您可以覆盖高级配置（如超时和取消配置），方法是传递 `create-job` 命令的关联参数。

该示例显示如何创建使用 `AWS-Download-File` 模板的任务。它还展示了如何使用 `document-parameters` 参数指定模板的输入参数。

**注意**  
仅在 AWS 托管模板中使用该`document-parameters`对象。此对象不得与自定义任务模板一起使用。

```
aws iot create-job \
   --targets arn:aws:iot:region:account-id:thing/thingOne \ 
   --job-id "new-managed-template-job" \ 
   --job-template-arn arn:aws:iot:region::jobtemplate/AWS-Download-File:1.0 \
   --document-parameters downloadUrl=https://example.com/index.html,filePath=path/to/file
```

其中：
+ *region*是 AWS 区域。
+ *account-id*是唯一的 AWS 账户 数字。
+ `thingOne` 是任务指向的 IoT 事物的名称。
+ *AWS-Download-File:1.0*是托管模板的名称。
+ `https://example.com/index.html` 是从中下载文件的 URL。
+ `https://pathto/file/index` 是设备上用于存储下载文件的路径。

运行以下命令创建模板的任务：`AWS-Download-File`。

```
{
    "jobArn": "arn:aws:iot:region:account-id:job/new-managed-template-job",
    "jobId": "new-managed-template-job",
    "description": "A managed job template for downloading a file."
}
```

## 从托管模板创建自定义任务模板
<a name="job-template-manage-cli-create-jobtemplate"></a>

1. 使用上一节中介绍的托管模板创建任务。

1. 使用您创建的任务的 ARN 创建自定义任务模板。有关更多信息，请参阅 [从现有任务创建任务模板](job-templates-cli.md#job-templates-cli-create-from-job)。