Recently the AWS team announced a new service, AWS ChatBot, that aims to increase the visibility of informational events for delivery teams.
The team at Cevo have been working with a ChatBot method of information dissemination for a fair while now through the use of the GitHub project aws-to-slack. This tool is pretty straight forward to set up and configure, but runs the risk of being left behind as AWS adds services.
The release of the AWS ChatBot service gives us an AWS focused view, and easy integration with Chime and Slack through the AWS console.
At this stage there is no Command Line Interface or CloudFormation support to configure the AWS ChatBot bot – luckily there is not much to configure.
Through a couple of console clicks you can authenticate your AWS account into Slack and quickly configure the channel to route the events to.
At this stage AWS Chatbot is in beta and launched with support for the following services:
- AWS Health
- AWS CloudWatch
- AWS Guard Duty
- AWS Billing and Cost Management (for AWS Budget Alerts)
- AWS CloudFormation
- AWS Config
- AWS Security Hub
- AWS Systems Manager
For our example I setup AWS Health
to route events through to a new channel in Slack.
Below is a CloudFormation template that streams all of the AWS Health
events to an SNS topic which can be connected to the AWS ChatBot service.
AWSTemplateFormatVersion: ‘2010-09-09’
Description: This CloudFormation Template can be used to quickly get started with AWS AWSHealth.
Parameters:
ResourceName:
Type: String
Default: AWSHealth-Events
AllowedValues:
– AWSHealth-Events
Description: Prefix for the resources that are created.
Metadata: {}
Mappings: {}
Conditions: {}
Resources:
# Findings SNS Topic
AWSHealthSNSTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: !Ref ResourceName
AWSHealthSNSTopicPolicy:
Type: AWS::SNS::TopicPolicy
Properties:
PolicyDocument:
Id: ID-GD-Topic-Policy
Version: ‘2012-10-17’
Statement:
– Sid: SID-GD-Example
Effect: Allow
Principal:
Service: aws.amazon.com/events
Action: sns:Publish
Resource: !Ref AWSHealthSNSTopic
Topics:
– !Ref AWSHealthSNSTopic
AWSHealthEvent:
Type: AWS::Events::Rule
Properties:
Name: AWSHealth-Events-All
Description: “All AWSHealth Events”
EventPattern:
source:
– aws.health
State: ENABLED
Targets:
–
Arn: !Ref AWSHealthSNSTopic
Id: “AWSHealthSNSTopic”
Outputs: {}
Once this stack has been created you can use the AWS ChatBot console to connect your Slack Channel to this newly created SNS topic.
Now we just need to sit back and wait for the events to roll in. Luckily overnight we got a notification that one of our RDS instances is hitting an EOL notification – and up popped this message in our Slack channel – making notification and discussion about the action much easier to perform.
This method of using Slack as a notification channel has a lot of power in allowing teams to more efficently and effectively route information to the right person at the right time.
At Cevo we already have a channel with AWS GuardDuty
configured – this alerts us to any unusual activity across all of our AWS accounts; when we receive an alert, a quick @person
notification and a discussion is started, usually with resolution to the alert within minutes.
Slack allows team members to join and leave the channels as they see fit – we can triage and review the alerts and invite additional team members into the discussion as things evolve, and they have the full history of the discussion to review. No longer do they need to be forwarded an extensive email thread to get involved in the conversation.
And it’s not just informational alerts – the integration with CloudWatch
provides quick and easy visualisations of your Alarms (including recent usage graphs).
The best thing is that you can try it for yourself quickly and easily. You’ll find a lot of different ways that the new AWS ChatBot can help radiate accurate, timely and focused information to your team.