AWS Glue のワークフローの概要 - AWS Glue

AWS Glue のワークフローの概要

AWS Glue では、複数のクローラ、ジョブ、およびトリガーを伴う複雑な ETL (抽出、変換、ロード) アクティビティを作成して可視化できます。各ワークフローは、含まれるすべてのジョブならびにクローラーの実行とモニタリングを管理します。ワークフローは、各コンポーネントについて、その実行の進捗状況とステータスを記録します。これにより、タスク全体の概要と各ステップの詳細を把握できます。AWS Glue コンソールは、ワークフローの状態をグラフで表示します。

ワークフローは、AWS Glue 設計図から作成することができます。あるいは、AWS Management Console または AWS Glue API を使用しながら、ワークフローとコンポーネントを毎回手動で作成することも可能です。設計図の詳細については、「AWS Glue での設計図の概要」を参照してください。

ワークフロー内のトリガーは、ジョブおよびクローラの両方を開始でき、同時に、ジョブもしくはクローラの完了によって起動することができます。トリガーを使用することで、相互に依存するジョブとクローラの大規模なチェーンを作成できます。ワークフロー内でジョブとクローラの依存関係を定義するトリガーに加えて、各ワークフローには開始トリガーもあります。開始トリガーには、以下の 3 種類があります。

  • スケジュール – 定義したスケジュールに基づいて、ワークフローが開始されます。スケジュールは、日次、週次、月次その他に設定することも、cron 式に基づきカスタムスケジュールを構成することも可能です。

  • オンデマンド – ワークフローは、AWS Glue コンソール、API、あるいは AWS CLI から手動で開始されます。

  • EventBridge イベント – ワークフローは、単一の Amazon EventBridge イベントまたは、バッチ化された Amazon EventBridge イベントの発生時に開始されます。このトリガータイプでは、AWS Glue はイベント駆動型アーキテクチャのイベントコンシューマとして機能します。すべての EventBridge イベントタイプがワークフローを開始できます。一般的なユースケースとしては、Amazon S3 バケット に新しいオブジェクトが保存された(S3 の PutObject オペレーション) 場合が挙げられます。

    イベントのバッチにより開始される場合、ワークフローは、指定された数のイベントを受信するか、指定された時間が経過するまで待機します。EventBridge イベントトリガーを作成する際には、オプションでバッチ条件を指定できます。バッチ条件を指定する際には、バッチサイズ (イベント数) を指定する必要があります。また、オプションでバッチウィンドウ (秒数) を指定することもできます。デフォルトで、バッチウィンドウは最大長である 900 秒 (15 分) に設定されています。ワークフローは、最初に満たされたバッチ条件によって開始されます。バッチウィンドウは、最初のイベントが受信された時点で開始されます。トリガーの作成時にバッチ条件を指定しない場合、バッチサイズはデフォルトで 1 に設定されます。

    ワークフローが開始されると、バッチ条件はリセットされます。イベントトリガーは、ワークフローを再度開始するために、後続のバッチ条件が満たされるかどうかの監視を開始します。

    次の表は、バッチサイズとバッチウィンドウが連携して、ワークフローをトリガーする様子を示しています。

    バッチサイズ バッチウィンドウ トリガ条件の結果
    10 ワークフローは、10 個の EventBridge イベントの受信と、前のイベントから 15 分間の経過のうち、先に発生したいずれかによりトリガーされます。(ウィンドウサイズを指定しない場合のデフォルト設定は 15 分です。)
    10 2 分 ワークフローは、10 個の EventBridge イベントの受信と、前のイベントから 2 分間の経過のうち、先に発生したいずれかによりトリガーされます。
    1 ワークフローは、1 つ目のイベントの到着時にトリガーされます。ウィンドウサイズの設定は無効です。EventBridge イベントトリガーの作成時にバッチ条件を指定しない場合、バッチサイズはデフォルトで 1 に設定されます。

    GetWorkflowRun API オペレーションは、ワークフローをトリガーしたバッチ条件を返します。

ワークフローの作成時は、ワークフローの開始方法に関係なく、ワークフローの同時実行の最大数を指定できます。

イベントまたはイベントのバッチが実行を開始したワークフローが最終的に失敗した場合、対象のイベントまたはイベントのバッチは、以後ワークフロー実行のためには使用されなくなります。新しいワークフローの実行は、次のイベントまたはイベントのバッチを受信した場合にのみ開始されます。

ワークフローに設定された同時実行の上限数を超過している場合は、仮にイベント条件が満たされていても、ワークフローの実行は開始されません。ワークフローの同時実行の制限は、想定されるイベントボリュームに基づいて調整することをお勧めします。AWS Glue は、同時実行の制限を超えたために失敗したワークフローの実行を再試行しません。同様に、想定されるイベント量に基づいて、ワークフロー内のジョブとクローラの同時実行の制限を調整することをお勧めします。

ワークフロー実行のプロパティ

ワークフローの実行全体の状態を共有して管理するには、ワークフローのデフォルトの実行プロパティを定義できます。これらのプロパティ (名前と値のペア) は、ワークフローのすべてのジョブで使用できます。AWS Glue API を使用すると、ジョブはワークフローの実行プロパティを取得し、これらのプロパティを変更してワークフローの以降のジョブで使用できます。

ワークフローのグラフ

次の図に、AWS Glue コンソールが表示する、ワークフローの基本的なグラフを示します。ワークフローには、いくつものコンポーネントが含まれている場合があります。


            コンソールに表示されるワークフローの [Graph] (グラフ) タブのスクリーンショット。このグラフは、スケジュールトリガー、2 つのジョブ、イベント成功トリガー、スキーマを更新するクローラを表す、5 つのアイコンで構成されています。

このワークフローは、スケジュールトリガー Month-close1 により開始されます。このトリガーは、2 つのジョブ (De-duplicate および Fix phone numbers) を開始します。これら 2 つのジョブが正常に完了すると、イベントトリガー Fix/De-dupe succeeded によってクローラ Update schema が開始されます。

ワークフローの静的ビューと動的ビュー

各ワークフローには、静的ビュー動的ビューの表記があります。静的ビューは、ワークフローの設計を示します。動的ビューは、各ジョブや各クローラに関する最新の実行情報を含むランタイムビューです。実行情報には、成功ステータスとエラーの詳細が含まれます。

ワークフローの実行中は、その動的ビューがコンソールに表示されます。また、完了済みのジョブと未実行のジョブがグラフで示されます。実行中のワークフローの動的ビューは、AWS Glue API を使用して取得することもできます。詳細については、「AWS Glue APIを使用したワークフローのクエリ」を参照してください。