

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

# 任務的重要概念
<a name="key-concepts-jobs"></a>

下列概念提供 AWS IoT 任務的詳細資訊，以及如何建立和部署任務，以在裝置上執行遠端操作。

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

以下是使用 AWS IoT 任務時必須知道的基本概念。

**任務**  
任務為傳送至連接至 AWS IoT的一或多個裝置，並在其上執行的遠端作業。例如，您可以定義一個任務，指示一組裝置下載並安裝應用程式或執行韌體更新、重新啟動、輪換憑證，或者執行遠端故障排除操作。

**任務文件**  
若要建立任務，您必須先建立任務文件，而其為裝置要執行之遠端操作的描述。  
任務文件為 UTF-8 編碼的 JSON 文件，其中包含您裝置執行任務所需的資訊。任務文件包含一個或多個 URL，讓裝置可以下載更新或其他資料。任務文件可以存放於 Amazon S3 儲存貯體，或者內嵌於建立任務的命令。  
在 MQTT 回應中， `jobDocument` 欄位是 JSON 物件。在 HTTP 回應中，它是 JSON 物件的字串表示法。

**目標**  
當您建立任務時，要指定目標的清單，也就是要執行操作的裝置。目標可以是物件或[物件群組](thing-groups.md)，或同時為兩者。 AWS IoT Jobs 服務會傳送訊息給每個目標，通知該目標有可用的任務。

**部署**  
提供任務文件並指定目標清單來建立任務後，隨後將任務文件部署至要為其執行更新的遠端目標裝置。若為快照任務，任務將在部署至目標裝置之後完成。若為持續任務，任務會在裝置新增至群組時部署到裝置群組。

**任務執行**  
任務執行即目標裝置上任務的執行個體。目標會下載任務文件，藉此開始執行任務。然後，它會執行文件中指定的操作，並向其報告其進度 AWS IoT。執行編號是特定目標上不會重複的任務執行之識別符。 AWS IoT Jobs 服務提供命令來追蹤目標上任務執行的進度，以及所有目標的任務進度。

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

下列概念可協助您進一步了解您可以使用 任務建立的不同類型的 AWS IoT 任務。

**快照任務**  
在預設情況下，當您建立任務，該任務會傳送至您指定的所有目標。這些目標完成任務之後 (或者回報無法完成任務)，任務即視為完成。

**持續任務**  
當您建立任務，持續任務會傳送至您指定的所有目標。它會繼續執行並傳送任何新的裝置 (物件) 到已新增的目標群組。例如：持續任務加入群組時，可用於部署或更新裝置。您可以在建立任務時設定選用參數，藉此讓任務可以持續。  
使用動態物件群組定位 IoT 機群時，我們建議您使用連續任務而不是快照任務。使用連續任務，加入群組的裝置即使在任務建立之後，也會收到任務執行。

## 預先簽章的 URL
<a name="security-concepts-jobs"></a><a name="presigned"></a>

為了以安全、限時的方式存取任務文件以外的資料，您可以使用預先簽章的 Amazon S3 URL。將資料置於 Amazon S3 儲存貯體，並在任務作文件中的資料新增一個預留位置連結。當 AWS IoT 任務收到任務文件的請求時，它會透過尋找預留位置連結來剖析任務文件，然後使用預先簽章的 Amazon S3 URLs 取代連結。

預留位置連結的格式如下：

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

其中，{{bucket}} 是您的儲存貯體名稱，而 {{key}} 是您所連結在儲存貯體中的物件。

在北京和寧夏區域中，僅當資源擁有者具有 ICP (網際網路內容提供者) 授權時，預先簽章的 URL 才能運作。如需詳細資訊，請參閱*中國服務入門文件中的 AWS *[Amazon Simple Storage](https://docs.amazonaws.cn/en_us/aws/latest/userguide/s3.html) Service。

## 任務組態概念
<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)。