引用帖子: Amazon S3 & Checksum , How to encode md5 sum into base64 in BASH
我必须从具有受限访问权限的 S3 存储桶下载一个 tar 文件。 [ 大部分访问权限仅授予下载 ]
下载后,我必须检查下载文件的 md5 校验和与 S3 中作为元数据存在的数据的 MD5 校验和
我目前使用 S3 文件浏览器手动记下内容 header 的“x-amz-meta-md5”,并根据下载文件的计算 md5 验证该值。
我想知道是否有使用 boto 的编程方式来捕获 S3 文件的 md5 哈希值,如元数据所述。
from boto.s3.connection import S3Connection
conn = S3Connection(access_key, secret_key)
bucket=conn.get_bucket("test-bucket")
rs_keys = bucket.get_all_keys()
for key_val in rs_keys:
print key_val, key_val.**HOW_TO_GET_MD5_FROM_METADATA(?)**
如果我的理解有误,请指正。我正在寻找一种以编程方式捕获 header 数据的方法
最佳答案
当 boto 使用任何 get_contents_to_*
方法下载文件时,它会计算它下载的字节的 MD5 校验和,并将其用作 md5
属性Key
对象。此外,S3 在响应中发送一个 ETag
header ,表示服务器对 MD5 校验和的看法。这可用作 Key
对象的 etag
属性。因此,下载文件后,您只需比较这两个属性的值,看看它们是否匹配。
如果您想在不实际下载文件的情况下找出 S3 认为 MD5 是什么(如您的示例所示),您可以这样做:
for key_val in rs_keys:
print key_val, key_val.etag
关于python - 如何使用 boto 以编程方式获取 Amazon S3 文件的 MD5 校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16872679/