Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/makerxstudio/cloudwatch-error-alarms
CDK and lambda wrapper to send error alarms to Slack
https://github.com/makerxstudio/cloudwatch-error-alarms
aws cloudwatch error-alarms lambda npm oss package slack typescript
Last synced: 1 day ago
JSON representation
CDK and lambda wrapper to send error alarms to Slack
- Host: GitHub
- URL: https://github.com/makerxstudio/cloudwatch-error-alarms
- Owner: MakerXStudio
- License: mit
- Created: 2022-08-08T03:50:37.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-24T08:39:05.000Z (about 1 year ago)
- Last Synced: 2024-04-25T11:03:30.647Z (10 months ago)
- Topics: aws, cloudwatch, error-alarms, lambda, npm, oss, package, slack, typescript
- Language: TypeScript
- Homepage: https://makerxstudio.github.io/cloudwatch-error-alarms
- Size: 405 KB
- Stars: 0
- Watchers: 13
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
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[![npm package][npm-img]][npm-url]
[![Build Status][build-img]][build-url]
[![Downloads][downloads-img]][downloads-url]
[![Issues][issues-img]][issues-url]
[![Semantic Release][semantic-release-img]][semantic-release-url]## Install
```bash
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` for `index.ts` and `infrastructure.ts` into `./build`
The `build` folder in the content of the NPM package.[build-img]: https://github.com/MakerXStudio/cloudwatch-error-alarms/actions/workflows/release.yml/badge.svg
[build-url]: https://github.com/MakerXStudio/cloudwatch-error-alarms/actions/workflows/release.yml
[downloads-img]: https://img.shields.io/npm/dt/@MakerXStudio/cloudwatch-error-alarms
[downloads-url]: https://www.npmtrends.com/@makerx/cloudwatch-error-alarms
[npm-img]: https://img.shields.io/npm/v/@makerx/cloudwatch-error-alarms
[npm-url]: https://www.npmjs.com/package/@makerx/cloudwatch-error-alarms
[issues-img]: https://img.shields.io/github/issues/MakerXStudio/cloudwatch-error-alarms
[issues-url]: https://github.com/MakerXStudio/cloudwatch-error-alarms/issues
[semantic-release-img]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[semantic-release-url]: https://github.com/semantic-release/semantic-release