I like slack. I like automating things. I hate email. Therefore, I like Hubot. I’ve written Hubot scripts that integrate with our ticketing system and launch Skype calls to everybody in the channel. Earlier this week, I added autoscaling notifications to Slack when our servers automatically scale up or down. To go along with this, I wanted to see all the servers we’re currently running in EC2.
I found some scripts that did roughly what I wanted, but those scripts 1) Did more than I wanted and 2) didn’t have the formatting I wanted for the ls command and 3) didn’t filter in the way I wanted. Based on yoheimuta’s scripts I created a new npm package, hubot-ec2, that just lists instances.
Installation is straight forward in your hubot instance:
npm install --save hubot-ec2 npm install
After installing, set 3 environment variables
HUBOT_AWS_ACCESS_KEY_ID="ACCESS_KEY" HUBOT_AWS_SECRET_ACCESS_KEY="SECRET_ACCESS_KEY" HUBOT_AWS_REGION="us-east-1"
The keys used should be a user with the IAM Policy AmazonEC2ReadOnlyAccess.
Once thats all set, deploy your bot and you’ve got a new command:
hubot ec2 ls
You can filter by instance name:
hubot ec2 ls i-abcd1234
or by tag name:
hubot ec2 ls production-*
It will look something like this when its all wired up:
Do you use hubot and slack? What have you done to make it awesome?