Install
npm install @makerx/cloudwatch-error-alarms --save
Usage
In your CDK stack, create the lambda with CloudWatchErrorAlarmLambda
and subscribe it to the log group for error level messages.
import { CloudWatchErrorAlarmLambda } from '@makerx/cloudwatch-error-alarms'
import * as destinations from 'aws-cdk-lib/aws-logs-destinations'
import { FilterPattern } from 'aws-cdk-lib/aws-logs'
// My lambda to monitor
const lambda = new lambda.Function(...)
// Set up error lambda to post to Slack
const errorsLambda = new CloudWatchErrorAlarmLambda(this, `${id}-cloud-watch-error-alarms`, {
erroringFunctionName: lambda.functionName,
functionName: `${id}-cloud-watch-error-alarms`, // The cloud watch error alarm lambda function name
slackWebhookUrl: `${slackWebhookUrl}`, // Slack webhook https://slack.com/intl/en-au/help/articles/115005265063-Incoming-webhooks-for-Slack
errorFilterRegexes: [
// Regex to ignore error messages
],
})
// Allow cloud watch to trigger the alarm lambda on error
lambda.logGroup.addSubscriptionFilter(`${id}-cloud-watch-error-alarms-subscription`, {
destination: new destinations.LambdaDestination(errorsLambda),
filterPattern: FilterPattern.stringValue('$.level', '=', 'error'),
})
For developers
Structure
index.ts
is the entry point of the packaage
infrastructure.ts
contains AWS CDK to configure the error alarm lambda
lambda
folder
Standalone package that has everything needed for the AWS lambda:
- it's own
package.json
- build script to produce a package that can be deploy to AWS lambda and run
How the build works
At the root level, npm run build
does:
- Run build for the lambda then copy the output to
./build
- Run
tsc
forindex.ts
andinfrastructure.ts
into./build
Thebuild
folder in the content of the NPM package.