AWS S3 Bucket返回403禁止

2 django static heroku amazon-s3 amazon-web-services

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

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

在此输入图像描述

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

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

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>2A64DBA5BD88AC1C</RequestId>
<HostId>
K7NHlv7xhPAL6626LCHLayoR4BauqARf6KaTtKUYKQsakNqQ1LL6RnuIwxUqjMP0q6UjMmiW7Yw=
</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)

我的存储桶有文件:

在此输入图像描述 在此输入图像描述

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

Obs.:我的应用程序在 Heroku 中。

我怎么解决这个问题?

Nic*_*ick 5

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

存储桶 > 权限 > 阻止公共访问按钮 > 阻止所有公共访问设置为关闭。

存储桶 > 存储桶策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::BUCKETNAME/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

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