AWS Lambda

(New in version 5.26.0)

Create a deployment package on your local machine and install the required dependencies in the deployment package. For more information, see Building an AWS Lambda deployment package for Node.js.

Add @sentry/serverless as a dependency:

Copied
npm install --save @sentry/serverless

We also support installing Sentry as a Container Image and installing Sentry in Lambda Layer.

You can use the AWS Lambda integration for the Node like this:

Copied
const Sentry = require("@sentry/serverless");

Sentry.AWSLambda.init({
  dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",

  // We recommend adjusting this value in production, or using tracesSampler
  // for finer control
  tracesSampleRate: 1.0,
});

exports.handler = Sentry.AWSLambda.wrapHandler(async (event, context) => {
  // Your handler code
});

Enable Timeout Warning

Sentry reports timeout warning when the function is within 500ms of its execution time. You can turn off timeout warnings by setting captureTimeoutWarning to false in the handler options. To change timeout warning limit, assign a numeric value (in ms) to timeoutWarningLimit

Copied
exports.handler = Sentry.AWSLambda.wrapHandler(yourHandler, {
  captureTimeoutWarning: false,
});

Capture Rejected Promises in Promise.allSettled

(New in version 6.14.3)

By default, Sentry captures errors raised by your handler. However, your handler might return a Promise.allSettled result. In this case, even if one of the messages has failed, Sentry won't capture any exception.

The captureAllSettledReasons (default: false) option captures all promise rejected results

Copied
exports.handler = Sentry.AWSLambda.wrapHandler(() => {
  return Promise.allSettled([
        Promise.rejected(new Error('first')),
        Promise.rejected(new Error('second')),
  ]);
}, { captureAllSettledReasons: true });
// `first` and `second` errors are captured

Ignore Sentry Errors

(New in version 6.18.0)

By default, Sentry fails Lambda invocation if it is unable to send events to Sentry. In this case, even if all reported errors were handled and your handler executed successfully, Sentry will fail the whole Lambda invocation.

The ignoreSentryErrors (default: false) option ignores all the errors raised by Sentry

Copied
exports.handler = Sentry.AWSLambda.wrapHandler(yourHandler, {
  // Ignore any errors raised by the Sentry SDK on attempts to send events to Sentry
  ignoreSentryErrors: true,
});

Behavior

With the AWS Lambda integration enabled, the Node SDK will:

  • Automatically report all events from your Lambda Functions.
  • Allows you to modify the transaction sample rate using tracesSampleRate.
  • Issue reports automatically include:
    • A link to the cloudwatch logs
    • Function details
    • sys.argv for the function
    • AWS Request ID
    • Function execution time
    • Function version
  • Sentry holds the thread for up to 2 seconds to report errors. You can change flush time limit by defining a flushTimeout value in the handler options
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) to suggesting an update ("yeah, this would be better").