我正在开发一个部署在 Heroku 的 Django(3) 项目。我正在尝试使用 Django 存储连接 AWS S3 以将静态和媒体文件上传到 S3 存储桶。
注意:我搜索了很多并尝试了我找到的所有解决方案,但没有解决我的问题,所以请不要将其标记为重复!
我创建了一个启用了公共访问的 S3 存储桶并添加了以下 CORS 配置:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"POST"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
此外,创建了一个具有编程访问权限的 IAM 用户并将权限授予为S3FullAccess
这就是我所拥有的**settings.py**
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_QUERYSTRING_AUTH = False
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_REGION_NAME = 'us-east-1'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'
如果我直接从存储桶中打开文件,我可以在浏览器中看到该文件,但是当我加载我的网站(pythonist.org)时,这些文件会返回403 forbidden
这是来自浏览器的网络选项卡对文件的响应:
Summary
URL: https://s3.amazonaws.com/pythonist.org/css/normalize.css
Status: 403 Forbidden
Source: Network
Initiator:
pythonist.org:18
不知道这里出了什么问题,先谢谢了!