我有一个关于 AWS s3 和 cloudfront 的问题。 我在 s3 上托管私有页面(vue-app)的构建,并通过 cloudfront 访问它(我使用来自 cloudfront-origin 的 OAI 在 S3 存储桶中写入了权限。)。一切正常:当我调用根 url (
xxx.cloudfront.net/
) 时,我可以访问我的 web 应用程序。当我调用这个 url 时,我的 web 应用程序会添加到 root-url: 'app/documents
' 并加载内容。
但我假设有时用户尝试直接访问网址:'xxx.cloudfront.net/app/documents
'。到目前为止,这不起作用:我得到一个 AccessDenied
(来自 S3)。
我应该怎么办?
我的目标是,当有人进入特定域(不是根域,例如:xxx.cloudfront.net/app/documents/4
)时,他将能够直接访问id为4的文档。这样的事情可能吗?
PS:我已经看过这个问题中的答案,但这对我不起作用。如果我使用自定义域,我不会获得在 S3 的权限文件中使用的
Origin Access Identity
(这样只有 cloudfront 可以访问 s3 代码)。
我也看过这个问题,看起来很相似。这建议向每个请求附加一个index.html。也许我没有这方面的知识,但在我的S3存储桶中只有一个index.html(根目录)。那这怎么行得通呢?
谢谢你,祝一切顺利, 卢卡斯
在您的云前端发行版中,转到
Error Pages
选项卡。
您需要在此处为
400
和 403
错误代码创建 2 个单独的条目。
对于每个新条目,在
Customize error response
标题下选择 Yes
并使用与 Default root object
中的 Settings
相同的 s3 文件路径,大概是 /index.html
。
将底部的
HTTP Response code
更改为200: OK
按
Save Changes
并等待分发更新。
您需要公开您的 S3 存储桶。
您可以点击此链接:https://aws.amazon.com/premiumsupport/knowledge-center/read-access-objects-s3-bucket/
您需要打开 S3 ACL 并使您的对象公开。