使用 AWS Glue API 查询工作流程 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AWS Glue API 查询工作流程

AWS Glue 提供了用于管理工作流程的丰富 API。您可以使用 AWS Glue API 检索工作流程的静态视图或正在运行的工作流程的动态视图。有关更多信息,请参阅Workflows

查询静态视图

可使用 GetWorkflow API 操作获取指示工作流程设计的静态视图。此操作返回由节点和边缘组成的有向图,其中节点表示触发器、作业或爬网程序。边缘定义节点之间的关系。它们由 AWS Glue 控制台中图表上的连接器(箭头)表示。您也可以对常用图形处理库执行此操作,例如 NetworkX,图像, JGraphT、和JavaUniversalNetwork/Graph(JUNG)Framework。由于所有这些库都以类似方式表示图表,因此需要最少的转换。

根据与工作流程关联的触发器的最新定义,此 API 返回的静态视图是最新视图。

图表定义

工作流程图表 G 是一个有序对 (N, E),其中 N 是一组节点,E 是一组边缘。节点 是图表中由一个唯一数字标识的顶点。节点的类型可以是触发器、作业或爬网程序;例如:{name:T1, type:Trigger, uniqueId:1}, {name:J1, type:Job, uniqueId:2}

边缘 是一个 2 元组的形式 (src, dest),其中 srcdest 是节点,并且存在从 srcdest 的定向边缘。

查询静态视图的示例

考虑条件触发器 T,这将在作业 J1 完成时触发作业 J2。

J1 ---> T ---> J2

节点: J1,T,J2(J1,T,J2)

边缘: (J1、T)、(T、J2)

查询动态视图

使用 GetWorkflowRun API 操作获取正在运行的工作流程的动态视图。此操作返回图表的相同的静态视图以及与工作流程运行相关的元数据。

例如,表示 GetWorkflowRun 调用中的作业的节点具有一组作业运行,它们作为最新工作流程运行的一部分启动。您可以使用此列表在图表本身中显示每个作业的运行状态。对于尚未执行的下游依赖项,此字段设置为 null。图形化的信息让您了解任何时间点任何工作流的当前状态。

此 API 返回的动态视图与工作流程运行开始时出现的静态视图相同。

运行时节点示例: {name:T1, type: Trigger, uniqueId:1}, {name:J1, type:Job, uniqueId:2, jobDetails:{jobRuns}}, {name:C1, type:Crawler, uniqueId:3, crawlerDetails:{crawls}}

示例 1:动态视图

以下示例说明了一个包含两个触发器的简单工作流程。

  • 节点:t1、j1、t2、j2

  • 边缘:(t1, j1)、(j1, t2)、(t2, j2)

GetWorkflow 响应包含以下内容。

{ Nodes : [ { "type" : Trigger, "name" : "t1", "uniqueId" : 1 }, { "type" : Job, "name" : "j1", "uniqueId" : 2 }, { "type" : Trigger, "name" : "t2", "uniqueId" : 3 }, { "type" : Job, "name" : "j2", "uniqueId" : 4 } ], Edges : [ { "sourceId" : 1, "destinationId" : 2 }, { "sourceId" : 2, "destinationId" : 3 }, { "sourceId" : 3, "destinationId" : 4 } }

GetWorkflowRun 响应包含以下内容。

{ Nodes : [ { "type" : Trigger, "name" : "t1", "uniqueId" : 1, "jobDetails" : null, "crawlerDetails" : null }, { "type" : Job, "name" : "j1", "uniqueId" : 2, "jobDetails" : [ { "id" : "jr_12334", "jobRunState" : "SUCCEEDED", "errorMessage" : "error string" } ], "crawlerDetails" : null }, { "type" : Trigger, "name" : "t2", "uniqueId" : 3, "jobDetails" : null, "crawlerDetails" : null }, { "type" : Job, "name" : "j2", "uniqueId" : 4, "jobDetails" : [ { "id" : "jr_1233sdf4", "jobRunState" : "SUCCEEDED", "errorMessage" : "error string" } ], "crawlerDetails" : null } ], Edges : [ { "sourceId" : 1, "destinationId" : 2 }, { "sourceId" : 2, "destinationId" : 3 }, { "sourceId" : 3, "destinationId" : 4 } }

示例 2:具有条件触发器的多个作业

以下示例显示具有多个作业和一个条件触发器 (t3) 的工作流程。

Consider Flow: T(t1) ---> J(j1) ---> T(t2) ---> J(j2) | | | | >+------> T(t3) <-----+ | | J(j3) Graph generated: Nodes: t1, t2, t3, j1, j2, j3 Edges: (t1, j1), (j1, t2), (t2, j2), (j1, t3), (j2, t3), (t3, j3)