

# AWS Glue 中的工作流概述
<a name="workflows_overview"></a>

在 AWS Glue 中，可以使用工作流程创建和可视化涉及多个爬网程序、作业和触发器的复杂的提取、转换和加载 (ETL) 活动。每个工作流都管理其所有任务和爬网程序的执行和监控。当工作流运行每个组件时，它会记录执行进度和状态。这将为您提供大型任务的概览和每个步骤的详细信息。AWS Glue 控制台以图表形式呈现工作流。

您可以使用 AWS Glue 蓝图创建工作流，也可以使用AWS 管理控制台或 AWS Glue API 手动构建组件工作流程。有关蓝图的更多信息，请参阅[AWS Glue 中的蓝图概览](blueprints-overview.md)。

工作流中的*触发器*可以启动任务和爬网程序，也可以由任务或爬网程序触发。使用触发器，您可以创建相互依赖的任务和爬网程序的大型链。除了定义任务和爬网程序依赖关系的工作流中的触发器之外，每个工作流都有*启动触发器*。有三种类型的启动触发器：
+ **计划** – 工作流程根据您定义的计划启动。计划可以是每天、每周、每月执行等，也可以是基于 `cron` 表达式的自定义计划。
+ **按需**：工作流将从 AWS Glue 控制台、API、或 AWS CLI 手动启动。
+ **EventBridge 事件** – 在发生单个 Amazon EventBridge 事件或一批 Amazon EventBridge 事件时启动该工作流。使用此触发器类型，AWS Glue 可作为事件驱动架构中的事件使用者。任何 EventBridge 事件都可以启动工作流。常见的使用案例是收到了 Amazon S3 存储桶（S3 `PutObject` 操作）中的新对象。

  等到收到指定数量的事件或经过指定的时间后，才表示可以使用一批事件来启动工作流程。创建 EventBridge 事件触发器时，您可以有选择地指定批处理条件。如果指定批处理条件，则必须指定批处理大小（事件数），并且有选择地指定批处理时间（秒数）。默认和最大批处理时间为 900 秒（15 分钟）。首先满足的批处理条件启动工作流程。批处理时间在第一个事件到达时开始计算。如果在创建触发器时未指定批处理条件，则批处理大小默认为 1。

  工作流程启动后，系统将重置批处理条件，事件触发器开始监控下一个要满足的批处理条件，以重新启动工作流。

  下表显示了批处理大小和批处理时间如何协同运行来触发工作流。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/workflows_overview.html)

  `GetWorkflowRun` API 操作返回触发工作流的批处理条件。

无论工作流程如何启动，您都可以在创建工作流时指定并发工作流运行的最大数量。

如果某个事件或某批事件启动的工作流最终运行失败，则不再考虑使用该事件或该批事件来启动工作流程运行。只有在下一个事件或下一批事件到达时，才会启动新的工作流运行。

**重要**  
将工作流中任务、爬网程序和触发器的总数限制为 100 个或更少。如果包含超过 100 个，则在尝试恢复或停止工作流运行时可能会出错。

如果工作流运行超过为工作流设置的并发限制，即使满足事件条件，也不会启动工作流运行。建议根据预期的事件量调整工作流并发限制。AWS Glue 不会重试因超出并发限制而失败的工作流运行。同样，建议根据预期的事件量调整工作流中的任务和爬网程序的并发限制。

**工作流运行属性**  
要在工作流程运行中共享和管理状态，您可以定义默认工作流程运行属性。这些属性是名称/值对，可用于工作流程中的所有作业。利用 AWS Glue API，任务可以检索工作流运行属性，并针对工作流中后面的任务修改它们。

**工作流图**  
下图显示 AWS Glue 控制台上的基本工作流图。您的工作流程可能拥有几十个组件。

![\[显示工作流 Graph (图表) 选项卡的控制台屏幕截图。图中包含 5 个图标，它们分别表示 1 个计划触发器、两个任务、1 个事件成功触发器以及 1 个更新架构的爬网程序。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/graph-complete-with-tabs.png)


此工作流由计划触发器 `Month-close1` 启动，该计划触发器启动两个任务 `De-duplicate` 和 `Fix phone numbers`。在成功完成这两个任务后，事件触发器 `Fix/De-dupe succeeded` 将启动爬网程序 `Update schema`。

**静态和动态工作流视图**  
对于每个工作流程，存在*静态视图* 和*动态视图* 的概念。静态视图表示工作流程的设计。动态视图是一个运行时视图，包含每个任务和爬网程序的最新运行信息。运行信息包含成功状态和错误详细信息。

当工作流程正在运行时，控制台将显示一个动态视图，它以图形方式指示作业已完成且尚未运行。您还可以使用 AWS Glue API 检索正在运行的工作流程的动态视图。有关更多信息，请参阅 [使用 AWS Glue API 查询工作流](workflows_api_concepts.md)。

**另请参阅**  
[在 AWS Glue 中从蓝图创建工作流](creating_workflow_blueprint.md)
[在 AWS Glue 中手动创建和构建工作流](creating_running_workflows.md)
[工作流程](aws-glue-api-workflow.md)（用于工作流 API）