Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting index document on S3 website with custom domain

I'm trying to set an index document for my S3 hosted website. I've

  1. Enabled website hosting on the bucket
  2. Set the index document to "index.html"
  3. Uploaded an index.html file
  4. Made the index.html file public.

The index document works when navigating to the root of the bucket using the raw AWS url, but does not work when using a custom domain:

http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com/index.html (works)
http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com (works)
http://static.appgrinders.com/index.html (works)
http://static.appgrinders.com (Access denied - 403 error)

like image 881
Yarin Avatar asked Dec 23 '22 17:12

Yarin


1 Answers

Your DNS isn't configured correctly.

You are pointing to one of the REST endpoints (CNAME s3.amazonaws.com), which doesn't support index documents. You need the DNS to point to the web site hosting endpoint, in this case it's CNAME static.appgrinders.com.s3-website.us-east-1.amazonaws.com. This endpoint is visible in the S3 console.

This change will fix your issue.

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html

The giveaway of the nature of the misconfiguration (before I confirmed in DNS) was the XML error. The web site hosting endpoints don't return XML errors -- they return the same information, but it's wrapped in some simple HTML, instead of XML.

Note, however, that you will still need to use CloudFront if you want your site to be accessible with SSL. Custom domains in S3 require CloudFront's help for SSL support. The web site hosting endpoints, unlike the REST endpoints, don't listen on port 443 at all.

In the CloudFront configuration, you'll need to avoid the same error -- don't select the bucket name from the dropdown list, since this will send requests to the REST endpoint. You'll need to supply the web site endpoint hostname as the origin.

like image 106
Michael - sqlbot Avatar answered Jan 14 '23 08:01

Michael - sqlbot