opentelemetry-js: crash when using aws-lambda instrumentation

I’ve been running into an exception where the JS auto-instrumentation attempts to load package.json from the base path of a lambda handler. Is there a way to customize the path from /var/task/src/handlers/my-function-name/package.json to a higher level /var/task/package.json or /opt/my-extension/package.json?

Copying the package.json into the expected locations causes the instrumentation to work as expected, it would just be painful for the project’s build process.

Setup:

  • AWS managed Lambda Layer for ADOT JavaScript SDK and ADOT Collector
  • OpenTelemetry JS v0.18.0
  • OpenTelemetry JS Contrib v0.20b0,
  • ADOT Collector for Lambda v0.9.1
  • Node 12 runtimes
  • Serverless framework builds and deploys

Exception:

2021-05-07T16:40:57.227Z undefined ERROR Uncaught Exception {"errorType":"Runtime.ImportModuleError",
"errorMessage":"Error: Cannot find module '/var/task/src/handlers/my-function-name/package.json'\n
Require stack:\n- /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js\n-
 /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js\n-
 /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js\n-
 /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js\n-
 /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/index.js\n-
 /opt/nodejs/node_modules/@opentelemetry/instrumentation-aws-lambda/build/src/aws-lambda.js\n-
 /opt/nodejs/node_modules/@opentelemetry/instrumentation-aws-lambda/build/src/index.js\n-
 /opt/wrapper.js\n-
 
 internal/preload","stack":["Runtime.ImportModuleError: Error: Cannot find module '/var/task/src/handlers/my-function-name/package.json'",
 "Require stack:","- /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js","-
  /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js","-
   /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js","-
    /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js","-
     /opt/nodejs/node_modules/@opentelemetry/instrumentation/build/src/index.js","-
      /opt/nodejs/node_modules/@opentelemetry/instrumentation-aws-lambda/build/src/aws-lambda.js","-
       /opt/nodejs/node_modules/@opentelemetry/instrumentation-aws-lambda/build/src/index.js","-
        /opt/wrapper.js","- internal/preload"," at _loadUserApp (/var/runtime/UserFunction.js:100:13)","
         at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)"," at Object.<anonymous> (/var/runtime/index.js:43:30)",
         " at Module._compile (internal/modules/cjs/loader.js:999:30)","
         at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)"," at Module.load (internal/modules/cjs/loader.js:863:32)","
          at Function.Module._load (internal/modules/cjs/loader.js:708:14)","
           at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)"," at internal/main/run_main_module.js:17:47"]}

_Originally posted by @adambartholomew in https://github.com/open-telemetry/opentelemetry-js/discussions/2192_

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 9
  • Comments: 18 (14 by maintainers)

Most upvoted comments

That’s what I was thinking. If the supportedVersions.contains('*') we shouldn’t have any reason to even attempt to find the package.json

Is this released, because im getting this error with all latest versions

@vmarchaud The PR was merged (https://github.com/open-telemetry/opentelemetry-js/pull/2450) - should we close the ticket?