从AWS Lambda将文件上传到S3时的MD-5校验和错误

时间:2018-09-10 08:13:31

标签: python python-2.7 amazon-web-services amazon-s3 aws-lambda

首先,我知道thisthis,但情况略有不同。

当我尝试将11MB以上的文件从我的AWS lambda函数上传到S3存储桶时,出现此错误:

调用PutObject操作时发生错误(BadDigest)(已达到最大重试次数) :4):您指定的Content-MD5与我们收到的不匹配。

我的lambda只这样做:

  • 从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支持建议我在lambda计算MD-5校验和后更改文件内容。我看不到上面的代码中怎么可能。

如果我想念这里的东西,请告诉我。

1 个答案:

答案 0 :(得分:0)

经过很长一段时间并积累了很多经验,我了解到校验和不匹配是因为我一直使用错误的文件编码。

关于文件编码,我不是专家,但只是将编码更改为utf-8导致此错误消失了。