A few months ago, I noticed I was approaching my bandwidth limits on my hosting account. Switching hosting providers is a pain, so I decided to move some high-bandwidth graphics to Amazon S3, where the bandwidth is cheap and unlimited. All was well until I realized that Google was returning search results pointing to my bucket on s3.amazonaws.com instead of carltonbale.com. Luckily, AmazonAWS has a work-around. You can use your own domain name in an Amazon S3 bucket. Here are the instructions on how to do it, from beginning to end.
Introductory Steps for new Amazon S3 Users:
- First of all, obviously, you need your own domain name and your own Amazon S3 account
- Secondly, you need a way to create/manage Amazon S3 buckets, so you’ll need to install a client on your PC.
- I currently use the the CyberDuck file transfer client. I’ve also used the used the paid app Bucket Explorer and the S3 Organizer add-on for Mozilla Firefox. There are many options available.
- Install your the file transfer application of choice and configure it by entering your AmazonAWS Access Key and Secret Key
- These are available by going to http://aws.amazon.com, mousing-over the “Your Web Services Account” in the upper right-hand corner, and selecting “AWS Access Identifiers“
How to Alias your Subdomain to an Amazon S3 Bucket:
- Identify the exact domain name you want to forward to Amazon S3. S3 is not a web server, so I would not recommend forwarding your entire domain there, but rather a sub-domain. The sub-domain I’m going to use is the actual one I setup: s3.carltonbale.com
- Create a new “bucket” (a.k.a. folder) by clicking the “create folder/bucket” icon. Name the bucket exactly what your sub-domain name is.
- Example bucket name: s3.carltonbale.com
- Note: you must use a unique bucket name; you won’t be able to create bucket if the name is already being used by someone else, even if in another separate account.
- Now comes the tricky part: modifying your DNS server settings. The procedures on how to do this vary by host and software system, but are the general steps:
- Logon to your web host control panel and select “Manage DNS Server Settings” or similar
- Create a new CNAME entry for your domain. For my example of s3.carltonbale.com, the entry was:
- Name: s3
- Type: CNAME
- Value: s3.amazonaws.com.
- (If you are an European users, use s3-external-3.amazonaws.com. instead)
- And yes, the dot at the end of “s3.amazonaws.com.” is correct, at least for me. Look at your other entries to figure out what your should enter.
- Now comes the hardest part: waiting. It took about 2 hours for my subdomain to be recognized by AmazonAWS.
- Open the subdomain name in your browser. You should now be able to access your files through any of 3 urls:
- subdomain.domain.com (as long as the full bucket name is the same as the full subdomain name i.e. mysubdomain.mydomain.com, it is not necessary to specify the bucket name again at the end of the url)
- your_bucket_name.s3.amazonaws.com (i.e. mysubdomain.mydomain.com.s3.amazonaws.com)
- s3.amazonaws.com/your_bucket_name (i.e. s3.amazonaws.com/mysubdomain.mydomain.com)
- You’ll need to set permissions on your bucket and the files within using your favorite bucket management tool. I recommend setting the bucket permission to “full control by owner” only and setting the permissions of the files within the bucket to “full control by owner, read access for everyone”. This will prevent people from being able to browse/list the files in your bucket.
- If you don’t want Google (or Google Images) to index the files in your subdomain, create a file named robots.txt containing the following and copy it into your bucket:
That’s it, my start-to-finish guide on how to use your own domain name with Amazon S3. If I missed something or if something isn’t clear, let me know in the comments and I’ll fix it.