OUR FIRST DRIVE OF AWS CHATBOT

BLOG ARTICLE

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: 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.