How to setup CNAME for Amazon S3 at Namecheap

vinny picture vinny · Jul 15, 2012 · Viewed 11.1k times · Source

I am using amazon S3 to host one of my static sites and wanted to link it to my domain name (domainname.co.uk). So I went into namecheap account-all host records and did something like this,

Screenshot of Namecheap control panel

However, It still doesnt work and throws 404 when I go the website url. BTW, under www option, am using my S3 url like this, conxxxxxxxxxxx.co.uk.s3-website-eu-west-1.amazonaws.com..

Notice the dot in the end, which is automatically added by Namecheap whenever I try to save, even without the dot. I am not sure if that's causing the issue but it just doesn't work for me.

Going directly to my AWS URL works fine, which implies that something is wrong with my CNAME setup.

Anyone know what am doing wrong here? Namecheap support had absolutely no clue either.

Answer

Moshe Katz picture Moshe Katz · Mar 12, 2013

You can only use custom CNAMEs for Amazon S3 if the bucket name matches the CNAME.

For example, if your bucket is named:

files.example.com

and is therefore accessible by default at:

files.example.com.s3-website-us-east-1.amazonaws.com.

A CNAME from files.example.com to the full bucket domain name will allow you to use your custom domain.

However, if your bucket name is not exactly the same as the CNAME you are trying to define, it will not work. In your screenshot, you are trying to use www.... as your CNAME, but the (redacted) bucket name does not contain www.. Note that "exactly" includes case-sensitivity; your bucket name must be all lowercase for a CNAME to work.

The full documentation of this feature is here: http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingCustomURLs


If you want/need multiple CNAMEs, and/or a CNAME that does not match the bucket name, Amazon CloudFront allows you to specify arbitrary CNAMEs for a deployment.