django - Amazon S3 的访问被拒绝错误

标签 django amazon-s3 boto django-storage

我在使用 Amazon S3 时遇到“访问被拒绝”错误,但无法找出原因。

我的设置如下:

STATIC_URL = 'http://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME

什么会导致访问被拒绝错误?我已验证我的 key 是正确的。

最佳答案

您上面显示的 URL 将解析为 S3 中的存储桶。为了使用这样的 URL 成功访问该存储桶,该存储桶的权限必须授予对该存储桶的“公共(public)读取”访问权限。此外,存储桶中的每个对象或文件也必须授予“公共(public)读取”访问权限。

您希望存储桶以及存储桶中的所有内容可供任何人读取吗?如果是这样,请确保权限设置正确。但请注意,向存储桶本身授予“公共(public)读取”权限将允许任何人列出存储桶的内容。这通常是不必要的,也许应该避免。

另请注意, key (我假设您指的是您的 AWS 访问 key 和 secret key )仅在您通过 API 访问 S3 时适用。如果您只是通过浏览器使用 URL 访问它,则请求中不会使用凭据。

关于django - Amazon S3 的访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167493/

相关文章:

amazon-web-services - AWS CLI : Could not connect to the endpoint URL : "https://sts.amazonaws.com/"

javascript - 将 div 中的 amazon s3 图像转换为 Canvas 时出现跨源问题

amazon-ec2 - 告知何时可以连接到新的 ec2 主机的过程

amazon-web-services - 使用 IAM 角色从 lambda python boto api 连接现有 EC2

Django channel WebSocket 握手期间出错 : Unexpected response code: 500

sql - 在 Django 中对 ValuesQuerySet 使用 extra()

amazon-web-services - 使用 Java SDK v2 以编程方式获取 AWS S3 存储桶 Web 静态站点 URL

boto - 如何让 boto 为 S3 生成触发下载的签名 URL?

python - 如何使用for循环在切片中传递动态值

django - 在 Djoser 和 Rest Framework 中使用自定义字段注册用户