为什么我的 AWS Glue 工作流未触发?

1 分钟阅读
0

我已创建 AWS Glue 工作流,但其未启动。 -或者- 我的 AWS Glue 工作流中的一些组成任务/爬网程序没有运行。

简短描述

如果您的 AWS Glue 工作流或其组件未触发,请确认以下方面:

  • 如果将计划触发器用作源触发器,则确认它已激活。确保以 UTC 时区给出计划,并且 cron 表达式包含所有必填字段。
  • 如果外部组件触发源触发器,则确认外部组件没有出现故障。
  • 确定工作流外部的代理未满足用于触发组件的谓词条件。
  • 如果某个组件是依赖项链的一部分,请确保通过单个源触发器将上游任务/爬网程序作为同一工作流的一部分启动。

解决方法

工作流未以基于时间的触发器开始

如果已计划工作流的源触发器,请检查以下方面:

  • 确保触发器处于已激活状态,而不是处于已创建状态。如果触发器未处于已激活状态,则手动激活触发器
  • 确保计划触发器的时间表中使用的 cron 表达式采用协调世界时间 (UTC)。确保 cron 表达式中的字段与本地时区到 UTC 的转换相对应。另外,请检查 cron 表达式是否以正确的格式包含所有必填字段。有关详细信息,请参阅适用于任务和爬网程序的时间计划

工作流未以按需触发器开始

如果源触发器是按需的,并且有一个使用 StartWorkflowRun API 调用触发它的上游实体,请确保调用实体正确运行。

工作流程未以条件触发器开始

确保工作流外部的代理未满足触发器中的谓词条件。如果外部代理满足条件,则触发器不会触发。只有当检视的事件由触发器启动时,条件触发器才会启动。

例如,假设满足以下条件:

  • 工作流中有一个由触发器 TEST_TR 触发的任务 JOB_MAIN
  • 触发器 TEST_TR 依赖于另一个不属于当前工作流的任务 JOB_DEP 的完成情况。

在此情况下,即使 JOB_DEP 成功完成,并且触发器 TEST_TR 的谓词逻辑得到满足,任务 JOB_MAIN 也不会被触发。这是因为,由不属于同一工作流的代理满足谓词条件。

对于作为依赖项链一部分的组成任务/爬网程序,工作流未启动

检查组成任务/爬网程序是否依赖于同样由触发器启动的上游任务/爬网程序的完成情况。只有当已完成的任务/爬网程序由触发器启动时,依赖的任务/爬网程序才会启动。确保依赖项链中的所有任务/爬网程序都由单个计划或按需触发器启动。

例如,假设满足条件:

  • 您的工作流始于启动任务 JOB_1 的触发器 TEST_TR1
  • 另一个触发器 TEST_TR2 会根据 JOB_1 的完成情况来启动任务 JOB_2

在此情况下,当 TEST_TR2 的谓词条件得到满足时,TEST_TR2 启动 JOB_2

但是,如果 JOB_1 按需运行而非由 TEST_TR1 启动,那么即使满足 TEST_TR2 的谓词条件,TEST_TR2 也不会启动 JOB_2


相关信息

AWS Glue 触发器

AWS Glue 中的工作流限制

AWS 官方
AWS 官方已更新 3 年前