【问题标题】:AWS S3 Bucket returning 403 forbidenAWS S3 存储桶返回 403 被禁止
【发布时间】:2020-08-12 20:03:42
【问题描述】:

我在 Django 中有一个应用程序,我将它的静态文件放在 AWS S3 上的存储桶中。但是,当我尝试在我的应用程序中连接时,存储桶 S3 返回 403 禁止静态文件。

我的存储桶为其配置了公共访问权限。

如果我尝试直接访问该文件,则会返回如下 XML 错误:

此 XML 文件似乎没有任何关联的样式信息。文档树如下所示。

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>2A64DBA5BD88AC1C</RequestId>
<HostId>
K7NHlv7xhPAL6626LCHLayoR4BauqARf6KaTtKUYKQsakNqQ1LL6RnuIwxUqjMP0q6UjMmiW7Yw=
</HostId>
</Error>

我的存储桶有文件:

我尝试更改设置,将 AWS_DEFAULT_ACL 设置为“public”、“private”和 None,但问题仍然存在...

Obs.:我的应用在 Heroku 中。

我该如何解决这个问题?

【问题讨论】:

    标签: django amazon-web-services heroku amazon-s3 static


    【解决方案1】:

    公共访问需要很多东西。您是否完成了以下所有操作?

    Bucket > Permissions > Block public access 按钮 > Block all public access 设置为关闭。

    桶 > 桶策略

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "PublicReadGetObject",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::BUCKETNAME/*"
            }
        ]
    }
    

    最后一个仅用于静态网站托管。正如您所提到的,您没有提供 .html 文件,因为您正在构建一个 Django 应用程序。不过,我还是把它留在这里,以防有人觉得它有用。

    存储桶 > 属性 > 静态网站托管 > 使用此存储桶托管网站。

    【讨论】:

    • 政策和许可是的,我做到了。但是网站托管不是因为我没有文件 home.html 或 index.html 独立存储桶,只有静态文件。
    • 哎呀!你是对的,最后一个是完全没有必要的。很高兴你明白了!
    【解决方案2】:

    为了解决这个问题,我需要点击右键,将 public all directory 设为静态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 2020-08-06
      • 2021-06-17
      • 1970-01-01
      • 2020-05-22
      • 2020-07-19
      • 2014-01-28
      相关资源
      最近更新 更多