I agree with all of the commenters who believe that Amazon’s Elastic Compute Cloud (the name’s a bit much), AKA EC2, is a Big Deal. The very idea of provisioning a server with expandable storage in the cloud for almost an order of magnitude less cash than it would cost to obtain a dedicated server – let alone run your own – is impressive enough on its own. Pair that with some of the available web services and it’s that much more interesting.
Unfortunately, I’m discovering that like Plato’s cave, the idea is a bit more ideal than the real world. The signup process was pretty straightforward, although the welcome emails were multiple and less than specific about next steps. But I found myself confused pretty quickly, admittedly because I want to do something a little different.
Maybe it’s just me, but it seems as if the information architecture – to use a much abused word – could use a little work. More than a few times I found myself lost amidst an AWS subsite, with no idea how I got to where I’d arrive. The process of receiving credentials was easy, but difficult to find. Things got bad enough that I stopped closing tabs in Firefox, for fear of not being able to find the previous page again – and soon I had about 15 tabs open for just EC2. So the site, IMO, could use a little love.
As for the getting started process itself, step 1 in the Amazon EC2 Getting Started Guide reads:
Create an Amazon Machine Image (AMI) containing all your software, including your operating system and associated configuration settings, applications, libraries, etc. Think of this as zipping up the contents of your hard drive. We provide all the necessary tools to create and package your AMI.
Based on that, I thought it would relatively trivial to bundle up a local instance of Ubuntu and ship it of to EC2 where it would magically be reinstantiated (I didn’t want to use the stock Fedora instances).
My first hint that this was not the case was the Table of Contents, which proceed along these lines
- Setting up an Account
- Setting up the Tools
- Running an Instance
- Creating an Image
Maybe you already see the problem? The intro says that I’m supposed to start by “creating” an image, but in the actual guide that comes after the “Running an Instance” section. What am I running, if I haven’t created my image yet?
At this point, I turned to my good friend Google, who turned up a thread started by one Doug Winter who was kind enough to explain in great detail the non-trivial process for creating an EC2 image from Dapper (the current production rev of Ubuntu). It’s worth noting as well that the thread features active participation from the Amazon Web Services guys, so thumbs up to Amazon for that.
After successfully building an Ubuntu image, it was time to bundle it using the EC2 tools. No problem, I thought. Apart from a minor Java version conflict, the first set of tools could not have installed any more simply: unzip the file, make sure they know where Java is, and for the sake of simplicity export the path information. And for the most part, the instructions were very specific and detailed here. There are minor things that bugged me, such as the following command being displayed as a single line rather than the two separate commands it actually is (something I would have fixed, were the documentation user editable):
$ export EC2_PRIVATE_KEY=~/.ec2/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem $ export EC2_CERT=~/.ec2/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
But candidly, that’s just nitpicking. The installation instructions for zipped tools are pretty good.
The instructions for the toolkit containing the ec2-bundle-image are less so, however. First, it ships as an RPM rather than ZIP file, which is fine if you’re on Fedora or RHEL or SuSE, but less so if you’re on a Debian derivative (Ubuntu) as I am. Second, I’m not convinced the file is complete, despite multiple downloads. The file weighs in at only 67 KB, and won’t open as an archive as RPMs have for me in the past. I’ve tried downloading it directly and wget-ing the file from three machines – same deal. Either way, no luck installing it yet. Alien loaded it “in theory,” but the ec2-bundle-image command is kicking out for me in a weird way.
At this point, I’m undecided as to how to proceed. I suppose I can figure out what’s wrong with that RPM or – more likely – my installation of that RPM, but the easier path is just going with one of the stock Fedora images. That means maintaining not one, but three separate Linux distributions (Fedora, Gentoo, and Ubuntu) and I’m not terribly keen on doing that.
In spite of the above, I’m still a believer in EC2, and I think Amazon’s got a potentially significant business here if only because it’s more accessible and familiar than the other “cloud” approaches I’ve seen before (Sun’s network.com or 3Tera). If they really want it to take off though, I think some focus on simplifying the process would not go amiss.
Kimbro Staken says:
October 5, 2006 at 10:26 am
Yeah, it’s unfortunate that they’ve packaged the tools as an RPM, however I was able to pull the RPM apart and install the tools manually on an older Redhat system that didn’t satisfy the dependancies. It’s interesting to see that the tools are written in Ruby. I haven’t tried them on Ubuntu yet.
stephen o'grady says:
October 8, 2006 at 9:19 pm
Kimbro: interesting. maybe the RPM did get installed, b/c the error i got was a Ruby one. hmmm…
Scott Becker says:
October 19, 2006 at 1:55 pm
Pretty sure the Amazon EC2 tools are written in Java, not Ruby.
ls -la tools/lib/*
yields a list of 20 or so .jar files. No .rb files to be found. Maybe you’re thinking of the Ruby API (one of many) for Amazon S3…
Kimbro Staken says:
November 27, 2006 at 1:54 pm
There are two sets of EC2 tools. Those used to manage EC2 instances and that run outside of the virtual machine are written in Java. Those that run inside a machine to bundle it for deployment are written in Ruby.
Eric Hammond says:
December 29, 2007 at 12:54 pm
If you’re still (over a year later?) looking for how to build an Ubuntu AMI for Amazon EC2, I’ve compiled the community’s experience into a script which is available on this page which describes an Ubuntu 7.10 Gutsy base install AMI: