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

时间:2020-09-19 16:15:52

标签: amazon-web-services amazon-s3 amazon-cloudfront

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

S3

enter image description here

Cloudfront

enter image description here

2 个答案:

答案 0 :(得分:1)

documentation指出出于多种原因,CloudFront中将返回403。分辨率之一是The requested objects must exist in the bucket.

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

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

答案 1 :(得分:0)

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

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

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

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

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

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

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

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