

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 建立自訂任務範本 AWS CLI
<a name="job-templates-cli"></a>

本主題說明如何使用 AWS CLI建立、刪除和擷取任務範本的詳細資訊。

## 從頭建立任務範本
<a name="job-templates-cli-create-scratch"></a>

下列 AWS CLI 命令說明如何使用存放在 S3 儲存貯體中的任務文件 (*job-document.json*) 和具有從 Amazon S3 (*S3DownloadRole*) 下載檔案許可的角色來建立任務。

```
aws iot create-job-template  \
      --job-template-id 010  \
      --description "My custom job template for updating the device firmware"
      --document-source https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json  \
      --timeout-config inProgressTimeoutInMinutes=100 \
      --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\": 50, \"incrementFactor\": 2, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\": 1000, \"numberOfSucceededThings\": 1000}}, \"maximumPerMinute\": 1000}" \
      --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL\", \"failureType\": \"FAILED\", \"minNumberOfExecutedThings\": 100, \"thresholdPercentage\": 20}, { \"action\": \"CANCEL\", \"failureType\": \"TIMED_OUT\", \"minNumberOfExecutedThings\": 200, \"thresholdPercentage\": 50}]}" \          
      --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"
```

選用的 `timeout-config` 參數會指定每個裝置必須完成任務執行的時間量。任務執行狀態設定為 `IN_PROGRESS` 時，計時器即會開始。在時間過期之前，如果任務執行狀態未設定為其他終止狀態，就會將其設定為 `TIMED_OUT`。

進行中的計時器無法更新，並會套用到任務的所有任務啟動。每當任務啟動保持 `IN_PROGRESS` 狀態超過此間隔時，任務啟動就會失敗並切換到終端機`TIMED_OUT`狀態。 AWS IoT 也會發佈 MQTT 通知。

如需有關建立任務推展和中止組態的詳細資訊，請參閱[任務推展和中止組態](job-rollout-abort-scheduling.html)。

**注意**  
指定為 Amazon S3 檔案的任務文件會在您建立任務時擷取。如果您在建立任務後變更作為任務文件來源的 Amazon S3 檔案的內容，則傳送到任務目標的內容不會變更。

## 從現有任務建立任務範本
<a name="job-templates-cli-create-from-job"></a>

下列 AWS CLI 命令會透過指定現有任務的 Amazon Resource Name (ARN) 來建立任務範本。新的任務範本會使用任務中指定的所有組態。您可以選擇性地使用任何選用參數，來變更現有任務中的任何組態。

```
aws iot create-job-template  \
      --job-arn arn:aws:iot:region:123456789012:job/job-name  \      
      --timeout-config inProgressTimeoutInMinutes=100
```

## 取得任務範本的詳細資訊
<a name="job-templates-cli-describe"></a>

下列 AWS CLI 命令會取得指定任務範本的詳細資訊。

```
aws iot describe-job-template \
      --job-template-id template-id
```

該命令會顯示下列輸出。

```
{
   "abortConfig": { 
      "criteriaList": [ 
         { 
            "action": "string",
            "failureType": "string",
            "minNumberOfExecutedThings": number,
            "thresholdPercentage": number
         }
      ]
   },
   "createdAt": number,
   "description": "string",
   "document": "string",
   "documentSource": "string",
   "jobExecutionsRolloutConfig": { 
      "exponentialRate": { 
         "baseRatePerMinute": number,
         "incrementFactor": number,
         "rateIncreaseCriteria": { 
            "numberOfNotifiedThings": number,
            "numberOfSucceededThings": number
         }
      },
      "maximumPerMinute": number
   },
   "jobTemplateArn": "string",
   "jobTemplateId": "string",
   "presignedUrlConfig": { 
      "expiresInSec": number,
      "roleArn": "string"
   },
   "timeoutConfig": { 
      "inProgressTimeoutInMinutes": number
   }
}
```

## 列出任務範本
<a name="job-templates-cli-list"></a>

下列 AWS CLI 命令會列出 中的所有任務範本 AWS 帳戶。

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

該命令會顯示下列輸出。

```
{
   "jobTemplates": [ 
      { 
         "createdAt": number,
         "description": "string",
         "jobTemplateArn": "string",
         "jobTemplateId": "string"
      }
   ],
   "nextToken": "string"
}
```

若要擷取其他結果頁面，請使用 `nextToken` 欄位的值。

## 刪除任務範本
<a name="job-templates-cli-delete"></a>

下列 AWS CLI 命令會刪除指定的任務範本。

```
aws iot delete-job-template \
      --job-template-id template-id
```

此命令不會顯示輸出。

## 從自訂任務範本建立任務
<a name="job-templates-cli-create-job"></a>

下列 AWS CLI 命令會從自訂任務範本建立任務。它會將名為 `thingOne` 的裝置設為目標，並指定任務範本的 Amazon 資源名稱 (ARN)，以用作任務的基礎。您可以覆寫進階組態，例如逾時和取消組態，方法是傳遞 `create-job` 命令的相關聯參數。

**警告**  
從 AWS 受管範本建立任務時，`document-parameters` 物件只能與 `create-job` 命令搭配使用。這個對象不能與自訂任務範本搭配使用。如需示範如何使用這個參數建立任務的範例，請參閱 [使用受管範本建立任務](job-template-manage-cli-create.md#job-template-manage-cli-create-job)。

```
aws iot create-job \ 
      --targets arn:aws:iot:region:123456789012:thing/thingOne  \
      --job-template-arn arn:aws:iot:region:123456789012:jobtemplate/template-id
```