@dpa-infocom/observability
v1.0.16
Published
A collection of utility functions published as a public npm package. Currently includes **`sendEventToBus`**, a utility to send **cached client-side errors** to a central **AWS EventBridge observability bus**.
Readme
📦 npm-public
A collection of utility functions published as a public npm package.
Currently includes sendEventToBus, a utility to send cached client-side errors to a central AWS EventBridge observability bus.
⚡ Quick Tips for Local Development
- Test without publishing:
npm link - Check publish contents:
npm pack
📌 Function: sendEventToBus
A lightweight utility to send cached client-side errors to a central AWS EventBridge observability bus.
⚡ Set Up
⚙️ Environment Variables
The following environment variables must be set for sendEventToBus to work:
| Variable | Description | Example |
|----------|-------------|---------|
| AWS_OBSERVABILITY_EVENT_BUS_ARN | ARN of the AWS EventBridge observability event bus where the event will be sent. | arn:aws:events:eu-central-1:123456789012:event-bus/observability-bus |
| AWS_OBSERVABILITY_REGION | AWS region where the observability event bus is deployed. | eu-central-1 |
| SERVICE_NAME | Name of the service emitting observability events. | ratgeber-hub-api |
⚙️ serverless.yml: IAM Policy
Make sure your serverless.yml file defines a policy to allow events:PutEvents to the target observability EventBus:
- Effect: Allow
Action:
- events:PutEvents
Resource: ${env:AWS_OBSERVABILITY_EVENT_BUS_ARN}
📦 Installation
npm install @dpa-infocom/observability🚀 Usage: Middleware (recommended)
The package provides a middleware adapter function called reportErrorMiddleware calls the sendEventToBus function and returns a 500 response object for API Gateway. reportErrorMiddleware will only be triggered if the lambda throws an error that is not handled.
Example:
import { reportErrorMiddleware } from "@dpa-infocom/observability";
const lambdaHandler = async (event: string, context: Context) => {
throw new Error("Unhandled Error Occurs");
};
export const handler = middy(lambdaHandler)
.use(reportErrorMiddleware());Alternative usage
Import the function sendEventToBus directly:
Example:
import { sendEventToBus } from "@dpa-infocom/observability";
async function lambdaHandler(event: string, context: Context) {
try{
...
} catch(error){
await sendEventToBus({
event,
context,
error
});
}
}
lambdaHandler();