前説
前回のサンプルソースが取り組んでみたら、かなりの大物になったので、今回は記述量少なめなシンプルなパターンです。最近、StepFunctionsはGlueとの連携をサポートしはじめたようですが、Crawlerの実行には対応していなかったようなので、LambdaからCrawlerを起動するサンプルソースを掲載します。
個人的な嗜好としては、Glueのジョブを使うパターンが少な目なので、ちょっと残念なアップデートでした。
「Glue(Crawler)から、Athenaで集計する。」をStepFunctionsでバッチ化するパターンが、今のところ実務では多めです。
AWS利用料も、Glueジョブ使うより安いのでオススメです。
本投稿から、しばらくStepFunction絡みで、自分が使う再利用可能なLambda達を書いていこうかな?と思ってます。
githubにて公開
Lambda+Glue(Crawler実行)のサンプルソースです。ダウンロードは下記より。https://github.com/SyoAwsBlog/ShoLambdaSample08
- 環境変数で対象のCrawlerが指定可能
- GlueのCrawlerを実行す
などの仕様を盛り込んでいます。
ここ最近のサンプルソースの中では、「サンプルらしい!」と言えるほどシンプル機能(笑
利用可能な環境変数
変数名 | 変数値 |
---|---|
LogLevel | ログの出力レベルを(0~4)までの間で設定する |
TargetCrawlerName | 対象のCrawler名 |
概要
今回は、久しぶりにサンプル1のソースを雛形としています。
今回は、特に難しい事もなく、
- 環境変数から対象のCrawler名を取得してパラメータを生成する
- Crawlerを実行する
ただ、それだけです。
主要な基底処理
今回は、getTasksを末端のクラスでオーバーライドしてますが、処理の流れを説明します。
GlueCrawlerSubmitModule.prototype.AbstractBaseCommon.getTasks = function (
event,
context
) {
var base = GlueCrawlerSubmitModule.prototype.AbstractBaseCommon;
try {
base.writeLogTrace("GlueCrawlerSubmitModule# getTasks :start");
return [this.beforeMainExecute, this.businessMainExecute];
} catch (err) {
base.printStackTrace(err);
throw err;
} finally {
base.writeLogTrace("GlueCrawlerSubmitModule# getTasks :end");
}
};
- beforeMainExecute ・・・ 起動引数の返却
- businessMainExecute ・・・ パラメータの生成&Crawlerの実行
複雑な処理もないし、パラメータ作って、AWSのAPI実行するだけなので、初学向き・・・ですかね。
あとがき
比較的重たいサンプルソースが続いたので、ライトな感じで行数少な目なサンプルソースです。
しばらくは、StepFunctionsから呼び出して使う系のLambdaシリーズを続けようかと思います。