首页 > 解决方案 > AWS Cloudfront 无法访问使用 CodeBuild 部署的 S3 文件

问题描述

我正在开发一个使用 AWS Codebuild 部署的静态网站,托管在 S3 存储桶中,并通过 Cloudfront 访问。除了从 Cloudfront 访问之外,一切似乎都有效。从 Cloudfront,我可以访问我手动上传的文件,并且使用存储桶 URL,我可以访问所有文件。查看各个文件设置/权限,无论它们是手动上传还是通过 Codebuild 部署,它们看起来都是一样的。我尝试过使 Cloudfront 缓存无效,并通过 Codebuild 重新部署了几次。


附加信息:

我在设置 Cloudfront 分发时提供了 S3 存储桶作为来源。

通过 Cloudfront 访问会出现以下错误:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>0211CBE618946F</RequestId>
<HostId>
7sRZhaJS4x2W7Iaeo4y8KAjvsOJcNWh3PxCdgnhXPE22oyp1RxZhwpjrqbsWapsUSaqBK+jqE=
</HostId>
</Error>

我还应该检查什么?

标签: amazon-web-servicesamazon-s3amazon-cloudfrontaws-codebuild

解决方案


在此处输入图像描述

出于某种原因,添加默认根对象解决了这个问题。

FWIW,我最初将值更改为dist/index.html,这允许我通过 Cloudfront URL 访问已部署的存储桶内容,但需要index.html后缀。一旦我将其更改为index.html,一切正常。


推荐阅读