Amazon Web Services: tools

Second entry in the series: Amazon Web Services: an introduction

Amazon provides some tools to interact with its Web Services, and many others exist provided by 3rd parties. Here is my selection

S3 tools

JetS3t

JetS3t is a free, open-source Java toolkit and application suite for the Amazon Simple Storage Service (Amazon S3). The toolkit provides Java programmers with a powerful yet simple API for interacting with S3 and managing data stored there, while the applications allow anyone to easily manage and interact with their S3 accounts.

JetS3t is composed by a java library to access S3, a command line tool to synchronize local folders to S3 (s3sync) and a GUI to upload/download files (cockpit)

EC2 tools

ElasticFox

A graphical interface to Amazon EC2 web service as a Firefox addOn, provided by Amazon

You can do pretty much everything with it, register instances, start/stop them, manage access keys, security groups, elastic ips,
EBS volumes,…

Amazon Management Console

A web based interface to Amazon EC2 launched recently by Amazon. Same functionality as ElasticFox

Amazon EC2 API tools

The command line version, you won’t need it if using ElasticFox, unless the command line is your thing

Amazon EC2 AMI tools

The Amazon EC2 AMI Tools are command-line utilities to help bundle an Amazon Machine Image (AMI), create an AMI from an existing machine or installed volume, and upload a bundled AMI to Amazon S3.

Even using ElasticFox you’ll need it in your running instances to create new images from them (only for *nix, Windows images are bundled from Elasticfox or other GUI)

EC2 services

Morph

Morph AppSpace allows you to run webapps with no effort. You provide them with a war (for Java) or your Rails, Grails or PHP app and they’ll run it for you in the cloud, with a DB (postgres or mysql) with warm backups, a webserver, continuosly monitored and a two machine cluster for load balancing and high availability, all from 1$ a day. There’s a development version to try it for free.

How it works for Java apps? You just need to access your database connection pool using JNDI. They will provide you the resource name to use.

Morph AppCloud is another product that adds more flexibility, providing a web based cluster editor where you can design your cloud just by dragging and connecting the modules provided (ie. Jetty web server, mysql master, mysql slave, load balancer,…), then just click to run it.

Disclaimer: I know the guys behind Morph and have done some work for them

Rightscale

It’s a lower level service where you can interact with all the EC2 operations. You can create images, start/stop them, health montirs,… all through their web interface. You have a developer edition to try it for free

CohesiveFT

It’s more of a provisioning system where you select components and create an image (Elastic Server) to run it in EC2, VMware, and other virtualization frameworks, and with a management web interface to start/stop the components, monitor the services running,…

They have a list of components and templates, mostly open source projects, and you can add your own too.

Amazon Web Services: habemus Windows

This is going to be a little bit out of order with my other posts about Amazon AWS, but it’s worth doing it. Amazon has launched finally the ability to run Windows images in EC2. Microsoft Windows Server 2003 actually, from 0.125$ per hour, compared to the 0.10$ for the unix/linux instances.

The instances are accessible through Windows Remote Desktop or the open source multiplatform rdesktop client. The first time you launch an image the password is generated, but you can change it for new images you make based on that one.

A nice feature that will save a lot of time is the ability of creating new Windows AMIs from the ElasticFox interface with a couple of clicks, without needing to mess with software installation in the image (more on image creation in next posts) which is way easier than the process for linux images.

You can also run Windows Server with SQL Server Standard, but watch out for the 1.10$ per hour, which makes 792$ per month that you can compare to the 6000$ processor license fee.

Previous entry: Amazon Web Services: an introduction

Next: Amazon Web Services: tools

Amazon Web Services: an introduction

This post is an introduction to Amazon Web Services, as I’ll be
writing a series of posts in the following weeks elaborating on the stuff I’ve been working on
this year.

Amazon Web Services, AWS, is a platform for infrastructure services in the cloud at very competitive prices. AWS is revolutionizing the IT services in all sorts of companies. No more
dealing with hardware, no need to have people available 24/7 to monitor
servers, no more trips to the data center, no need for the developers
to wait for days/weeks until IT can get you a specific server
platform,…

AWS is composed of

S3 is a  like a virtually infinite storage service. You can store files and pay per storage and data transfer ($0.15 per GB-month)

EC2 provides a way to have a virtual server running in a matter
of minutes. It takes an AMI (Amazon Image) stored in S3 and starts it,
giving you a public address where you can ssh to and you have your
server ready. There are many publicly available images from Amazon and
third parties, with several *nix flavors CentOS, Ubuntu, OpenSolaris… and Windows images
coming this fall. There are also images with stacks already installed, mysql, apache, ruby on rails,… If you need you can customize your running server and later capture an image to launch as many instances of it as you want, and
also considering that the image provided storage is not persistent, if
your image is stopped or dies, everything changed in the server since
you started it is lost. There are three types of servers, small, large, extra large,… with different amount of space, cpu, memory,… You pay per
type of instance, time running and data transfer, starting at $0.10 per hour.

EBS is an EC2 service that allows you to attach a virtual drive to EC2 instances, with high availability and high reliability, and size up to 1TB, providing persistent storage to the instance. The drive can be backed up to S3 too. You pay $0.15 per GB-month allocated.

SQS is a simple and scalable message queue, paying for the number of messages and data transfer (1$ gives you up to 500.000 messages)

SimpleDB is a web service for running queries on structured data in real time. Haven’t tried it at all but seems suitable if you have a huge structured database and need it to scale.

Now, why should you care about cloud computing and particularly about Amazon Web Services? well if you are in one of this cases you should definitely check it out:

  • I need a server for a few hours only: with AWS you pay per hour
  • I’m running a startup and dont have the cash up front to setup a huge infrastructure (and I don’t know if the company will go under in few months): you don’t have upfront costs, just pay for the time you use it
  • I need huge storage space requirements: you can allocate TB of space
  • I run a task that needs 24 hours to complete, but could be distributed in 24+ servers and take less than 1 hour: it will cost pretty much the same to have 1 server running 24 hours than having 24 servers running 1 hour
  • I need to scale fast: you can add servers in a matter of minutes, storage space,…
  • I need high availability and geographical distribution: Amazon provides availabilty zones, so far three for EC2 in the US East coast, and two for S3, US and Europe, most likely the possibilities will grow in the future

The next post will be about the tooling that can be used to easily manage all these services.

Next entry: Amazon Web Services: habemus Windows