

AWS Data Pipeline 不再提供給新客戶。的現有客戶 AWS Data Pipeline 可以繼續正常使用服務。[進一步了解](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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

# 使用任務執行器在現有資源上執行工作
<a name="dp-how-task-runner-user-managed"></a>

您可以在您管理的運算資源上安裝 Task Runner，例如 Amazon EC2 執行個體，或實體伺服器或工作站。任務執行器可以安裝在任何相容硬體或作業系統的任何位置，但前提是它可以與 AWS Data Pipeline Web 服務通訊。

例如，當您想要使用 AWS Data Pipeline 來處理存放在組織防火牆內的資料時，這種方法非常有用。透過在本機網路的伺服器上安裝 Task Runner，您可以安全地存取本機資料庫，然後輪詢 以執行 AWS Data Pipeline 下一個任務。當 AWS Data Pipeline 結束處理或刪除管道時，Task Runner 執行個體仍會在您的運算資源上執行，直到您手動將其關閉為止。Task Runner 日誌會在管道執行完成後保留。

若要在您管理的資源上使用 Task Runner，您必須先下載 Task Runner，然後使用本節中的程序將其安裝在運算資源上。

**注意**  
 您只能在 Linux、UNIX 或 macOS 上安裝 Task Runner。Windows 作業系統不支援 Task Runner。  
若要使用 Task Runner 2.0，所需的最低 Java 版本為 1.7。

若要將已安裝的 Task Runner 連線到其應處理的管道活動，請將`workerGroup`欄位新增至物件，並設定 Task Runner 輪詢該工作者群組值。您可以在執行 Task Runner JAR 檔案時，以參數 （例如 `--workerGroup=wg-12345`) 形式傳遞工作者群組字串來執行此操作。

![\[AWS Data Pipeline diagram showing monthly task flow for archiving processed invoices using Task Runner.\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/images/dp-task-runner-user-emr-jobflow.png)


```
{
  "id" : "CreateDirectory",
  "type" : "ShellCommandActivity",
  "workerGroup" : "wg-12345",
  "command" : "mkdir new-directory"
}
```

## 安裝任務執行器
<a name="dp-installing-taskrunner"></a>

本節說明如何安裝和設定 Task Runner 及其先決條件。安裝過程是一個相當直接的手動程序。

**安裝 Task Runner**

1. Task Runner 需要 Java 1.6 或 1.8 版。若要判斷是否已安裝 Java，以及其執行的版本，請使用以下命令：

   ```
   java -version
   ```

    如果您的電腦上未安裝 Java 1.6 或 1.8，請從 https：//[http://www.oracle.com/technetwork/java/index.html](http://www.oracle.com/technetwork/java/index.html) 下載其中一個版本。下載並安裝 Java，然後繼續進行下一個步驟。

1. `TaskRunner-1.0.jar` 從 [https://s3.amazonaws.com/datapipeline-us-east-1/us-east-1/software/latest/TaskRunner/TaskRunner-1.0.jar](https://s3.amazonaws.com/datapipeline-us-east-1/us-east-1/software/latest/TaskRunner/TaskRunner-1.0.jar) 下載，然後將其複製到目標運算資源上的資料夾。對於執行`EmrActivity`任務的 Amazon EMR 叢集，請在叢集的主節點上安裝 Task Runner。

1. 使用 Task Runner 連線至 AWS Data Pipeline Web 服務來處理命令時，使用者需要對具有建立或管理資料管道許可的角色進行程式設計存取。如需詳細資訊，請參閱[授予程式設計存取權](dp-get-setup.md#dp-grant-programmatic-access)。

1. Task Runner 會使用 HTTPS 連線至 AWS Data Pipeline Web 服務。如果您使用的是 AWS 資源，請確定已在適當的路由表和子網路 ACL 中啟用 HTTPS。若您使用防火牆或代理，請確認連接埠 443 已開啟。

# （選用） 授予 Amazon RDS 的任務執行器存取權
<a name="dp-taskrunner-rdssecurity"></a>

Amazon RDS 可讓您使用資料庫安全群組 （資料庫安全群組） 控制對資料庫執行個體的存取。資料庫安全群組與防火牆的功能類似，可控制對資料庫執行個體的網路存取。根據預設，您資料庫執行個體的網路存取是關閉的。您必須修改資料庫安全群組，讓 Task Runner 存取您的 Amazon RDS 執行個體。Task Runner 會從其執行的執行個體取得 Amazon RDS 存取權，因此您新增至 Amazon RDS 執行個體的帳戶和安全群組取決於您安裝 Task Runner 的位置。

**授予 EC2-Classic 中 Task Runner 的存取權**

1. 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Instances (執行個體)**，然後選取您的資料庫執行個體。

1. 在 **Security and Network (安全與網路)** 下方，選取安全群組，開啟 **Security Groups (安全群組)** 頁面，其中已選取此資料庫安全群組。選取資料庫安全群組的詳細資訊圖示。

1. 在 **Security Group Details (安全群組詳細資訊)** 下方，使用適當的 **Connection Type (連線類型)** 和 **Details (詳細資訊)** 建立規則。這些欄位取決於 Task Runner 執行的位置，如下所述：
   + `Ec2Resource`
     + **Connection Type (連線類型)**：`EC2 Security Group`

       **Details (詳細資訊)**：*my-security-group-name* (您為 EC2 執行個體建立的安全群組名稱)
   + `EmrResource`
     + **Connection Type (連線類型)**：`EC2 Security Group`

       **Details (詳細資訊)**：`ElasticMapReduce-master`
     + **Connection Type (連線類型)**：`EC2 Security Group`

       **Details (詳細資訊)**：`ElasticMapReduce-slave`
   + 您的本機環境 (現場部署)
     + **Connection Type (連線類型)**：`CIDR/IP`：

       **Details (詳細資訊)**：*my-ip-address* (您電腦的 IP 地址或您網路的 IP 地址範圍 (若您的電腦位於防火牆後方的話))

1. 按一下 Add (新增)。

**授予 EC2-VPC 中 Task Runner 的存取權**

1. 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取資料庫執行個體的詳細資訊圖示。在**安全與網路**下，開啟安全群組的連結，這會帶您前往 Amazon EC2 主控台。若您使用安全群組的舊版主控台設計，請選取主控台頁面頂端顯示的圖示，切換至新版的主控台設計。

1. 在 **Inbound (傳入)** 標籤，選擇 **Edit (編輯)**，**Add Rule (新增規則)**。指定您在啟動資料庫執行個體時使用的資料庫連接埠。來源取決於 Task Runner 執行的位置，如下所述：
   + `Ec2Resource`
     + *my-security-group-id* (您為 EC2 執行個體建立的安全群組 ID)
   + `EmrResource`
     + *master-security-group-id* (`ElasticMapReduce-master` 安全群組的 ID)
     + *slave-security-group-id* (`ElasticMapReduce-slave` 安全群組的 ID)
   + 您的本機環境 (現場部署)
     + *ip-address* (您電腦的 IP 地址或您網路的 IP 地址範圍 (若您的電腦位於防火牆後方的話))

1. 按一下 **Save (儲存)**。

## 啟動任務執行器
<a name="dp-activate-task-runner"></a>

在設定為您安裝 Task Runner 之目錄的新命令提示視窗中，使用以下命令啟動 Task Runner。

```
java -jar TaskRunner-1.0.jar --config ~/credentials.json --workerGroup=myWorkerGroup --region=MyRegion --logUri=s3://amzn-s3-demo-bucket/foldername
```

`--config` 選項會指向您的登入資料檔案。

`--workerGroup` 選項會指定您的工作者群組名稱，其值必須與您在要處理任務的管道中所指定的值相同。

`--region` 選項則會指定您提取要執行任務的服務區域。

`--logUri` 選項用於將壓縮日誌推送到 Amazon S3 中的位置。

當任務執行器處於作用中狀態時，它會列印日誌檔案寫入終端機視窗中的路徑。下列是 範例。

```
Logging to /Computer_Name/.../output/logs
```

Task Runner 應與您的登入殼層分離執行。若您使用終端機應用程式連線到您的電腦，您可能需要使用公用程式 (例如 nohup 或 screen) 來防止 Task Runner 應用程式在您登出時離開。如需命令列選項的詳細資訊，請參閱 [任務執行器組態選項](dp-taskrunner-config-options.md)。

## 驗證任務執行器記錄
<a name="dp-verify-task-runner"></a>

驗證 Task Runner 是否正常運作的最簡單方法是檢查它是否正在寫入日誌檔案。Task Runner 會將每小時日誌檔案寫入安裝 Task Runner 的目錄 `output/logs`下。檔案名稱為 `Task Runner.log.YYYY-MM-DD-HH`，其中 HH 的範圍介於 00 到 23 間 (UDT)。為節省儲存空間，任何超過八個小時的日誌檔案都會以 GZip 壓縮。