Amazon S3cmd падает при некоторых больших загрузках - PullRequest
2 голосов
/ 25 августа 2010

Я регулярно загружаю большие SZP-файлы bzip на S3, и в последнее время замечаю, что он вылетает из-за этой ошибки.Что может быть причиной этого?Это всегда одни и те же файлы, которые вылетают, но я могу загружать большие без проблем, поэтому, похоже, это не ограничение размера.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    An unexpected error has occurred.
  Please report the following lines to:
  s3tools-general@lists.sourceforge.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Traceback (most recent call last):
  File "/usr/bin/s3cmd", line 1040, in <module>
    main()
  File "/usr/bin/s3cmd", line 1020, in main
    cmd_func(args)
  File "/usr/bin/s3cmd", line 188, in cmd_object_put
    response = s3.object_put_uri(real_filename, uri_final, extra_headers)
  File "/usr/lib/python2.5/site-packages/S3/S3.py", line 195, in object_put_uri
    return self.object_put(filename, uri.bucket(), uri.object(), extra_headers)
  File "/usr/lib/python2.5/site-packages/S3/S3.py", line 175, in object_put
    response = self.send_file(request, file)
  File "/usr/lib/python2.5/site-packages/S3/S3.py", line 384, in send_file
    debug("MD5 sums: computed=%s, received=%s" % (md5_computed, response["headers"]["etag"]))
KeyError: 'etag'

1 Ответ

1 голос
/ 04 сентября 2010

S3 не вернул ETag [тег объекта] в своем ответе. Независимо от причины, по которой ETag отсутствует в ответе, ваша версия s3cmd не ожидала, что ETag будет отсутствовать и прерываться.

Насколько я могу судить, это не должно быть проблемой в последней версии, 0.9.9.91, s3cmd:

## S3.py ##
...
# S3 from time to time doesn't send ETag back in a response :-(
# Force re-upload here.
if not response['headers'].has_key('etag'):
    response['headers']['etag'] = ''
...
debug("MD5 sums: computed=%s, received=%s" % (md5_computed, response["headers"]["etag"]))
...

Убедитесь, что вы используете версию 0.9.9.91 из s3cmd.

Версия 0.9.9.91 из s3cmd повторит загрузку. В случае, если последующие попытки также не удаются для этого конкретного файла, измените S3.py, чтобы распечатать полный ответ S3, или используйте перехватчик пакетов [tcpdump в Linux, Wireshark в Windows], чтобы перехватить это тот же полный ответ S3. Он может содержать дополнительные подсказки о том, что вызывает такое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...