以下是使用'boto3.resource('s3')'获取md5sum值的方法(还有许多其他方法)
s3_resource = boto3.resource('s3')
head_response = s3_resource.meta.client.head_object(Bucket=bucket_name, Key=object_key)
object_ETag = head_response['ETag'][1:-1]
或者
s3_resource = boto3.resource('s3')
s3_object = s3_resource.Object(bucket_name, object_key)
object_ETag = s3_object.e_tag.strip('"')
读取并应用 md5sum
s3_resource = boto3.resource('s3')
s3_object = s3_resource.Object(bucket_name, object_key)
read_body = s3_object.get()['Body'].read(object_size)
temp_hash = hashlib.md5()
temp_hash.update(read_body)
s3_md5sum = temp_hash.hexdigest()
或者
s3_resource = boto3.resource('s3')
s3_object = s3_resource.Object(bucket_name, object_key).get()
temp_hash = hashlib.md5()
temp_hash.update(s3_object['Body'].read())
s3_md5_hash = temp_hash.hexdigest()
或者
s3_resource = boto3.resource('s3')
object = s3_resource.Object(bucket_name,object_key).get()
s3_md5_hash = hashlib.md5(object['Body'].read()).hexdigest()
或者
s3_resource = boto3.resource('s3')
object = s3_resource.Object(bucket_name,object_key).get()
for byte_block in iter(lambda: object_1['Body'].read(), b''):
s3_md5_hash.update(byte_block)
s3_md5_hash = s3_md5_hash.hexdigest()
code
self.etag_value_for_current_download = f.readline().rstrip('\n') ** # 我们曾经使用基于MD5的正则表达式来确保etag正确读取。由于ETag不一定是MD5,因此现在我们只进行简单的长度检查。而不是匹配MD5
code
请确认是否有另一个文件,用于将下载的文件与md5校验和进行比较。 - user1652054_get_file_internal()
计算了MD5,但实际上从未检查过它(我不确定为什么)。请参见此处:https://github.com/boto/boto/blob/develop/boto/s3/key.py#L1555 - Ben Hoyt