arabold/aws-to-slack
Forward AWS CloudWatch Alarms and other notifications from Amazon SNS to Slack.
AWS-to-Slack
Forward AWS CloudWatch Alarms and other notifications from Amazon SNS to Slack.
| CloudWatch Example | EB Event Example |
|---|---|
![]() |
![]() |
What is it?
AWS-to-Slack is a Lambda function written in Node.js that forwards alarms and
notifications to a dedicated Slack channel. It is self-hosted
in your own AWS environment and doesn't have any 3rd party dependencies other
than the Google Charts API for rendering CloudWatch metrics.
Supported AWS product notification formats:
- Auto-Scaling Events
- Batch Events
- CloudFormation
- CloudWatch Alarms (incl. Metrics!)
- CodeBuild
- CodeCommit
- CodeDeploy ๐ (via SNS/CloudWatch)
- CodePipeline ๐ (via SNS/CloudWatch)
- CodePipeline Manual Approval ๐
- Elastic Beanstalk
- GuardDuty ๐
- Health Dashboard
- Inspector
- RDS
- SES Received Notifications
- Generic SNS messages
- Plain text messages
Additional formats will be added. Pull Requests are welcome!
Try!
Ready to try the latest version for yourself? Installation into your own AWS environment is simple:
Option 1: Quick Start (OLD CODE)
Warning! The template referenced by this link is an old template and old code! If you want the latest version of this repo, you need to update the Lambda code after it's launched.
Option 2: Get the latest bug fixes
-
Download this repo locally.
-
Use AWS Console's Create CloudFormation Stack tool.
Upload cloudformation.yaml as your template.
-
Finish launching the Stack.
For details on the parameter values, see Installation section.
-
Build / Update the code by running the following from the root of this project:
AWS_REGION="<your_lambda_region>" LAMBDA_NAME="<your_lambda_name>" make deployIf you use AWS CLI profiles, simply add
AWS_PROFILEto the make command like so:AWS_PROFILE="my-profile" AWS_REGION="<your_lambda_region>" LAMBDA_NAME="<your_lambda_name>" make deploy
Option 3: Use deploy target
See Managing Multiple Deployments for a .env file approach to creating or managing multiple stacks.
Installation
Step 1: Setup Slack
The Lambda function communicates with Slack through a Slack webhook
webhook. Note that you can either create an app, or a custom integration > Incoming webhook (easier, will only let you add a webhook)
- Navigate to https://my.slack.com/apps/manage and click
"Add Configuration". - Choose the default channel where messages will be sent and click
"Add Incoming WebHooks Integration". - Copy the webhook URL from the setup instructions and use it in the next
section. - Click "Save Settings" at the bottom of the Slack integration page.
Step 2: Configure & Launch the CloudFormation Stack
Note that the AWS region will be the region from which you launch the CloudFormation wizard, which will also scope the resources (SNS, etc.) to that region.
Launch the CloudFormation Stack by using our preconfigured CloudFormation
template and following the steps above.
Afterwards
Click "Next" and on the following page name your new stack and paste the
webhook URL from before into the "HookUrl" field. You can also configure a
different channel to post to if wanted.
Click "Next" again, complete the stack setup on the following pages and
finally launch your stack.
Step 3: Subscribe to Triggers
Before the Lambda function will actually do anything you need to subscribe it
to actual CloudWatch alarms and other SNS triggers. Open up the AWS Lambda,
switch to the "Triggers" tab and subscribe for all events you're interested in.
Setting Up AWS CodeBuild
CodeBuild integration was suggested by ericcj and is based on
the Medium post Monitor your AWS CodeBuilds via Lambda and Slack by
Randy Findley.
To enable CodeBuild notifications add a new CloudWatch Event Rule, choose CodeBuild
as source and CodeBuild Build State Change as type. As Target select the aws-to-slack
Lambda. You can leave all other settings as is. Once your rule is created all CodeBuild
build state events will be forwarded to your Slack channel.
Setting Up AWS CodeCommit
Similar to the CodeBuild integration, CodeCommit notifications are triggered by
CloudWatch Event Rules. Create a new CloudWatch Event Rule, select CodeCommit
as the source, and select one of the supported event types:
- CodeCommit Pull Request State Change - Will generate events when a pull
request is opened, closed, merged, or updated. - CodeCommit Repository State Change - Will generate events when a branch
or tag reference is created, updated, or deleted.
Add the aws-to-slack lambda as the target. No other settings are needed.
Managing Multiple Deployments
You can save local .env files that contain your stack configurations for easier deployment and updates. Copy targets/example.env to a separate file and customize the parameters. Then deploy the file like this:
TARGET=targets/my-deploy.env make deployIf you want to force-compile this project and push your code to a stack, use this:
TARGET=targets/my-deploy.env make package deployIf you need to update your CloudFormation parameters, try this:
TARGET=targets/my-deploy.env make update-stackContributing
You want to contribute? That's awesome! ๐
Check out our issues page for
some ideas how to contribute and a list of open tasks. There're plenty of
notification formats that still need to be supported.
The repository comes with a very simple Makefile to build the CloudFormation
stack yourself.
make packageThis generates a new release.zip in the root folder. Upload this zip to your
AWS Lambda function and you're good to go. Make sure to check out Managing Multiple Deployments for a more scalable solution to deploys.





