AWS Glue API を使用したワークフローのクエリ - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Glue API を使用したワークフローのクエリ

AWS Glue には、ワークフローを管理するための高度な API が用意されています。 AWS Glue API を使用してワークフローの静的ビューまたは実行中のワークフローの動的ビューを取得できます。詳細については、「Workflows」を参照してください。

静的ビューのクエリ

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) です。 srcdest はノードで、src から destへの有向エッジがあります。

静的ビューのクエリの例

ジョブ J1 の完了時にジョブ J2 をトリガーする条件付きのトリガー T を考えます。

J1 ---> T ---> J2

ノード: J1, T, J2

Edge の数: (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: 複数のジョブと 1 つの条件付きのトリガー

次の例は、複数のジョブと 1 つの条件付きのトリガー (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)