-
Notifications
You must be signed in to change notification settings - Fork 240
Description
A Lambda function has a "Handler" string (set on the _HANDLER envvar in the Lambda invocation process) that indicates the location of the handler function (both its module file location, and the export lookup path inside that module).
E.g. some/subdir/filename.handlerFunctionName points to a JS module at $LAMBDA_TASK_ROOT/some/subdir/filename.{js,cjs,mjs} and the handlerFunctionName export from that module.
The APM agent's processing of that handler string breaks if there is a period (.) in the module path. For example, this works:
_HANDLER="src/functions/myfunc/handler.main"but this does not:
_HANDLER="./src/functions/myfunc/handler.main"I suspect also that this would fail, but I have not tested.
_HANDLER="src/functions/my.other.func/handler.main"The symptom is that a Lambda function setup to be instrumented by the Node.js APM agent does not show this log.debug:
{"log.level":"debug",...,"log.logger":"elastic-apm-node","message":"instrumenting /var/task/...@$LATEST module (enabled=true, ...)"}
Then no Lambda transaction is created, and then (typically) any additional spans from other instrumentation will not get created for lack of a current transaction.