当我尝试将11MB以上的文件从我的AWS lambda函数上传到S3存储桶时,出现此错误:
调用PutObject操作时发生错误(BadDigest)(已达到最大重试次数) :4):您指定的Content-MD5与我们收到的不匹配。
我的lambda只这样做:
在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校验和后更改文件内容。我看不到上面的代码中怎么可能。
如果我想念这里的东西,请告诉我。
答案 0 :(得分:0)
经过很长一段时间并积累了很多经验,我了解到校验和不匹配是因为我一直使用错误的文件编码。
关于文件编码,我不是专家,但只是将编码更改为utf-8
导致此错误消失了。