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


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


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.