我一直关注Using Amazon S3 to Store Wagtail Media Files博客文章,以设置Amazon s3来存储我的w媒体文件。
这在我的本地开发服务器上非常有效(所有图像均按预期显示在S3存储桶中)。但是,在Heroku上进行部署时,由于上载程序完成并且图像未保存在S3存储桶中,因此出现服务器500错误。除了此行,heroku日志中没有其他详细信息。这使得调试非常困难。我没有将S3用于我的静态资产(这些资产是由whitenoise处理的。将debug更改为True没什么区别。任何建议都非常感谢。
2018-08-19T16:56:43.517786 + 00:00 app [web.1]:10.7.223.133--[19 / Aug / 2018:16:56:43 +0000]“ POST / admin / images /多个/添加/HTTP/1.1“ 500363” https://isawebsite.herokuapp.com/admin/images/multiple/add/
更新:通过尝试通过django-admin界面而不是w上传器上传图像,我得到了更详尽的错误消息。 调用PutObject操作时发生错误(InvalidAccessKeyId):您提供的AWS访问密钥ID在我们的记录中不存在。我不理解这一点,因为这些密钥在我的.env文件中绝对正确并推送到heroku配置。密钥在本地和AWS CLI中工作。
答案 0 :(得分:1)
我们解决了这个问题-Heroku中some_bytes.hex()
和AWS_ACCESS_KEY_ID
的配置值包括引号,例如AWS_SECRET_ACCESS_KEY
而不是'QWERTY12345'
。它在本地有效,因为python-dotenv删除了.env文件中的引号:
https://github.com/theskumar/python-dotenv/blob/master/dotenv/main.py#L43
我已经更新了https://wagtail.io/blog/amazon-s3-for-media-files/上的博客文章,以澄清这一点。