【发布时间】:2021-10-11 08:12:21
【问题描述】:
我需要计算 s3 存储桶中保存的文件的 md5 值。我知道我可以将它们下载到本地服务器并在那里执行,但我想让我的本地服务器尽可能小,并且我的一些 s3 文件很大(500MB+)。所以我已经开始开发一个 lambda python 函数来处理这个问题,但我不知道如何通过文件分块,以便生成 md5 值。这是代码,我期待提供任何帮助。
def s3_md5sum(bucket_name, object_key):
try:
md5Object = s3object.Object(bucket_name, object_key)
body = md5Object.get()['Body'].read()
except ClientError:
raise
else:
md5_obj = hashlib.md5()
while True:
buffer = body.read(8096)
if not buffer:
break
md5_obj.update(buffer)
hash_code = md5_obj.hexdigest()
md5 = str(hash_code).lower()
return md5
【问题讨论】:
-
对于某些文件,取决于加密以及文件如何到达那里,
ETag是文件的 md5 哈希。
标签: python-3.x amazon-web-services aws-lambda