The first, and most important question you should ask yourself before considering starting up or migrating a Drupal website onto Amazon's AWS cloud hosting platform is, "should I use AWS?" I'll discuss some of the reasons one might find it adventageous, but there is no one clear reason why everybody would want to use AWS. In truth, the pros and cons may be very different depending on your hosting and application needs.
I don't believe though, that there are some clear advantages to using a virtual cloud hosting environment like AWS. Some of these points come from our own experience with hosting Drupal website on the Amazon AWS platform, and others are generally just an acknowledgement of the differences between hosting services.
1) You need a higher performance hosting environment than the typical shared hosts.
The amount of horse power you will need behind your server (RAM, CPU) to provide the kind of performance you want will be dependent on the type of Drupal website you are operating or building. If it is basically just a blog, with a decent amount of traffic to which you only really server static pages that can be cached, then you will likely do very well on a small or limited shared host platform.
If however, you are running a fairly complex interactive Drupal site, using lots of different modules and serving dynamic pages and views to lots of logged in users, then the typical shared hosting solution might not be feasible. Typically, if using a third party company to host a website like that, most folks will get a VPS or virtual private server. This is essentially what AWS provides, but ultimately you will be in charge of it. Chances are, if you have a VPS with a hosting company, they might even be running their network on AWS!
One small caveat to this, is if you do have a simple and small blog-centric Drupal website, you could still probably run it on Amazon AWS through the use of it's micro EC2 servers. These are very affordable and are designed around intermittent, low demand traffic and server load.
2) You need more access to your server environment then most shared hosts allow.
If you're using a shared host, then you're probably familiar with the controls that many of them put in place to keep their customers from wrecking their operation. You might have limitations on your ability to SSH into the server, or to change configurations for Apache or PHP, and their might be caps on bandwidth and file storage. Of course, they might lift these limitations if you're willing to pay a higher premium for advanced level access and hosting services.
With AWS, you get direct control over your server instances. You can SSH in to adjust things from the command line, or make use of Amazon's incredibly robust graphical interface control panel. If you want, you can even create user accounts for your technical associates and allow them the ability to access your account and manage your systems on your behalf. You can choose the operating system the Amazon AWS EC2 server runs on, and even add other Linux software or packages you might need.
Granted, you don't have to take advantage of those aspects if you don't want to, you can merely set up an Amazon EC2 server using the Amazon Linux flavor of Linux and just periodically ensure the kernel is updated.
3) You want to have more granular control over the sort of infrastructure you are using.
Maybe you need more resources devoted to CPU power, or RAM, or maybe you want a separate MySQL server to help manage database loading for your Drupal website. The typical VPS packages are usually geared towards generic needs, but your needs might not be ordinary. Your needs might also change over time, and trying to add or remove hosting resources might prove to be difficult or not even possible. If you have extra resources that you don't need, you'll probably still have to pay for them.
Amazon says over and over, in lots of places, that with AWS you only pay for what you use. Need more servers? Clone existing ones and bring them online with a few button clicks. Don't need them anymore? Shut them off just as easily. On-demand virtual hosting, and a wide variety of services and hardware types make AWS incredibly convenient for somebody who wants to set up a hosting environment to well defined specifications.
4) Your project is temporary, and you don't want to devote resources to long term allocation.
If you are just wanting to test a particular setup, like maybe host your site on a different server configuration to gauge its performance and responsiveness, you probably don't want to have to allocate a whole bunch of machines and resources for a long period of time. The testing project might be over and done with in a week or so.
The convenience of AWS on-demand instances means that you can spin up a new server in a matter of minutes, and shut it down (without any further financial cost) in just as much time. Again, you pay for what you use, so there is no need to worry about paying for resources that you won't need in the future.
5) You don't want to maintain physical hardware.
Ultimately, one of the main reasons for utilizing virtual resources is to avoid having to buy and maintain physical hardware. It's OK if managing the day to day realities of a data center setup are not your strong point. Outsourcing that capacity to a company like Amazon is wise because they have a great deal of experience with taking care of data centers.
Going with virtually hosted servers is just more practical. It frees you up from dealing with mundane things like hardware swaps and cooling conditions, to being able to focus on your core competency - creating Drupal websites.
* * *
Having trouble customizing your Drupal setup?
If you're considering using Amazon AWS to host your Drupal website, but haven't worked with it before, you might want to check out our other tutorials and blog posts on working with Amazon AWS. Specifically, review our tutorial on running a Drupal website on Amazon Web Services.