我在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”,但是问题仍然存在...
糟糕:我的应用程序在Heroku中。
我该如何解决这个问题?
答案 0 :(得分:0)
公共访问需要做很多事情。您是否已完成以下所有操作?
“ Bucket”>“权限”>“阻止公共访问”按钮>“将所有公共访问设置为关闭”。
桶>桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}
最后一个仅用于静态网站托管。如前所述,由于要构建Django应用,因此您不提供.html文件。不过,如果有人觉得有用,我还是把它留在这里。
存储桶>属性>静态网站托管>使用此存储桶托管网站。
答案 1 :(得分:0)