12

I've set up an example static website on Amazon S3 and I added a custom folder to it with file inside: custom-folder/index.html, but I'm getting Access Denied error when trying to access url /custom-folder.

The index document is configured to be index.html, so S3 should serve index.html when I'm accessing /custom-folder url, but it doesn't work.

How can I fix this?

Oleksandr.Bezhan
  • 2,028
  • 3
  • 22
  • 31
  • what URL are you using to access the bucket? is it similar to: `http://examplebucket.s3-website-us-west-2.amazonaws.com/custom-folder/` – Eytan Avisror Dec 31 '17 at 10:03
  • I use this URL: `https://s3.amazonaws.com/aws-website-myexamplewebsite/custom-folder` It's a default URL that amazon set up for me when I chose "example static website" – Oleksandr.Bezhan Dec 31 '17 at 10:16

2 Answers2

30

It seems you are using the wrong URL to access the bucket. For example, when you enable to static website hosting feature in S3 (us-west-2 in this example), you are given a URL with the following format:

Endpoint : http://bucket-name.s3-website-us-west-2.amazonaws.com

You can see your endpoint by going to S3 > Click on your bucket > Bucket Properties > Static website hosting > should reveal your endpoint.

enter image description here

Eytan Avisror
  • 2,860
  • 19
  • 26
  • 1
    Yes! It helped. Thank you a lot Eytan! – Oleksandr.Bezhan Dec 31 '17 at 11:57
  • 1
    you saved my day – Jeff Mar 31 '18 at 14:56
  • A little more explanation on this would be nice - the problem is that it's really easy to accidentally use the s3 REST API endpoint which will cause these access denied issues on static site sub pages (the REST s3 endpoint for a bucket is not meant to host a site). Additional reading: https://aws.amazon.com/premiumsupport/knowledge-center/s3-website-cloudfront-error-403/ - You gave the correct solution, it's just nice to know more about the "why". – J.Wolfe Feb 20 '21 at 16:05
8

In case it helps anyone else, I was using a AWS Cloudfront Distribution on top of an S3 bucket.

The solution to the "Access Denied" issue for me was to perform the / to /index.html redirect in Cloudfront (rather than S3).

This is achieved by setting the "Default Root Object" to index.html on the AWS Cloudfront Distribution (and disabling "Static website hosting" entirely in S3).

Oliver Pearmain
  • 19,885
  • 13
  • 86
  • 90