Ошибка контрольной суммы md-5 при загрузке файла в s3 из aws lambda

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

Я получаю эту ошибку, когда пытаюсь загрузить файлы размером более 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 по этому поводу, они немного не спешат. Итак, я хочу знать, что сообщество SO может сказать по этому поводу.

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

Скажите, пожалуйста, если мне что-то здесь не хватает.

0
0
499
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме