访问 CloudFront Amazon S3 静态网站中的页面时拒绝访问

Access Denied when accessing a page in a CloudFront Amazon S3 static website

我已经将一个 Angular 静态网站部署到 Amazon S3 并为其使用了 Cloudfront。当我访问默认页面 myurl.com/ 时,一切正常,我可以浏览页面。但是,如果我直接转到某个页面 myurl.com/posts,例如,我会 拒绝访问 与云端。如果我使用 amazon s3 网站端点执行此操作,我会收到 404 响应。

S3

云端

documentation 指出 CloudFront 将因多种原因返回 403。其中一项决议是 The requested objects must exist in the bucket..

当您尝试访问一个不存在的对象时,CloudFront 可能会将其变成您收到的 403。

您应该尝试访问仅存在的密钥,并配置您的 s3 端点以在页面不存在时使用 error document

在我的例子中,我设置了一个默认的根对象并且一切正常,在等待大约 10 分钟后设置更改同步。 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html

使用 CloudFront 控制台指定默认根对象:

登录 AWS 管理控制台并在 https://console.aws.amazon.com/cloudfront/ 打开 Amazon CloudFront 控制台。

在顶部窗格的分发列表中,select 要更新的分发。

在“分发详细信息”窗格中的“常规”选项卡上,单击“编辑”。

在“编辑分布”对话框的“默认根对象”字段中,输入默认根对象的文件名。

仅输入对象名称,例如 index.html。不要在对象名称前添加/。

要保存更改,请单击“是,编辑”。