Lambdaサンプルソース

Lambda + GlueのCrawlerのステータス取得(StepFunctions向け)

スポンサーリンク

前説

そんな訳?で、前回に引き続きStepFunctionから利用するLambdaシリーズ?という事で、Glue Crawlerの状態取得のLambdaサンプルを掲載します。

前回のLambdaと併せて、「Crawlerの実行」「Crawlerが実行完了するまで?秒毎にループ」といったStepFunctionの定義が可能となります。

githubにて公開

Lambda+Glue(Crawlerステータス取得)のサンプルソースです。ダウンロードは下記より。
https://github.com/SyoAwsBlog/ShoLambdaSample09

  • 環境変数で対象のCrawlerが指定可能
  • GlueのCrawlerのステータスを返却する

などの仕様を盛り込んでいます。

StepFunctionsで判定する時は、「Choices」で判定するイメージです。

{
   "Choices":[{
      "Variable":"$.response",
      "StringEquals":"FAILED",
      "Next": "エラーで終了のタスクへ"
     },
     {
      "Variable":"$.response",
      "StringEquals":"READY",
      "Next": "正常終了の後続タスクへ"
     }
   ]
}

 

利用可能な環境変数

変数名変数値
LogLevelログの出力レベルを(0~4)までの間で設定する
TargetCrawlerName対象のCrawler名

概要

今回も、サンプル1のソースを雛形としています。

特に難しい事もなく、

  • 環境変数から対象のCrawler名を取得してパラメータを生成する
  • 対象Crawlerのステータスを取得してきて、Lambdaの戻り値にマッピングする

ただ、それだけです。

主要な基底処理

今回は、getTasksをオーバーライドせずに利用していますが、処理の流れを説明します。

  AbstractBizCommon.prototype.getTasks = function (event, context) {
    var base = AbstractBizCommon.prototype;
    try {
      base.writeLogTrace("AbstractBizCommon# getTasks :start");

      return [
        this.beforeMainExecute,
        this.businessMainExecute,
        this.afterMainExecute,
      ];
    } catch (err) {
      base.printStackTrace(err);
      throw err;
    } finally {
      base.writeLogTrace("AbstractBizCommon# getTasks :end");
    }
  };
  • beforeMainExecute ・・・ 起動引数の返却
  • businessMainExecute ・・・ パラメータの生成&Crawlerのステータス取得
  • afterMainExecute ・・・ 戻値の整形

という処理の流れになっています。また今回は処理結果をLambdaのプログラムとしての戻り値を制御する必要があるので、GlueCrawlerStatusModule.jsで「afterAllTasksExecute」の実装を行っています。

あとがき

StepFunctions × Lambda × Glue × Athena の組み合わせを使いこなせると、大量データ(今風に言うとビックデータ?)の編集・集計バッチの在り方が劇的に変化するので、簡単に利用できると良いな、、、と思ってサンプルソースをあげてます。

お手元のAWS環境で、サクっと実証実験する時にでも使ってください。

 

スポンサーリンク

-Lambdaサンプルソース
-, , , , , ,

© 2020 とあるAWSエンジニアの戯言