AWS S3存储桶返回403禁止

时间:2020-04-28 20:56:08

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

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

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

enter image description here

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

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

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

我的存储桶中包含以下文件:

enter image description here enter image description here

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

糟糕:我的应用程序在Heroku中。

我该如何解决这个问题?

2 个答案:

答案 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)

要解决这种情况,我需要单击右键,然后将所有目录设为静态。

enter image description here