MD-5 Ошибка контрольной суммы при загрузке файла в S3 из AWS lambda - PullRequest
0 голосов
/ 10 сентября 2018

Во-первых, я знаю это и это , но мой случай немного отличается.

Я получаю эту ошибку, когда пытаюсь загрузить файлы размером более 11 МБ в сегменты S3 из своей лямбда-функции AWS:

Произошла ошибка (BadDigest) при вызове операции PutObject (достигнуто максимальное количество попыток: 4 ): Указанный вами Content-MD5 не соответствует полученному нами.

Моя лямбда делает только это:

  • Получить содержимое из URL
  • Хранить это содержимое в строковом объекте в виде файла
  • Создать объект в корзине S3 с таким содержимым, написанным

    some_huge_text_from_a_url = requests.get(url)
    contents = StringIO.StringIO()
    contents.write(some_huge_text_from_a_url)
    contents.seek(0)
    s3_client.put_object(Body=contents, Bucket=s3_bucket, Key=s3_key)
    

Я генерирую и загружаю файл из той же ветки, но все равно получаю эту ошибку. Я связался с поддержкой AWS по этому поводу, они немного медлительны, чтобы ответить. Поэтому я хочу знать, что об этом говорит Сообщество.

Поддержка AWS предполагает, что содержимое моего файла изменяется после вычисления контрольной суммы MD-5 лямбда-выражением. Я не вижу, как это возможно в приведенном выше коде.

Пожалуйста, скажите мне, если я скучаю, чтобы увидеть что-то здесь.

1 Ответ

0 голосов
/ 17 сентября 2018

После долгого времени и накопления большого опыта я узнал, что несоответствие контрольной суммы было связано с тем, что я все время использовал неправильную кодировку файлов.

Я не эксперт, когда дело доходит до кодирования файлов, но простое изменение кодировки на utf-8 привело к исчезновению этой ошибки.

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