curlを使ってs 3サービス操作を行います。

2626 ワード

参考:
http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash
http://sriram-iyengar.blogspot.com/2011/07/aws-create-s3-bucket-using-curl.html
s 3 cmd/s 3 curlなどのツールまたは第三者倉庫を使ってRadosGWが提供するs 3サービスをテストしたくないです。だからgoogleはもう一つ作った人がいます。詳しくはリンクを参照してください。
shellスクリプトを貼って記録します。
1.bucketを作成する
「mygod」というbucketを作成します。
bucket="mygod"
dateValue=`date -R`
resource="/${bucket}/"
contentType="application/octet-stream"
stringToSign="PUT


${dateValue}
${resource}" s3Key="6R2MJWR863EREUDD0KTZ" s3Secret="74eHNNQa1oLBlvZfO2CC2hIU8cobSYxTgeRDtXtH" signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64` curl -v -X PUT "http://${bucket}.s3.mydomain.com" \ -H "Host: ${bucket}.s3.mydomain.com" \ -H "Date: ${dateValue}"\ -H "Authorization: AWS ${s3Key}:${signature}"
2.対象をbucketにアップロードする
下のスクリプトは@fileを@urlで指定されたストレージサービスのクラスタにアップロードする@bucketで、対象の名前は@objnameです。
file=./c.zip
objname="testfile"
bucket=another
url="s3.mydomain.com"
resource="/${bucket}/${objname}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT

${contentType}
${dateValue}
${resource}" s3Key="6R2MJWR863EREUDD0KTZ" s3Secret="74eHNNQa1oLBlvZfO2CC2hIU8cobSYxTgeRDtXtH" signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64` curl -X PUT -T "${file}" \ -H "Host: ${bucket}.${url}" \ -H "Date: ${dateValue}" \ -H "Content-Type: ${contentType}" \ -H "Authorization: AWS ${s3Key}:${signature}" "http://${bucket}.${url}/${objname}"
注意:httpsを使うなら、httpをhttpsに変えてください。
3.objectを取得する
file="./myfile"
objname="testfile"
bucket=another
url="s3.mydomain.com"
resource="/${bucket}/${objname}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="GET

${contentType}
${dateValue}
${resource}" s3Key="6R2MJWR863EREUDD0KTZ" s3Secret="74eHNNQa1oLBlvZfO2CC2hIU8cobSYxTgeRDtXtH" signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64` curl -o ${file} -X GET \ -H "Host: ${bucket}.${url}" \ -H "Date: ${dateValue}" \ -H "Content-Type: ${contentType}" \ -H "Authorization: AWS ${s3Key}:${signature}" "http://${bucket}.${url}/${objname}"