Radosgw object url
介绍
ceph 对象存储中的对象的 url 是通过本地计算得来的,无论是权限为所有人可读还是私有的。
公有
如对象存储 url 为 obs.eayun.com
对象 bucket/object
的 url 就为 http://bucket.obs.eayun.com/object
私有
计算似有对象的 url 需要一些变量:
- access_key:用户的 access_key
- secret_key:用户的 secret_key
- timeStamp:该对象过期时间点的unix时间戳
- signature:radosgw 中的认证 signature
如对象存储 url 为 obs.eayun.com
以 shell 脚本为例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/usr/bin/env bash KEY_ACCESS=“xxx” KEY_SECRET=“xxx”
FILE=“object” BUCKET=“bucket” relativePath=“/${BUCKET}/${FILE}“ contentType=“” ContentMD5=“”
current=date <span class="string">"+%Y-%m-%d %H:%M:%S"</span> timeStamp=date <span class="operator">-d</span> <span class="string">"<span class="variable">$current</span>"</span> +%s
stringToSign=“GET\n${ContentMD5}\n${contentType}\n${timeStamp}\n${relativePath}“
signature=<span class="built_in">echo</span> -en <span class="variable">${stringToSign}</span> | openssl sha1 -hmac <span class="variable">${KEY_SECRET}</span> -binary | base64
HOST=“${BUCKET}.obs.eayun.com/${FILE}“ echo “http://${HOST}?AWSAccessKeyId=${KEY_ACCESS}&Expires=${timeStamp}&Signature=${signature}“
|
对象 bucket/object
的 url 就为
http://${HOST}?AWSAccessKeyId=${KEY_ID}&Expires=${timeStamp}&Signature=${signature}