AWS Glue API를 사용하여 워크플로 쿼리
AWS Glue는 워크플로우를 관리하기 위한 다양한 API를 제공합니다. AWS Glue API를 사용하여 워크플로우의 정적 보기 또는 실행 중인 워크플로우의 동적 보기를 검색할 수 있습니다. 자세한 내용은 워크플로 단원을 참조하십시오.
정적 보기 쿼리
GetWorkflow
API 작업을 사용하여 워크플로우의 설계를 나타내는 정적 보기를 가져옵니다. 이 작업은 노드와 엣지로 구성된 방향성 그래프를 반환합니다. 여기에서 노드는 트리거, 작업 또는 크롤러를 나타냅니다. 엣지는 노드 간의 관계를 정의합니다. 엣지는 AWS Glue 콘솔의 그래프에서 커넥터(화살표)로 표현됩니다.
NetworkX, igraph, JGraphT, Java Universal Network/Graph(JUNG) Framework 등의 인기 있는 그래프 처리 라이브러리에서 이 작업을 사용할 수도 있습니다. 이러한 모든 라이브러리는 그래프를 비슷하게 나타내기 때문에 최소한의 변환이 필요합니다.
이 API가 반환하는 정적 보기는 워크플로우와 연결된 트리거의 최신 정의에 따라 최신 보기입니다.
그래프 정의
워크플로우 그래프 G는 정렬된 페어(N, E)입니다. 여기서 N은 노드 세트이고 E는 엣지 세트입니다. 노드는 고유한 숫자로 식별되는 그래프의 꼭짓점입니다. 노드는 트리거, 작업 또는 크롤러 유형일 수 있습니다. 예: {name:T1, type:Trigger, uniqueId:1}, {name:J1, type:Job,
uniqueId:2}
.
엣지는 2튜플의 형식(src, dest
)입니다. 여기에서 src
와 dest
는 노드이고 src
에서 dest
로의 방향성 엣지가 있습니다.
정적 보기 쿼리의 예
작업 J1을 완료하면 작업 J2를 트리거하는 조건부 트리거 T를 생각해 보십시오.
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: 동적 보기
다음 예에서는 간단한 2 트리거 워크플로우를 보여 줍니다.
-
노드: 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)