我正在使用 django-storages (1.1.4) 的 boto (2.2.1) 后端将文件上传到 S3 存储桶。它适用于图像,但是当我尝试上传电影文件(小 mov、小 avi)或 mp3 时,我收到了 Broken pipe 错误。
这很奇怪。
深入研究 Django 回溯,我看到以下异常:
boto.https_connection.InvalidCertificateException
哪种适合我使用 Cyberduck 直接检查存储桶的经验:有时它抱怨我的证书*.s3.amazonaws.com
和域不匹配*.s3-external-3.amazonaws.com
事实上,存储桶日志显示我正在接受 HTTP 307 临时重定向。是否可能是 AWS 以一种方式发送某些内容类型,而另一些则以另一种方式发送,但 boto/something 无法跟上这一点?电影的上传似乎确实击中了 S3 两次,而图像击中了一次,所以很可能 boto 正在应对 307 罚款(并且 boto 中支持 307 的封闭票已经有几年了),所以它可以好吧,没关系,还有其他事情发生了。
但是什么?我已经从一个愉快的高效的一天变成了一个头,这是非常令人沮丧的。
关于可能发生的事情和/或尝试解决此问题的任何建议?
(请注意,使用 boto S3 后端或简单的 S3 后端会失败 - 只是 boto 给了我看起来更具体的错误)