serverless-lumigo
Version:
Serverless framework plugin to auto-install the Lumigo tracer
151 lines (108 loc) • 3.94 kB
Markdown
# serverless-lumigo
[](https://dl.circleci.com/status-badge/redirect/gh/lumigo-io/serverless-lumigo-plugin/tree/master)
[](http://www.serverless.com)
[](https://www.npmjs.com/package/serverless-lumigo)
[](LICENSE)
[](https://codecov.io/gh/lumigo-io/serverless-lumigo-plugin)
Serverless framework plugin to auto-install the Lumigo tracer for Node.js and Python functions.
## TOC
- [Install](#install)
- [Node.js functions](#nodejs-functions)
- [Python functions](#python-functions)
- [Configuring the tracer](#configuration)
## Install
Run `npm install` in your Serverless project.
`$ npm install --save-dev serverless-lumigo`
Add the plugin to your serverless.yml file
```yaml
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:
```yaml
provider:
name: aws
runtime: nodejs22.x
custom:
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
```yaml
provider:
name: aws
runtime: nodejs22.x
custom:
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.
```yaml
provider:
name: aws
runtime: nodejs22.x
custom:
lumigo:
token: <YOUR TOKEN GOES HERE>
skipInstallNodeTracer: true # defaults to false
```
In case you are using ES Modules for Lambda handlers.
```yaml
provider:
name: aws
runtime: nodejs22.x
custom:
lumigo:
token: <YOUR TOKEN GOES HERE>
nodeUseESModule: true
nodeModuleFileExtension: js
```
## Python functions
For Python functions, we recommend using the [serverless-python-requirements](https://www.npmjs.com/package/serverless-python-requirements) plugin to help you manage your dependencies. You should have the following in your `requirements.txt`:
```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`.
```yaml
provider:
name: aws
runtime: python3.10
custom:
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`
```yaml
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:
```yaml
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 function
```yaml
functions:
foo:
lumigo:
enabled: false
bar:
lumigo:
enabled: ${self:custom.enabledLumigo}
```
## How to test
Run `npm run test:all`