AWS S3 is a simple storage service for static content hosting. Most of our website is largely static (atleast non transactional websites).
DNS Name and access to DNS server.
You need to have a Domain Name (GoDaddy or likes) for your domain and have access to Zone records. I am using AWS Route 53 service. This part will vary depending upon which DNS server you use.
Set up an aws account (You need a valid credit card and get 1 year of free tire for 1st year).
Create S3 Bucket
I want to host my site http://www.awanitech.com. I need to create a S3 Bucket. I have created a bucket by name www.awanitech.com. Supose this bucket is not available for some reason you can use any arbitary bucket name foobar-site
Create AIM Access keys so that content can be uploaded using s3cmd or Bucket Explorer.
Upload required static website to S3 Bucket using s3cmd or anyt other tool / REST APIS.
Create Cloud front Distribution
Create a cloud front distribution for corresponding S3 bucket and ensure CNAMES are added in Cloudfront configuration. Accept All defaults while creating distribution. This will approximately take 30 minutes for completion.
In the same window you will get a DNS name for your distribution like xxxyyy.cloudfront.net
Go to your DNS Server and add A Record alias your domain name (awanitech.com in my case) to xxxyyy.cloudfront.net This propagation may take about one hour.
Now your website is superfast as well as very low cost about $1 / month.
Since site is served using Cloudfront and not directly from S3, any update made to object on S3 need to be invalidated (refreshed) or cache need to expired for specific distribution.