Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

IBM Cloud Object Storage(ICOS)にcurl+HMACでアクセスする

はじめに

IBM Cloud Object Storage(ICOS)に対する認証方式にはIAMとHMACの2通りがあることは、ここに記載されているとおりです。

HMACの場合は大抵はなんらかのツール(コマンドラインだとIBM Cloud CLIとかAWS CLIとかs3fsなど。GUI系ツールだとCyberduckとかCloudberryとかWinSCPなど)を使うことが前提となっており、IBM Cloud docsにもHMACでのcurl呼び出しは記載はありませんでした。IAM前提でのcurlの利用方法はあるんですけどね。

というので、HMACを利用したcurlによるICOSへのアクセス方法(とりあえずデータ取得)についてサンプルスクリプトを書いてみました。

結論

こんな感じ。環境変数部分は自分で書き換えてください。

icos_access.sh
#!/bin/sh

#Environment
icosendpoint=s3.private.jp-tok.cloud-object-storage.appdomain.cloud
bucket=xxxxx
filename=xxxxx
ACCESS_KEY=xxxxxxxxx
SECRET_KEY=xxxxxxxxx

#Execution
resource="/${bucket}/${filename}"
contentType="text/html"
dateValue=$(date -R)
stringToSign="GET\n\n${contentType}\n${dateValue}\n${resource}"
signature=$(echo -en ${stringToSign} | openssl sha1 -hmac ${SECRET_KEY} -binary | base64)
curl -sO "https://${icosendpoint}/${bucket}/${filename}" \
     -H "Authorization: AWS ${ACCESS_KEY}:${signature}" \
     -H "Date: ${dateValue}" \
     -H "Content-Type: ${contentType}"
実行例(上記スクリプトのファイル名にindex.htmlを指定)
$ rm index.html
$ ./icos_access.sh
$ cat index.html
Hello World!
testnin2
このサイトにおける掲載内容はあくまで私自身の見解であり、必ずしも私の所属団体・企業における立場、戦略、意見を代表するものではありません。 近年はクラウドの魅力に惹かれてクラウドを中心とした提案活動・技術支援を行っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away