Amazon Web Services has an extremely rich offering, one they add to constantly. They have an elastic cloud product (EC2: on demand, pay per hour virtual servers of all sizes), permanent storage (EBS), distribution storage (S3), load balancers, relational databases services, map reduce and many others. That’s a lot of concepts and products to deal with and the barrier to entry feels a little steep at times.
So you’d think they’d offer a nice clean, simple, web based administrative console. Well, they do. Kinda. But not really. Huh.
Amazon started off by releasing an extensive API (SOAP based) to expose the functionality of each of their products (EC2 has one, RDS has one, …). There are many of those APIs (at least one per product), they’re very well documented and allow you to do everything you need. But of course, you can’t use an API directly, you have to program against it, build your own tools.
With a strong API in place, Amazon built a set of command line tools that maps to all of those APIs. EC2 has one (two really if you include the Amazon Machine Image or AMI API), RDS has one, you get the idea… From what I can tell, they’re pretty much a one to one mapping from the API, since it’s built on top of it. Command Line tools are great if you’re into a CLI (which I find myself to be occasionally into); they allow you to use fairly complex scripting to automate your cloud creation, snapshot (backup) creation, launching and terminating instances. It’s quite practical but there are a lot of commands to know and their syntax is often a little complex.
Setting up the environment for each of those product command line toolbox is fairly straightforward:
- Set up your JAVA_HOME (which by the way is
export JAVA_HOME=$(/usr/libexec/java_home) on Snow Leopard)
- Set up the ENV variable that points to your command line toolbox directory (different for each toolbox/product)
- Set up ENV variables for private/public keys or Amazon ID/Secret depending on the toolbox
While the command line tools give you complete control over your Amazon Web Services, they’re a little annoying to use, you have to individually set up each toolbox (RDS, EC2, EC2/AMI, …), they don’t auto-update (Amazon doesn’t even really have a mechanism to let you know a new version of the tools have landed) and the documentation is not always up to date. Still, pretty powerful.
First there was an API, then there were tools. And so there are.
First of the AWS Management Console. It’s fairly simple, well made and straightforward. But it lacks some functionality. It allows you to manage most of Map Reduce, CoudFront and EC2 (though lacks the tools to create an AMI image from a linux EC2 server, upload it to S3 and register it as an available custom AMI owned by yourself – something you have to do with the Command Line tools) but has no visibility on S3, RDS and a few other products. It’s not very powerful but will generally suffice if you’ve already setup all your AMIs (or are using already made ones exclusively) and have no use for the products it doesn’t cover. It’s not for the power user and at this point, I think we’re all power users, aren’t we?
Next I’ll cover ElastiFox (and S3 Organizer) and RightScale. TTFN.