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)