

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

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

# 解決常見的問題
<a name="dp-check-when-run-fails"></a>

本主題提供各種 AWS Data Pipeline 問題症狀，以及解決問題的建議步驟。

**Topics**
+ [管道卡在 Pending (擱置中) 狀態](#dp-pipeline-doesnt-start)
+ [管道元件卡在 Waiting for Runner (正在等待執行器) 狀態](#dp-waiting-for-runner)
+ [管道元件卡在 WAITING\$1ON\$1DEPENDENCIES (等待相依性) 狀態](#dp-runs-stay-pending)
+ [排程時未開始執行](#dp-run-doesnt-start-scheduled)
+ [管道元件以錯誤順序執行](#dp-out-of-order)
+ [EMR 叢集失敗並出現錯誤：包含在請求中的安全權杖無效](#dp-securitytoken)
+ [存取資源的許可不足](#dp-insufficient-permissions)
+ [狀態碼：400 錯誤碼：PipelineNotFoundException](#dp-error-code-400)
+ [建立管道造成安全權帳錯誤](#dp-bad-token)
+ [在主控台中看不到管道詳細資訊](#dp-no-details-shown)
+ [遠端執行器錯誤狀態碼：404，AWS 服務：Amazon S3](#dp-error-code-s3-404)
+ [拒絕存取 – 無權執行函數 datapipeline：](#dp-access-denied)
+ [較舊的 Amazon EMR AMIs 可能會為大型 CSV 檔案建立假資料](#AMIs-false-data-large-CSV)
+ [增加 AWS Data Pipeline 限制](#dp-increase-limits)

## 管道卡在 Pending (擱置中) 狀態
<a name="dp-pipeline-doesnt-start"></a>

管道顯示卡在 PENDING (擱置中) 狀態，這表示尚未啟用管道，或由於管道定義中的錯誤而啟用失敗。當您使用 CLI AWS Data Pipeline 提交管道或嘗試使用 AWS Data Pipeline 主控台儲存或啟用管道時，請確定您未收到任何錯誤。此外，檢查您的管道擁有有效的定義。

若要使用 CLI 在畫面上檢視管道定義：

```
aws datapipeline --get-pipeline-definition --pipeline-id df-EXAMPLE_PIPELINE_ID
```

確認管道定義已完成、檢查您的右大括號、驗證所需的逗號、檢查是否遺漏參考，以及其他語法錯誤。最好使用能夠以視覺化方式驗證 JSON 檔案語法的文字編輯器。

## 管道元件卡在 Waiting for Runner (正在等待執行器) 狀態
<a name="dp-waiting-for-runner"></a>

如果您的管道狀態為 SCHEDULED (已排程)，而且一或多個任務顯示卡在 WAITING\$1FOR\$1RUNNER (等待執行器) 狀態，請確保您在這些任務的 runsOn 或 workerGroup 欄位中設定的值有效。如果這兩個值為空白或遺漏，任務將無法啟動，因為任務和工作者之間沒有關聯可執行任務。在此情況下，您已定義工作，但尚未定義電腦執行哪些工作。如果適用，請確認指派給管道元件的 workerGroup 值與您為 Task Runner 設定的 workerGroup 值完全相同。

**注意**  
如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。

此問題的另一個潛在原因是提供給 Task Runner 的端點和存取金鑰與安裝 CLI AWS Data Pipeline 工具的 AWS Data Pipeline 主控台或電腦不同。您可能已建立沒有可見錯誤的新管道，但 Task Runner 會因為登入資料的差異而輪詢錯誤的位置，或輪詢許可不足的正確位置，以識別和執行管道定義指定的工作。

## 管道元件卡在 WAITING\$1ON\$1DEPENDENCIES (等待相依性) 狀態
<a name="dp-runs-stay-pending"></a>

如果您的管道處於 `SCHEDULED` 狀態，而且一或多個任務顯示卡在 `WAITING_ON_DEPENDENCIES` 狀態，請確定已符合您管道的初始先決條件。如果不符合邏輯鏈結中第一個物件的先決條件，則相依於該第一個物件的所有物件都無法移出 `WAITING_ON_DEPENDENCIES` 狀態。

例如，請考慮來自管道定義的下列摘錄。在此情況下，`InputData` 物件具備先決條件「Ready (就緒)」，指定資料必須存在，InputData 物件才會完成。如果資料不存在，InputData 物件會維持在 `WAITING_ON_DEPENDENCIES` 狀態，等待路徑欄位指定的資料變成可用。任何相依於 InputData 的物件同樣會維持在 `WAITING_ON_DEPENDENCIES` 狀態，等待 InputData 物件到達 `FINISHED` 狀態。

```
{
    "id": "InputData",
    "type": "S3DataNode",
    "filePath": "s3://elasticmapreduce/samples/wordcount/wordSplitter.py",
    "schedule":{"ref":"MySchedule"},
    "precondition": "Ready"      
},
{
    "id": "Ready",
    "type": "Exists"
...
```

 此外，檢查您的物件具備存取資料的適當許可。在上述範例中，如果登入資料欄位中的資訊沒有存取路徑欄位所指定資料的許可，InputData 物件會卡在 `WAITING_ON_DEPENDENCIES` 狀態，因為該物件無法存取路徑欄位所指定的資料，即使該資料存在也一樣。

與 Amazon S3 通訊的資源也可能沒有相關聯的公有 IP 地址。例如，公有子網路中的 `Ec2Resource` 必須有相關的公有 IP 地址。

最後，在某些情況下，資源執行個體可能會比其排程開始的相關活動更早到達 `WAITING_ON_DEPENDENCIES` 狀態，而可能造成資源或活動失敗的印象。

## 排程時未開始執行
<a name="dp-run-doesnt-start-scheduled"></a>

確認您選擇正確的排程類型，該類型會決定您的任務是在排程間隔開頭 (Cron 樣式排程類型) 或排程間隔結尾 (時間序列排程類型) 開始。

此外，確認您已在排程物件中正確指定日期，而且 startDateTime 和 endDateTime 值為 UTC 格式，如下列範例所示：

```
{
    "id": "MySchedule",
    "startDateTime": "2012-11-12T19:30:00",
    "endDateTime":"2012-11-12T20:30:00",
    "period": "1 Hour",
    "type": "Schedule"
},
```

## 管道元件以錯誤順序執行
<a name="dp-out-of-order"></a>

您可能會發現管道元件的開始和結束時間以錯誤順序執行，或以不同於您所預期的順序執行。請務必了解，如果啟動時符合管道元件的先決條件，則管道元件可以同步開始執行。換言之，管道元件預設不會循序執行；如果您需要特定執行順序，則必須使用先決條件和 `dependsOn` 欄位來控制執行順序。

驗證您使用的 `dependsOn` 欄位已填入正確先決條件管道元件的參考，以及元件之間存在可達成您所需順序的所有必要指標。

## EMR 叢集失敗並出現錯誤：包含在請求中的安全權杖無效
<a name="dp-securitytoken"></a>

驗證您的 IAM 角色、政策和信任關係，如中所述[的 IAM 角色 AWS Data Pipeline](dp-iam-roles.md)。

## 存取資源的許可不足
<a name="dp-insufficient-permissions"></a>

您在 IAM 角色上設定的許可會決定 AWS Data Pipeline 是否可以存取您的 EMR 叢集和 EC2 執行個體來執行您的管道。此外，IAM 提供信任關係的概念，可進一步代表您建立資源。例如，當您建立使用 EC2 執行個體執行命令來移動資料的管道時， AWS Data Pipeline 可以為您佈建此 EC2 執行個體。如果您遇到問題，特別是涉及您可以手動存取的資源，但 AWS Data Pipeline 無法驗證您的 IAM 角色、政策和信任關係，如中所述[的 IAM 角色 AWS Data Pipeline](dp-iam-roles.md)。

## 狀態碼：400 錯誤碼：PipelineNotFoundException
<a name="dp-error-code-400"></a>

此錯誤表示您的 IAM 預設角色可能沒有讓 AWS Data Pipeline 正常運作所需的必要許可。如需詳細資訊，請參閱[的 IAM 角色 AWS Data Pipeline](dp-iam-roles.md)。

## 建立管道造成安全權帳錯誤
<a name="dp-bad-token"></a>

當您嘗試建立管道時，收到下列錯誤：

無法建立名為 'pipeline\$1name' 的管道。錯誤：UnrecognizedClientException – 包含在請求中的安全權杖無效。

## 在主控台中看不到管道詳細資訊
<a name="dp-no-details-shown"></a>

 AWS Data Pipeline 主控台管道篩選條件適用於管道的*排程*開始日期，無論管道何時提交。您可以使用過去的排程開始日期來提交新的管道，但預設日期篩選條件可能不會顯示。若要查看管道詳細資訊，請變更您的日期篩選條件，確保排程的管道開始日期符合日期範圍篩選條件。

## 遠端執行器錯誤狀態碼：404，AWS 服務：Amazon S3
<a name="dp-error-code-s3-404"></a>

 此錯誤表示 Task Runner 無法存取 Amazon S3 中的檔案。請驗證：
+  您已正確設定登入資料 
+  您嘗試存取的 Amazon S3 儲存貯體已存在 
+  您獲授權存取 Amazon S3 儲存貯體 

## 拒絕存取 – 無權執行函數 datapipeline：
<a name="dp-access-denied"></a>

在任務執行器日誌中，您可能會看到類似以下的錯誤：
+  錯誤狀態碼：403 
+  AWS 服務：DataPipeline 
+  AWS 錯誤碼：AccessDenied 
+ AWS 錯誤訊息：使用者：arn:aws:sts::XXXXXXXXXXXX:federated-user/i-XXXXXXXX 無權執行：datapipeline:PollForTask。

**注意**  
在此錯誤訊息中，PollForTask 可能會取代為其他 AWS Data Pipeline 許可的名稱。

此錯誤訊息指出您指定的 IAM 角色需要與 互動所需的額外許可 AWS Data Pipeline。請確定您的 IAM 角色政策包含以下幾行，其中 PollForTask 會取代為您要新增的許可名稱 （使用 \$1 授予所有許可）。如需如何建立新的 IAM 角色並將其套用政策的詳細資訊，請參閱《*使用* [IAM 指南》中的管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

```
{
"Action": [ "datapipeline:PollForTask" ],
"Effect": "Allow",
"Resource": ["*"]
}
```

## 較舊的 Amazon EMR AMIs 可能會為大型 CSV 檔案建立假資料
<a name="AMIs-false-data-large-CSV"></a>

在 3.9 之前的 Amazon EMR AMIs (3.8 及更新版本） AWS Data Pipeline 上使用自訂 InputFormat 來讀取和寫入 CSV 檔案，以搭配 MapReduce 任務使用。當服務分階段進出 Amazon S3 的資料表時，會使用此選項。在所偵測到的 InputFormat 問題中，從大型 CSV 檔案讀取記錄可能會導致產生未正確複製的資料表。此問題已在稍後的 Amazon EMR 版本中修正。請使用 Amazon EMR AMI 3.9 或 Amazon EMR 4.0.0 版或更新版本。

## 增加 AWS Data Pipeline 限制
<a name="dp-increase-limits"></a>

有時，您可能會超過特定的 AWS Data Pipeline 系統限制。例如，預設管道限制為 20 個管道，且每個管道限制有 50 個物件。如果您發現需要的管道數量超過限制，請考慮合併多個管道，以建立數量較少但各自含有較多物件的管道。如需 AWS Data Pipeline 限制的詳細資訊，請參閱 [AWS Data Pipeline 限制](dp-limits.md)。不過，如果您無法使用管道合併技術來解決這些限制，請使用此表單來請求增加您的容量：[提高 Data Pipeline 限制](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-datapipe)。