Our first drive of AWS ChatBot

AWS recently announced ChatBot integration with Chime and Slack… let’s see how easy it is to set up and get running.

Steve Mactaggart

Recently the AWS team announced a new service, AWS ChatBot, that aims to increase the visibility of informational events for delivery teams.


(Image source)

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: events.amazonaws.com
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.