route 53

At work, we created an internal API for vending sub-domains of a particular, somewhat popular domain we own. The project is written in Go and wraps the AWS Route 53 API to manage DNS records. We decided to use github.com/mitchellh/goamz, which is has pretty well-rounded implementations of most of the AWS APIs. When using goamz/route53, things were working perfectly when aws.GetAuth was passed credentials directly–i.e., the things I normally set as AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.

awsenv

TL;DR I have this cool awsenv function. Check it out Full disclosure: the awsenv function in this post is based on a zsh script my co-worker phemmer wrote. I ported it to bash. Why? I deal with a few different AWS accounts in the course of a day. We use separate accounts at work for our development and production deploys, and I also have a personal account to kick around. AWS has a nice suite of command-line utilities, but there’s one aspect that I don’t agree with: credential management.

aws tab complete

I would go insane if I did’t wire-up tab completion for the aws CLI. There are just too many commands to remember. To do that, I dropped this line in my .awsrc: complete -C aws_completer aws So now when I type aws <tab>, I get a list of possible commands, like this: ~ $ aws <tab> autoscaling ec2 rds cloudformation ecs redshift cloudhsm elasticache route53 cloudsearch elasticbeanstalk route53domains cloudsearchdomain elastictranscoder

~/.dockerrc

We use Docker at work as part of our deployment strategy. Since we ship dockerized apps, Docker is part of our development environment. I develop in OS X, so I use Boot2Docker. One of the original core contributors to Docker, @creack, was part of our team for a while. It was a great opportunity to get familiar with Docker as a technology. He helped me put together a ~/.dockerrc file that ensures my development environment is always ready to go.