Amazon S3: Static Web Sites: Custom Domain or Subdomain

Amazon S3DnsSubdomainHosting

Amazon S3 Problem Overview


Amazon.com just announced that one can host static web sites in a S3 bucket. I went to their setup page at http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?WebsiteHosting.html and created a bucket for my static web site, and it worked fine. I have an URL of the form http://[my bucket name].s3-website-us-east-1.amazonaws.com/.

However, I would like to point a subdomain that I own (e.g. static.mydomain.com) to my static web site at Amazon S3. Has anybody figured out how to do that?

I appreciate any help you can give me.

Amazon S3 Solutions


Solution 1 - Amazon S3

It turns out that to make it work, you cannot just map any arbitrary subdomain to any arbitrary bucket. The fully qualified subdomain name must be the same as the S3 bucket name.

  1. Suppose the name of your site is static.mydomain.com. Then you need to create a S3 bucket with that same name, named static.mydomain.com.
  2. Once you configure that bucket as a S3 static web site, it will have a URL assigned to it that looks something like http://static.mydomain.com.s3-website-us-east-1.amazonaws.com.
  3. Go to your domain host and map your subdomain to the URL from step 2. In enom.com, that meant mapping the host "static" to the address "static.mydomain.com.s3-website-us-east-1.amazonaws.com" as a CNAME record.

Thanks to Uriah and David for suggestions. I eventually got my answer at an Amazon AWS forum.

Solution 2 - Amazon S3

Make sure that you follow the S3 DNS bucket naming conventions when creating your bucket.

Then:

  1. Enable S3 Website support for the bucket using the AWS Management Console at Properties --> Website

  2. Make sure the files in the bucket have public read permissions

  3. Try the website using the endpoint listed in the Management Console

  4. Setup your CNAME using the listed endpoint (e.g. www.example.com CNAME www.example.com.s3-website-us-east-1.amazonaws.com)

Solution 3 - Amazon S3

  1. Create a hosted zone say mydomain.com. You can use a web based UI DNS30.
  2. Now create a CNAME entry for this hosted zone.
  3. Add a resource record with following detail Name as "mydomain.com" Type as "CNAME" Value as "mydomain.com.s3.amazonaws.com" TTl as "on your required configuration"

Hope this will also work for static.mydomain.com

Regards-

Udit

Solution 4 - Amazon S3

Solution 5 - Amazon S3

How about using a DNS service, like the Route 53 that Amazon provides. Set it up with a CNAME from your sub domain to the public bucket URL. Of course, if your domain company provide CNAME configuration, that could work directly.

Solution 6 - Amazon S3

Update 2019 : AWS custom subdomain hosting in S3

As of today following steps worked for me to have a working subdomain for AWS S3 hosted static website:

  1. Create a bucket with subdomain name. In this example www.**subtest**.mysite.com

aws bucket

Note: Make sure on 'Permission' tab of bucket: -Block public access (bucket settings) -Access Control List & -Bucket policy are appropriately set to make sure bucket is public. ( Assuming you already did this for your root domain bucket, those settings can be mirrored on this subdomain bucket)

AWS bucket permissions

  1. Upload the index.html file in the bucket

index file in s3 bucket

  1. Create a CNAME record with your domain provider CNAME record in namecheap

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJay GodseView Question on Stackoverflow
Solution 1 - Amazon S3Jay GodseView Answer on Stackoverflow
Solution 2 - Amazon S3Uriah CarpenterView Answer on Stackoverflow
Solution 3 - Amazon S3uditView Answer on Stackoverflow
Solution 4 - Amazon S3luissquallView Answer on Stackoverflow
Solution 5 - Amazon S3Frodo BagginsView Answer on Stackoverflow
Solution 6 - Amazon S3zennniView Answer on Stackoverflow