Building a Bot with AWS Lex, Lambda, and Rubrik

Back in 2017, I was published in a tongue-in-cheek post & video that showcased Roxie, an intelligent personal assistant that harnessed AWS Lex, AWS Lambda, and Rubrik’s Cloud Data Management APIs. It was written by Manjunath Chinni – who is a super groovy engineer at Rubrik – as part of our 2017 annual internal company hackathon challenge. At the time, AWS Lex was a bit more rudimentary in nature and the options for AWS Lambda were also reduce in scope. I’ve included the teaser video below for fun. 🙂

The buzz about this project was palpable. Lots of folks wanted to get their hands on the code and set up a Roxie of their own. Unfortunately, that never did happen at the time for a myriad of reasons. However, with the launch of Rubrik Build – an open source community to make our APIs as consumable, friendly, and collaborative as possible – Manjunath and I were on a mission to make sure Roxie saw the light of day as an open source project that anyone could check out and tinker with.

How It Works

At a high level, Roxie uses AWS Lambda to query the Rubrik APIs for answers to a handful of common questions. When I ask for the cluster status, for example, a Lambda function fires off a chunk of Python code to see the status of all nodes within the target cluster. If all node values return as “OK” (meaning no issues), then the code returns a happy statement back to me: Your cluster is doing awesome!

A Slack conversation with Roxie

All of this is glued together with AWS Lex, a chat bot service that uses the idea of utterances (what phrases to listen for) and intents (what to do when that phrase is found) to control the workflow between user and code. It really does most of the heavy lifting and can be plugged directly into a phone application or chat application such as Slack.

One of the most interesting things about this project is the lack of setting up any infrastructure. Even the Rubrik APIs could be hosted elsewhere (cloud cluster, Polaris, etc.) instead of an on-premises cluster. The locality doesn’t matter. Once I understood what Manjunath had originally configured, we were able to tackle the setup in a few hours and add a handful of new intents to Lex. You can view all of the code directly in GitHub here.

Getting Started

If you’re interested in getting your hands dirty with some neat AWS services, Python code, Rubrik’s APIs, or some combination of these items, here is the way forward:

  1. Check out the Getting Started video to see a 6 minute introduction.
  2. Read the Quick Start Guide and follow along in your environment. Send over a pull request if you find anything wrong. 🙂
  3. Profit?