解決常見的問題 - AWS Data Pipeline

AWS Data Pipeline 不再提供給新客戶。現有客戶 AWS Data Pipeline 可繼續正常使用此服務。進一步了解

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

解決常見的問題

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

管道卡在 Pending (擱置中) 狀態

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

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

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

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

管道元件卡在 Waiting for Runner (正在等待執行器) 狀態

如果您的管道狀態為 SCHEDULED (已排程),而且一或多個任務顯示卡在 WAITING_FOR_RUNNER (等待執行器) 狀態,請確保您在這些任務的 runsOn 或 workerGroup 欄位中設定的值有效。如果這兩個值為空白或遺漏,任務將無法啟動,因為任務和工作者之間沒有關聯可執行任務。在此情況下,您已定義工作,但尚未定義電腦執行哪些工作。如果適用,請確認指派給配管元件的 WorkerGroup 值與您為「工作流道」配置的「工作者群組」值完全相同的名稱和大小寫。

注意

如果您提供 runsOn 值,且 workerGroup 存在,則會忽略 workerGroup。

造成此問題的另一個潛在原因是,提供給 Task Runner 的端點和存取金鑰與安裝 AWS Data Pipeline CLI 工具的AWS Data Pipeline主控台或電腦不同。您可能已經建立了沒有明顯錯誤的新管線,但 Task Runner 會輪詢由於認證差異而導致錯誤的位置,或者輪詢權限不足的正確位置,以識別並執行管線定義所指定的工作。

管道元件卡在 WAITING_ON_DEPENDENCIES (等待相依性) 狀態

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

例如,請考慮來自管道定義的下列摘錄。在這種情況下,InputData對象具有前提條件「就緒」,指定數據必須在InputData對象完成之前存在。如果資料不存在,InputData物件會保持狀WAITING_ON_DEPENDENCIES態,等待 path 欄位指定的資料變為可用。InputData同樣依賴的任何物件都會保持在等待InputData物件到達FINISHED狀態的狀態。WAITING_ON_DEPENDENCIES

{ "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 狀態,而可能造成資源或活動失敗的印象。

排程時未開始執行

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

此外,請檢查您是否已在排程物件中正確指定日期,以startDateTime及和endDateTime值是否為 UTC 格式,如下列範例所示:

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

管道元件以錯誤順序執行

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

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

EMR 叢集失敗並出現錯誤:包含在請求中的安全權杖無效

驗證您的 IAM 角色、政策和信任關係,如中所述AWS Data Pipeline 的 IAM 角色

存取資源的許可不足

您在 IAM 角色上設定的許可決定是否AWS Data Pipeline可以存取 EMR 叢集和 EC2 執行個體來執行管道。此外,IAM 還提供信任關係的概念,進一步允許代表您建立資源。例如,當您建立使用 EC2 執行個體來執行移動資料命令的管道時,AWS Data Pipeline 可以為您佈建此 EC2 執行個體。如果您遇到問題,尤其是那些涉及可以手動存取但AWS Data Pipeline無法存取的資源的問題,請按照中所述驗證您的 IAM 角色、政策和信任關係AWS Data Pipeline 的 IAM 角色

狀態碼:400 錯誤代碼:PipelineNotFoundException

此錯誤表示您的 IAM 預設角色可能沒有正確運作所需的必要許可。AWS Data Pipeline如需詳細資訊,請參閱AWS Data Pipeline 的 IAM 角色

建立管道造成安全權帳錯誤

當您嘗試建立管道時,收到下列錯誤:

無法建立名為 'pipeline_name' 的管道。錯誤:UnrecognizedClientException-請求中包含的安全令牌無效。

在主控台中看不到管道詳細資訊

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

遠端執行器錯誤狀態碼:404,AWS 服務:Amazon S3

此錯誤意味著任務執行器無法訪問您在 Amazon S3 中的文件。請驗證:

  • 您已正確設定登入資料

  • 您嘗試訪問的亞馬遜 S3 存儲桶存在

  • 您已獲授權存取亞馬遜 S3 儲存貯體

拒絕存取 – 無權執行函數 datapipeline:

在工作執行器記錄檔中,您可能會看到類似下列內容的錯誤:

  • 錯誤狀態碼:403

  • AWS 服務:DataPipeline

  • AWS 錯誤代碼:AccessDenied

  • AWS 錯誤訊息:使用者:ARN:aw:sts:: PollForTask

注意

在此錯誤消息中,PollForTask可能會替換為其他AWS Data Pipeline權限的名稱。

此錯誤訊息指出您指定的 IAM 角色需要與之互動所需的其他許可AWS Data Pipeline。確保您的 IAM 角色政策包含以下幾行,其PollForTask中會以您要新增的權限名稱取代 (使用 * 來授與所有權限)。如需如何建立新 IAM 角色並對其套用政策的詳細資訊,請參閱使用 IAM 指南中的管理 IAM 政策

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

較舊的亞馬遜 EMR AMI 可能會為大型 CSV 檔案建立錯誤資料

在 3.9 (3.8 及以下版AWS Data Pipeline本) 之前版本的 Amazon EMR AMI 上,會使用自訂功能InputFormat來讀取和寫入 CSV 檔案,以便與任務搭配MapReduce使用。當服務將表分級到 Amazon S3 時,會使用此功能。發現一個問題InputFormat,其中讀取大型 CSV 檔案的記錄可能會導致產生未正確複製的資料表。此問題已在稍後的 Amazon EMR 發行版本中修正。請使用亞馬遜 EMR AMI 3.9 或亞馬遜 EMR 版本 4.0.0 或更高版本。

提高 AWS Data Pipeline 限制

有時,您可能會超過特定的 AWS Data Pipeline 系統限制。例如,預設管道限制為 20 個管道,且每個管道限制有 50 個物件。如果您發現需要的管道數量超過限制,請考慮合併多個管道,以建立數量較少但各自含有較多物件的管道。如需 AWS Data Pipeline 限制的詳細資訊,請參閱 AWS Data Pipeline 限制。不過,如果您無法使用管道合併技術來解決這些限制,請使用此表單來請求增加您的容量:提高 Data Pipeline 限制