12

我正在使用 boto 和 S3 来存储我的 Django 站点的静态文件。使用该collectstatic命令时,它会完美地上传大量文件,然后在文件处停止并抛出"Error 32: Broken Pipe."当我尝试再次运行该命令时,它会跳过它已经上传的文件并从它停止的文件开始,之前在没有上传任何新内容的情况下抛出相同的错误。

4

4 回答 4

10

关键似乎是指定您的存储桶位于哪个AWS 端点。我尝试了多种不同的方法,但最终对我有用的解决方案是为 boto 创建一个配置文件,如文档中指定的那样。

以下是我在以下位置创建的配置文件的内容~/.boto

[Credentials]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[s3]
host=s3-us-west-2.amazonaws.com
于 2015-04-10T02:16:40.553 回答
3

BenWurth 的回答很好,但是如果您像我一样不想添加配置文件,您也可以使用 django-storages 维护得更好的表弟“django-storages-redux”,只需在设置中添加一个额外的 env var。 py

pip uninstall django-storages (if you have this installed)
pip install django-storages-redux

然后在 settings.py

AWS_S3_HOST = 'YOUR-AWS-ENDPOINT' #in my case 's3-us-west-2.amazonaws.com'

那么一切都应该是好的。

于 2015-09-29T21:06:32.130 回答
0

我也只遇到过问题jquery.js,可能是因为它像@Kyle Falconer 提到的那样太大了。就我而言,这与地区无关。我通过将文件本地复制到需要的 S3 存储桶来“解决”它。

于 2017-04-23T13:06:45.033 回答
0

老问题,但为了轻松解决这个问题,我只是在我使用的区域中添加了环境变量“AWS_DEFAULT_REGION”(例如“ap-southeast-2”)。这在本地(Windows)和 AWS EB 中工作

于 2016-08-25T01:21:14.167 回答