[Source: http://geekswithblogs.net/EltonStoneman]

EC2 Overview

Elastic Cloud Compute (EC2) from Amazon Web Services (AWS) lets you rent a virtual PC in the cloud. You have full admin access to the machine, and the service supports load balancing across instances and DNS lookups. The service is perfect for setting up short-term test rigs, and scalable production apps alike.

Windows Server-based EC2 instances use Elastic Block Storage (EBS) for their C drives, so any changes made on disk are persistent when the instance is stopped. AWS have a suite of base Windows images, so you can go from zero to logged in as Administrator in under 30 minutes.

You’re charged for the amount of computing time you use, so there’s a use-case for scenarios where multiple users need occasional access to a shared computer at different times. You can set up an instance, install whatever software you need, and create user accounts. You can start the instance when you need to use it, Remote Desktop into the box, use the shared resources, log out and stop the instance. This sort of usage is very cost-effective – at 2010 prices, something under %u00a33 per month to rent the storage, then under 10 pence per hour for a small compute instance.

EC2 Instance Management

Stopping and starting instances is simple with the AWS Management Console:

But that gives you access to all instances in your account, requires a technical understanding of AWS and doesn’t have an option to stop instances after a certain time. Which is where my EC2 Launcher on github comes in:

The tool is configured for a single EC2 instance and hides away all the AWS internals. When you click Start it launches the configured instance, retrieves the public DNS name and starts an RDP session. When you’re finished click Stop, or use the option to stop the PC automatically after a set time.

Using EC2 Launcher

EC2 Launcher requires Microsoft’s .NET Framework 4.0.

Download the Windows Installer MSI from github here: EC2 Launcher v1.0.0. Run the installer and then launch the app from All Programs/Sixeyed/EC2 Launcher.

When you first run the app, it needs to be configured with the ID of the instance you want to launch, and with the AWS Access Identifiers (passphrases which are specific to your AWS account – you’ll need to set them up here). Click Configure to add the details:

The keys are encrypted and saved in the file Sixeyed.EC2Launcher.exe.config but the encryption technique is very basic, so don’t rely on it. The other config values aren’t encrypted so you can change them. The main ones are:

  • PCName – to give the PC a friendly name in the launcher
  • ServiceUrl – the location for the AWS Availability Zone where your instance is hosted. This needs to be correct for the region where your instance lives, otherwise it won’t be found – e.g. the default https://eu-west-1.ec2.amazonaws.com is for instances hosted in EU West.

Worth noting that when you start an instance it sometimes takes a minute or two for it to be ready to accept RDP requests, so if you have a failure message, you can retry connection with the “Launch Remote Desktop” button.