Skip to content

A Serverless plugin to install New Relic's AWS Lambda layers without requiring a code change.

License

Notifications You must be signed in to change notification settings

newrelic/serverless-newrelic-lambda-layers

Repository files navigation

serverless-newrelic-lambda-layers

A Serverless plugin to add New Relic observability using AWS Lambda Layers without requiring a code change.

Requirements

Features

  • Supports Node.js and Python runtimes (more runtimes to come)
  • No code change required to enable New Relic
  • Bundles New Relic's agent in a single layer
  • Configures CloudWatch subscription filters automatically

Install

With NPM:

npm install --save-dev serverless-newrelic-lambda-layers

With yarn:

yarn add --dev serverless-newrelic-lambda-layers

Add the plugin to your serverless.yml:

plugins:
  - serverless-newrelic-lambda-layers

If you don't yet have a New Relic account, sign up here. Then set up the New Relic AWS Integration (only the set-up-lambda-integration step is required).

Get your New Relic Account ID and plug it into your serverless.yml:

custom:
  newRelic:
    accountId: your-new-relic-account-id-here

Deploy:

sls deploy

And you're all set.

Usage

This plugin wraps your handlers without requiring a code change. If you're currently using a New Relic agent, you can remove the wrapping code you currently have and this plugin will do it for you automatically.

Config

The following config options are available via the newRelic section of the custom section of your serverless.yml:

accountId (required)

Your New Relic ACcount ID.

custom:
  newRelic:
    accountId: your-account-id-here

trustedAccountKey (optional)

Only required if your New Relic account is a sub-account. This needs to be the account ID for the root/parent account.

custom:
  newRelic:
    accountId: your-sub-account-id
    trustedAccountKey: your-parent-account-id

debug (optional)

Whether or not to enable debug mode. Must be a boolean value. This sets the log level to debug.

custom:
  newRelic:
    debug: true

exclude (optional)

An array of functions to exclude from automatic wrapping.

custom:
  newRelic:
    exclude:
      - excluded-func-1
      - another-excluded-func

layerArn (optional)

Pin to a specific layer version. The latest layer ARN is automatically fetched from the New Relic Layers API

custom:
  newRelic:
    layerArn: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicPython37:2

cloudWatchFilter (optional)

Provide a list of quoted filter terms for the CloudWatch log subscription to the newrelic-log-ingestion Lambda. Combines all terms into an OR filter. Defaults to "NR_LAMBDA_MONITORING" if not set. Use "*" to capture all logs

custom:
  newRelic:
    cloudWatchFilter:
    - "NR_LAMBDA_MONITORING"
    - "trace this"
    - "ERROR"

prepend (optional)

Whether or not to prepend the IOpipe layer. Defaults to false which appends the layer.

custom:
  newRelic:
    prepend: true

Supported Runtimes

This plugin currently supports the following AWS runtimes:

  • nodejs8.10
  • nodejs10.x
  • nodejs12.x
  • python2.7
  • python3.6
  • python3.7
  • python3.8

About

A Serverless plugin to install New Relic's AWS Lambda layers without requiring a code change.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages