-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ref(aws-lambda): Restructure and improve AWS Lambda SDK documentation (…
…#10655) --------- Co-authored-by: Andrei <168741329+andreiborza@users.noreply.github.com>
- Loading branch information
1 parent
e27b421
commit f13e2f6
Showing
15 changed files
with
475 additions
and
203 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
docs/platforms/javascript/guides/aws-lambda/configuration/lambda-wrapper.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
--- | ||
title: Lambda Handler Wrapper | ||
description: "Configure Sentry's Lambda function wrapper" | ||
sidebar_order: 2 | ||
--- | ||
|
||
On this page you'll learn about the options to configure the `Sentry.wrapHandler` wrapper for your Lambda function. | ||
|
||
If you're using the AWS Lambda layer with environment variables (i.e. no Sentry code in your function), skip this guide or switch to the [initializing the SDK in code](../../install/cjs-layer#alternative-initialize-the-sdk-in-code). | ||
|
||
## Flush Timeout | ||
|
||
Sentry keeps the lambda function thread alive for up to 2 seconds to ensure reported errors are sent. You can change this flush time limit by defining a `flushTimeout` value in the handler options: | ||
|
||
```javascript {filename:index.js} {2} | ||
exports.handler = Sentry.wrapHandler(yourHandler, { | ||
flushTimeout: 1000, | ||
}); | ||
``` | ||
|
||
## Timeout Warning | ||
|
||
Sentry reports timeout warnings when the Lambda function is within 500ms of its execution time. You can turn off timeout warnings by setting `captureTimeoutWarning` to `false` in the handler options. | ||
|
||
```javascript {filename:index.js} {2} | ||
exports.handler = Sentry.wrapHandler(yourHandler, { | ||
captureTimeoutWarning: false, | ||
}); | ||
``` | ||
|
||
To change the timeout warning limit, assign a numeric value (in ms) to `timeoutWarningLimit`: | ||
|
||
```javascript {filename:index.js} {2} | ||
exports.handler = Sentry.wrapHandler(yourHandler, { | ||
timeoutWarningLimit: 700, | ||
}); | ||
``` | ||
|
||
## Capture Rejected Promises in `Promise.allSettled` | ||
|
||
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 | ||
|
||
```javascript {tabTitle:captureAllSettledReasons} | ||
exports.handler = Sentry.wrapHandler( | ||
() => { | ||
return Promise.allSettled([ | ||
Promise.rejected(new Error("first")), | ||
Promise.rejected(new Error("second")), | ||
]); | ||
}, | ||
{ captureAllSettledReasons: true } | ||
); | ||
// `first` and `second` errors are captured | ||
``` |
43 changes: 0 additions & 43 deletions
43
docs/platforms/javascript/guides/aws-lambda/container-image/index.mdx
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
110 changes: 110 additions & 0 deletions
110
docs/platforms/javascript/guides/aws-lambda/install/cjs-layer.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
--- | ||
title: Lambda Layer - CJS | ||
description: "Learn how to add the Sentry Node Lambda Layer to use Sentry in your Lambda functions running in CommonJS (CJS)" | ||
sidebar_order: 1 | ||
--- | ||
|
||
The easiest way to get started with Sentry is to use the Sentry [Lambda Layer](https://docs.aws.amazon.com/Lambda/latest/dg/configuration-layers.html) instead of adding `@sentry/aws-serverless` with `npm` or `yarn` [manually](../cjs-manual). | ||
If you follow this guide, you don't have to worry about deploying Sentry dependencies alongside your function code. | ||
To actually start the SDK, you can decide between setting up the SDK using environment variables or in your Lambda function code. We recommend using environment variables as it's the easiest way to get started. [Initializing the SDK in code](#alternative-initialize-the-sdk-in-code) instead of setting environment variables gives you more control over the SDK setup if you need it. | ||
|
||
<Note> | ||
|
||
This installation method **does not** work with Lambda functions running in EcmaScript Modules (ESM) mode, using `import` syntax. If you're running your function in ESM, follow the [ESM guide](../esm-npm). | ||
|
||
</Note> | ||
|
||
## 1. Prerequisites | ||
|
||
Before you begin, make sure you have the following: | ||
|
||
- You have a Lambda function that is running in CommonJS (CJS) mode, using `require` syntax. | ||
- You know the AWS region that your function is deployed to. | ||
|
||
## 2. Add the Sentry Lambda Layer | ||
|
||
Add the Sentry Layer by navigating to your Lambda function. Select **Layers**, then **Add a Layer**. | ||
|
||
![](./img/lambda_view.png) | ||
|
||
**Specify an ARN** tab as illustrated: | ||
|
||
![](./img/add_layer.png) | ||
|
||
Finally, set the region and copy the provided ARN value into the input. | ||
|
||
<LambdaLayerDetail canonical="aws-layer:node" /> | ||
|
||
<br /> | ||
|
||
## 3. Initialize the SDK with Environment Variables | ||
|
||
The easiest way to set up the SDK is to start and configure it using environment variables. This way, you don't have to modify your Lambda function code. | ||
|
||
<OnboardingOptionButtons options={["error-monitoring", "performance"]} /> | ||
|
||
Set the following environment variables in your Lambda function configuration: | ||
|
||
```bash {"onboardingOptions": {"performance": "3"}} | ||
NODE_OPTIONS="-r @sentry/aws-serverless/awslambda-auto" | ||
SENTRY_DSN="___PUBLIC_DSN___" | ||
SENTRY_TRACES_SAMPLE_RATE="1.0" | ||
``` | ||
|
||
To set environment variables, navigate to your Lambda function, select **Configuration**, then **Environment variables**: | ||
|
||
![](./img/cjs_env_vars.png) | ||
|
||
## Alternative: Initialize the SDK in Code | ||
|
||
Instead of [Step 3, setting environment variables](#3-initialize-the-sdk-with-environment-variables), you can also manually initialize the SDK in your Lambda function code. | ||
This way, you can customize the SDK setup further. | ||
Note that you don't have to actually install an NPM package for this to work, as the package is already included in the Lambda Layer. | ||
|
||
Make sure you completed [step 1](#1-prerequisites) and [step 2](#2-add-the-sentry-lambda-layer) before proceeding. | ||
|
||
```javascript {filename:index.js} {"onboardingOptions": {"performance": "5-8"}} | ||
const Sentry = require("@sentry/aws-serverless"); | ||
|
||
Sentry.init({ | ||
dsn: "__PUBLIC_DSN__", | ||
// Add Tracing by setting tracesSampleRate and adding integration | ||
// Set tracesSampleRate to 1.0 to capture 100% of transactions | ||
// We recommend adjusting this value in production | ||
tracesSampleRate: 1.0, | ||
}); | ||
|
||
exports.handler = Sentry.wrapHandler(async (event, context) => { | ||
// Your handler code | ||
}); | ||
``` | ||
|
||
It's important to add both, the `Sentry.init` call outside the handler function and the `Sentry.wrapHandler` wrapper around your function to automatically catch errors and performance data. | ||
|
||
That's it - you're all set! | ||
|
||
## Lambda layer for v7 SDK | ||
|
||
The instructions above are written for SDK version 8 (the most recent version). | ||
You can also install a v7 version of the Sentry Lambda layer in case you can't upgrade to v8. | ||
The procedure is identical to the instructions above except for two differences: | ||
|
||
### v7 layer ARN | ||
|
||
The v7 Lambda layer has a different ARN: | ||
|
||
``` | ||
arn:aws:Lambda:us-west-1:943013980633:layer:SentryNodeServerlessSDKv7:3 | ||
``` | ||
|
||
Modify and copy the ARN value for your region into the input, e.g. for region `:us-west-1` and the current v7 Lambda layer version `:3`: | ||
|
||
### v7 package name | ||
|
||
The `@sentry/aws-serverless` package was called `@sentry/serverless` prior to version 8. Therefore, for the v7 layer, adjust your `NODE_OPTIONS` environment variable: | ||
|
||
```bash | ||
NODE_OPTIONS="-r @sentry/serverless/dist/awslambda-auto" | ||
``` | ||
|
||
The other environment variables remain the same as above. |
Oops, something went wrong.