serverless-lumigo
Serverless framework plugin to auto-install the Lumigo tracer for Node.js and Python functions.
TOC
Install
Run npm install
in your Serverless project.
$ npm install --save-dev serverless-lumigo
Add the plugin to your serverless.yml file
plugins: - serverless-lumigo
Node.js functions
For Node.js functions, the plugin would install the latest version of the Lumigo tracer for Node.js during serverless package
and serverless deploy
. It would also wrap your functions as well, so you only need to configure your Lumigo token in a custom
section inside the serverless.yml
.
For example:
provider: name: aws runtime: nodejs12.xcustom: lumigo: token: <YOUR TOKEN GOES HERE> nodePackageManager: <npm, pnpm or yarn>
In case you want to pin the specific tracer version use pinVersion
attribute.
For example
provider: name: aws runtime: nodejs12.xcustom: lumigo: token: <YOUR TOKEN GOES HERE> pinVersion: 1.31.1
In case you want to manage the Lumigo tracer dependency yourself - e.g. you want to use Lerna or Webpack, and can't have this plugin install the Lumigo tracer on your behalf on every deployment - then you can also disable the NPM install process altogether.
provider: name: aws runtime: nodejs12.xcustom: lumigo: token: <YOUR TOKEN GOES HERE> skipInstallNodeTracer: true # defaults to false
In case you are using ES Modules for Lambda handlers.
provider: name: aws runtime: nodejs14.xcustom: lumigo: token: <YOUR TOKEN GOES HERE> nodeUseESModule: true nodeModuleFileExtension: js
Python functions
For Python functions, we recommend using the serverless-python-requirements plugin to help you manage your dependencies. You should have the following in your requirements.txt
:
lumigo_tracer or lumigo-tracer
This installs the Lumigo tracer for Python, and this plugin would wrap your functions during serverless package
and serverless deploy
.
You also need to configure the Lumigo token in a custom
section in the serverless.yml
.
provider: name: aws runtime: python3.10custom: lumigo: token: <YOUR TOKEN GOES HERE>
In case you are not using requirements.txt
to manage your requirements then you can add skipReqCheck
and set it to true
custom: lumigo: token: 1234 skipReqCheck: true
Configuration
In order to pass parameters to the tracer, just add them as keys to lumigo custom configuration. For example:
custom: lumigo: token: <YOUR TOKEN GOES HERE> step_function: true
Function Scope Configuration
You can configure lumigo behavior for individual functions as well:
-
enabled
- Allows one to enable or disable lumigo for specific a specific functionfunctions:foo:lumigo:enabled: falsebar:lumigo:enabled: ${self:custom.enabledLumigo}
How to test
Run npm run test:all