I'm trying to set an index document for my S3 hosted website. I've
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)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With