我已建立 AWS Glue 工作流程,但未予以啟動。或者,未執行 AWS Glue 工作流程中的某些組成工作或爬蟲程式。
簡短說明
如果未觸發您的 AWS Glue 工作流程或其元件,請確認下列事項:
- 如果使用排程觸發器作為來源觸發器,請確認已啟動該排程觸發器。請確定排程已在世界標準時間 (UTC) 中提及,且 cron 表示式包含所有必要欄位。
- 如果使用事件型觸發器作為來源觸發器,請確認 Amazon EventBridge 規則是否正確、已開啟並已連結至工作流程。確認用來新增工作流程作為目標的角色具有將事件傳遞至 AWS Glue 的必要許可。
- 如果外部元件觸發來源觸發器,則請確認外部元件沒有故障。
- 請確定工作流程外部的代理程式是否不符合用來觸發元件的述詞條件。
- 該元件可能是相依關係鏈的一部分。請確定上游工作/爬蟲程式是透過單一來源觸發器啟動為相同工作流程的一部分。
解決方案
不是以時間型觸發器啟動工作流程
如果已排定工作流程的來源觸發器,請檢查下列項目:
- 請確定觸發程序處於「已啟動」狀態,而非處於已建立狀態。如果觸發器不是處於「已啟動」狀態,則請手動](https://docs.aws.amazon.com/glue/latest/dg/activate-triggers.html)啟動觸發器[。
- 請確定排程觸發器的排程所使用的 cron 表示式為 UTC。請確定 cron 表示式中的欄位對應於將本地時區轉換為 UTC。另外,請檢查 cron 表示式是否包含正確格式的所有必要欄位。如需詳細資訊,請參閱](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html)[工作和爬蟲程式的時間型排程。
不是以隨需觸發器啟動工作流程
您的來源觸發器可能是隨需,上游實體使用 StartWorkflowRun API 呼叫來予以觸發。對於此使用案例,請確定呼叫實體正常運作。
不是以條件觸發器啟動工作流程
確定工作流程外部的代理程式不符合觸發器中的述詞條件。如果外部代理程式符合條件,則不會觸發觸發器。僅限由觸發器啟動監視的事件時,才會由觸發器啟動條件觸發器。
例如,假設下列條件為真:
- 您有「JOB_MAIN」工作的工作流程,其由觸發器「TEST_TR」所觸發。
- 觸發器「TEST_TR」取決於另一個不屬於目前工作流程一部分的工作「JOB_DEP」的完成情況。
在這種情況下,即使「JOB_DEP」成功完成,並且觸發器「TEST_TR」的述詞邏輯符合,仍然不會觸發工作「JOB_MAIN」。不會觸發工作,因為不屬於相同工作流程的代理程式符合述詞條件。
不是以事件型觸發器啟動工作流程
您可能已經設定 EventBridge (亦稱為 Amazon CloudWatch Events) 來啟動您的工作流程。如果您正在使用此設定,並注意到未觸發來源觸發器,請檢查下列內容:
- 如果您使用 Amazon Simple Storage Service (Amazon S3) 資料事件作為來源,請確認您為 AWS 帳戶已正確建立追蹤。然後,檢查是否已在 AWS CloudTrail 中記錄相關 S3 儲存貯體的事件。
- 驗證 EventBridge 規則以確認「eventSource」、「eventName」和「requestParameters」如預期一般。
- 確認 EventBridge 規則已連接至正確的工作流程目標 ARN。
- 確認 EventBridge 規則狀態為「已啟用」。
- 確認用於將規則連接至工作流程目標的「RoleArn」已連接至「CloudWatchEventsBuiltInTargetExecutionAccess」和「CloudWatchEventsInvocationAccess」政策。然後,確認有足夠的 IAM 許可,以在工作流程上執行「'glue:NotifyEvent'」。下列範例會顯示必要的最低 AWS Glue 政策:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["glue:NotifyEvent"],
"Resource": ["arn:aws:glue:<region>:<account-id>:workflow/<workflow-name>"]
}]
}
未針對屬於相依關係鏈一部分的元件工作或爬蟲程式啟動的工作流程式
檢查構成工作或爬蟲程式是否取決於也由觸發器啟動的上游工作或爬蟲程式的完成情況。僅限觸發器啟動完成的工作或爬蟲程式時,才會啟動相依工作或爬蟲程式。確定相依關係鏈中的所有工作或爬蟲程式都是單一排程或隨需觸發器的後代。
例如,假設這些條件為真:
- 即會使用名為「TEST_TR1」的觸發器啟動您的工作流程,該觸發器會啟動名為「JOB_1」的工作。
- 另一個名為「TEST_TR2」的觸發器取決於「JOB\ _1」的完成情況,以啟動名為「JOB_2」的工作。
在這種情況下,當滿足「TEST_TR2」的述詞條件時,「TEST_TR2」會啟動「JOB_2」。
但是,若「JOB_1」隨需執行,而不是由「TEST_TR1」啟動,則「TEST_TR2」未啟動「JOB_2」,即使滿足「TEST_TR2」的述詞條件。
相關資訊
AWS Glue 觸發器
AWS Glue 中的工作流程限制
透過 Amazon EventBridge 事件啟動 AWS Glue 工作流程