【问题标题】:How to calculate md5 for file in s3 bucket如何计算 s3 存储桶中文件的 md5
【发布时间】: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


【解决方案1】:

您可以将文件作为流读取,而不是尝试读取内存中的整个文件。然后,您可以使用 hashlib 库根据流的块创建 MD5。这方面的一个例子可以在this SO question 中找到。

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 2017-01-20
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多