AWS Lambdaの運用監視ツール
便利なツールは以下の通り
- DAZN Lambda Powertools
関連性のあるLambda同士を紐づけるIDをログに出力してくれます。
LambdaからLambdaの呼び出しが複雑になる場合に、関連性のあるログを一括して検索した場合に活用できます。
参考URL:https://dev.classmethod.jp/articles/dazn-lambda-powertools/
- AWS X-Ray
AWSのサービス(Lambdaもできる)の関連性を可視化でき、分析もできます。
※画面イメージ的には、JP1とか、Jenkinsのパイプライン的な感じ。Lambdaのジョブフローが見える感じ。
※内部的には、上記で紹介した「DAZN Lambda Powertools」と同じようなことしてます。
参考URL:https://docs.aws.amazon.com/xray/index.html
DAZN Lambda Powertools&AWS X-Rayどちらも使う場合の実装サンプルは以下。
var AWSXRay = require('aws-xray-sdk-core');
const client = require('@dazn/lambda-powertools-lambda-client');
var Lambda = AWSXRay.captureAWSClient(client);
const Log = require('@dazn/lambda-powertools-logger');
const wrap = require('@dazn/lambda-powertools-pattern-basic');
exports.handler = wrap(async (event, context) => {
Log.info('start');
const request = {
FunctionName: '次の関数名',
InvokeArgs: JSON.stringify({ message: 'hello lambda' })
};
await Lambda.invokeAsync(request).promise();
});
※アクティブトレースにチェック必要(X-RAY使う為)
※レイヤーに、xrayとdaznのライブラリ追加が必要
※起点のLambdaから複数のLambdaを非同期的に呼び出す場合は、AWSXRay.captureAsyncFuncを使った方が良さげ。
※本番環境で運用する場合は、エラーハンドリングはちゃんと書いてね。
なお、X-RAYの機能は、性能分析(Lambdaの実行時間分かる)に使えるのですが、
Lambdaの中の一部分の性能をはかりたい場合には、サブセグメント(beginとend)を決め、
サブセグメントの実行時間を計測できます。
詳細は以下URL
https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-sdk-nodejs-subsegments.html
概念的にはJavaの実装のが理解しやすい。以下の通り
https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-sdk-java-subsegments.html
※Node.jsでも、Java的な書き方は可能。