CDK and lambda wrapper to send error alarms to Slack. This project inclues:
- A lambda that is invoked by cloud watch message to send alert to Slack
- AWS CDK to deploy and configure the lambda
npm install @makerx/cloudwatch-error-alarms --save
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'),
})
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
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.