Brian Downs


Software Engineer, Open Source Advocate, Outdoor Enthusiast


Getting Reaquainted with AWS

I made a job change almost a year ago that took me away from the world of Amazon Web Services (AWS). It was a welcomed changed but not because of AWS. The team I was a member of labored over the decision of what cloud platform to put our telephont stack on for a number of months before settling on AWS. It was the best decision would made and still is to this day. The experience vetting other cloud providers gave me a much greater appreciation for what Amazon is doing with theirs.

Not having been logged into my personal account for almost a year now, it had gotten messed up for some reason. I don’t know if it was the amount of time dormant or something else but I needed support to re-enable the account. They quickly took care of the issue and I spent the past weekend setting up services like EC2 instances, MySQL and PostgreSQL DB’s in RDS, queues in SQS, and looking at the improvements to the services I was familiar with and those that were new in the past year.

New and Interesting Services

One of the services I found intersting and could be new to AWS but defintiely new to me is AWS Directory Service. This service allows a number of intriguing things. For one, you can integrate your existing, on-premise Microsoft Active Directory with AWS Directory server. The second is to build your own Directory Service in the cloud. Anything that has the capability of speaking LDAP can now authenticate against the service.

New Go SDK

Over the weekend I had noticed that AWSLabs had a complete Go SDK for all AWS services. The SDK isn’t finished yet and they say on their GitHub page that there will more than likely be changes in the future before the official release but regardless, this is great news.

Previous to using this package I had tried a number of other packages but the one I messed around with most often was Mitchell Hashimoto’s goamz

Using the example from the GitHub README, I tested out some basic features and found all working well and fast. I’ll be including more examples in the future in either this post or will dedicate individual post for examples with this package.

package main

import (
	"fmt"
	"log"

	"github.com/awslabs/aws-sdk-go/aws"
	"github.com/awslabs/aws-sdk-go/gen/ec2"
)

var region = "us-west-2"

func main() {
	creds := aws.Creds(os.Getenv("AWS_ACCESS_KEY"), os.Getenv("AWS_SECRET_KEY"), "")
	cli := ec2.New(creds, region, nil)
	resp, err := cli.DescribeInstances(nil)
	if err != nil {
		log.Fatalln(err)
	}
	for i, r := range desc.Reservations {
		fmt.Printf("%2d: %v - %v - %v\n", i+1,
			*r.Instances[i].InstanceID,
			*r.Instances[i].Tags[0].Value,
			*r.Instances[i].State.Name,
		)
	}
}

Python Boto

My primary level of experience with the AWS API came from writing Python code with Boto for insight into monitoring, provisioning, and general administration. Jeremy Maldonado and I built out a Flask application with REST API that allowed us a quicker and simpler view into our environment and thanks to Twtitter Bootstrap, was mobile ready too. Jeremy also put together a nice set of tools for working with groups of instances and also DNS.

I put a couple things together using Boto but nothing of note. More of just a reminder.

AWS and Go Meetup Talk

I noticed that the Go Phoenix-Chandler Programmers meetup was scheduled for Thursday, Feruary 5th had no second talk scheduled so I figured I’d volunteer a talk on AWS and Go. Turned out to be a great idea personally to get to know the AWSLabs SDK even better. For me, there’s nothing like a deadline and a set of expecations to really drive learning. The slides for the talk can be viewed here.

At the end of the day…

AWS is bad ass. …As it’s always been. Simple as that. With that said, there are some caveats. In environments that are extremely large, cost goes up significantly but you still find yourself not spending as much as you might needing to keep a staff around to support the system that would otherwise be running in-house. The other alternatives doen’t have the feature set yet though are catching up extremely fast, most notably [OPenStack(http://www.openstack.org), which has a special place in my heart since I work on its’ Neutron component.