Relay alerts from Amazon CloudWatch to a Slack room.
This code is 100% based on Amazon CloudWatch to Hipchat and it could not be possible without it.
Requirements:
- A Heroku account.
- A Slack Account.
- A Slack Incoming Webhook Token configured to post messages to the room you want.
- An Amazon AWS account with Amazon CloudWatch and Amazon SNS setup and enabled.
Deploy your application to to Heroku:
cd /path/to/wherever
git clone https://github.com/esanchezm/amazon-cloudwatch-to-slack.git
cd amazon-cloudwatch-to-slack
heroku apps:create
heroku config:set 'SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX'
git push heroku master
You can optionally set a diferent slack channel, username or avatar to customize messages:
heroku config:set SLACK_CHANNEL=#yourchannel\
SLACK_USERNAME="AWS CloudWatch" \
SLACK_ICON_URL="http://www.example.com/bot_avatar.png" \
SLACK_ICON_EMOJI=":ghost:"
Notice that SLACK_ICON_URL
and SLACK_ICON_EMOJI
are mutually exclusive.
Additional configuration parameters for SES notifications:
heroku config:set SLACK_SES_CHANNEL=#otherchannel\
SLACK_SES_USERNAME="AWS SES" \
SLACK_SES_ICON_URL="http://www.example.com/bot_avatar.png" \
SLACK_SES_ICON_EMOJI=":ghost:"
Or just push the button:
Setup Amazon SNS:
- Create a new Topic, or select an existing Topic
- Add a New Subscription to the topic
- Select HTTPS, and paste in your HTTPS URL to your Heroku application
Setup Amazon CloudWatch:
- Create or modify an alert
- Select the "Send Notification" action
- Select the SNS topic you created / updated in the previous step