使用 S3 和 Cloudfront 访问非根 URL 时访问被拒绝

问题描述 投票:0回答:2

我有一个关于 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(根目录)。那这怎么行得通呢?

谢谢你,祝一切顺利, 卢卡斯

amazon-web-services amazon-s3 aws-lambda amazon-cloudfront
2个回答
0
投票
  1. 在您的云前端发行版中,转到

    Error Pages
    选项卡。

  2. 您需要在此处为

    400
    403
    错误代码创建 2 个单独的条目。

  3. 对于每个新条目,在

    Customize error response
    标题下选择
    Yes
    并使用与
    Default root object
    中的
    Settings
    相同的 s3 文件路径,大概是
    /index.html

  4. 将底部的

    HTTP Response code
    更改为
    200: OK

  5. Save Changes
    并等待分发更新。


-1
投票

您需要公开您的 S3 存储桶。

您可以点击此链接:https://aws.amazon.com/premiumsupport/knowledge-center/read-access-objects-s3-bucket/

您需要打开 S3 ACL 并使您的对象公开。

© www.soinside.com 2019 - 2024. All rights reserved.