我在 Django 中有一个应用程序,我将其静态文件放在 AWS S3 上的存储桶中。但是,当我尝试在应用程序中连接时,存储桶 S3 返回 403 禁止静态文件。
我的存储桶配置了公共(public)访问权限。
如果我尝试直接访问该文件,则会返回 XML 错误,如下所示:
此 XML 文件似乎没有任何与其关联的样式信息。文档树如下所示。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>2A64DBA5BD88AC1C</RequestId>
<HostId>
K7NHlv7xhPAL6626LCHLayoR4BauqARf6KaTtKUYKQsakNqQ1LL6RnuIwxUqjMP0q6UjMmiW7Yw=
</HostId>
</Error>
我的存储桶包含文件:
我尝试更改设置,将 AWS_DEFAULT_ACL 设置为“public”、“private”和 None,但问题仍然存在...
观察:我的应用程序在 Heroku 中。
如何解决这个问题?
最佳答案
公共(public)访问需要很多东西。您是否完成了以下所有操作?
存储桶 > 权限 > 阻止公共(public)访问按钮 > 阻止所有公共(public)访问设置为关闭。
存储桶 > 存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}
最后一项仅适用于静态网站托管。正如您所提到的,您没有提供 .html 文件,因为您正在构建 Django 应用程序。不过,我还是把它留在这里,以防有人发现它有用。
存储桶 > 属性 > 静态网站托管 > 使用此存储桶托管网站。
关于django - AWS S3 Bucket返回403禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61489846/