簡単にできるAWS LambdaへのX-Ray導入ですが、ハマったところをメモしておきます。
httpではなくrequestモジュールを使っている場合
AWSXRay.captureHTTPsGlobal
を使えば大丈夫です。
var request = require('request');
var AWSXRay = require('aws-xray-sdk');
AWSXRay.captureHTTPsGlobal(require('http'));
ローカルで実行するとエラーになる
次のようなエラーが出る場合。
Error: Failed to get the current sub/segment from the context.
AWS_XRAY_CONTEXT_MISSING
という環境変数が足りないようです。Lambdaで実行する場合はデフォルトでLOG_ERROR
が指定されます。
固定でよければ、次のようにコードで指定することもできます。
var AWSXRay = require('aws-xray-sdk');
AWSXRay.setContextMissingStrategy('LOG_ERROR');
LOG_ERROR
ではなく別の値を指定したい場合は変更してください。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-x-ray.html