An AWS Lambda function for better Slack notifications. Check out the blog post.
This function was originally derived from the
AWS blueprint named cloudwatch-alarm-to-slack
. The
function in this repo improves on the default blueprint in several
ways:
Better default formatting for CloudWatch notifications:
Support for notifications from Elastic Beanstalk:
Support for notifications from Code Deploy:
Basic support for notifications from ElastiCache:
Support for encrypted and unencrypted Slack webhook url:
cp .env.example .env
Fill in the variables in the .env
.
Follow these steps to configure the webhook in Slack:
-
Navigate to https://slack.com/services/new and search for and select "Incoming WebHooks".
-
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.
If you don't want or need to encrypt your hook URL, you can use the
UNENCRYPTED_HOOK_URL
. If this variable is specified, the
KMS_ENCRYPTED_HOOK_URL
is ignored.
If you do want to encrypt your hook URL, follow these steps to encrypt your Slack hook URL for use in this function:
-
Create a KMS key - http://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html.
-
Encrypt the event collector token using the AWS CLI. $ aws kms encrypt --key-id alias/ --plaintext "<SLACK_HOOK_URL>"
Note: You must exclude the protocol from the URL (e.g. "hooks.slack.com/services/abc123").
-
Copy the base-64 encoded, encrypted key (CiphertextBlob) to the ENCRYPTED_HOOK_URL variable.
-
Give your function's role permission for the kms:Decrypt action. Example:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1443036478000",
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"<your KMS key ARN>"
]
}
]
}
The final step is to deploy the integration to AWS Lambda:
npm install
npm run deploy
With the variables filled in, you can test the function:
npm install
npm test
MIT License