OBS服务两点使用小计{[不同带宽下数据传输量参考表],[上传请求中Content-MD5头域值设置详细说明]}
【摘要】 不同带宽下数据传输量参考表在向OBS上传数据和从OBS下载数据时候,特别是在大量数据搬迁的时候,需要对传输的时间和数据量进行评估。对此做了一个小表格,方便业务评估时候参考。很多在调用SDK或则API进行对象上传时候,需要携带Content-MD5头域进行 上传数据的一致性校验。此头域的值内容解释在API中比较模糊,这儿做进一步解释说明。如何计算Content-MD5?首先根据文件内容计算得出...
不同带宽下数据传输量参考表
在向OBS上传数据和从OBS下载数据时候,特别是在大量数据搬迁的时候,需要对传输的时间和数据量进行评估。对此做了一个小表格,方便业务评估时候参考。
很多在调用SDK或则API进行对象上传时候,需要携带Content-MD5头域进行 上传数据的一致性校验。此头域的值内容解释在API中比较模糊,这儿做进一步解释说明。
如何计算Content-MD5?
首先根据文件内容计算得出其128位二进制数组格式的MD5哈希值,然后再对这个二进制数组进行base64编码(而不是对32位字符串编码)。例如,用Python计算'Hello OBS'的Content-MD5,代码为:
def str_to_base64(s): bb = base64.b64encode(s) return bb contents='Hello OBS' m2 = hashlib.md5() m2.update(contents) ContentMD5= str_to_base64(m2.digest()) # md5s=m2.hexdigest() #此方法为错误的方法使用 headers = PutObjectHeader() headers.md5=ContentMD5 resp = obs_client.putContent('obs-training', 'objectkey', contents, metadata={'meta1':'value1', 'meta2':'value2'}, headers=headers) if resp.status < 300: print('requestId:', resp.requestId) else: print (resp.status) print('errorCode:', resp.errorCode) print('errorMessage:', resp.errorMessage)
以上代码在Windows CMD窗口调用python执行 内容如下,大家可以比较正确的Content-MD5和错误的Content-MD5头域值差异
>>> import hashlib,base64 >>> m2=hashlib.md5() >>> m2.update('Hello OBS') >>> base64.b64encode(m2.digest()) #正确的Content-MD5值 'cvKFqTUThYon+D2ntsI/AQ==' >>> base64.b64encode(m2.hexdigest()) #错误的Content-MD5值 'NzJmMjg1YTkzNTEzODU4YTI3ZjgzZGE3YjZjMjNmMDE='
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)