@makerx/cloudwatch-error-alarms
v1.0.3
Published
AWS CDK lambda wrapper to send error alarms to Slack
Downloads
80
Readme
Cloudwatch Error Alarms (cloudwatch-error-alarms)
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
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.