LoginSignup
5
5

More than 1 year has passed since last update.

curlコマンドでIBM Cloud Object Storage(ICOS)にファイルをアップロードして公開する

Last updated at Posted at 2019-05-09

curlコマンドでIBM Cloud Object Storage(ICOS)にファイルをアップロードしてインターネットに向けて公開する方法です。

基本的には下記docsの通りではありますが、ICOSのEndpointが新しくなってる?とか、Bearer tokenってどうやって取得すればいいの?とか、ちょっと調べる必要があったので、備忘録として書いておきます。
https://cloud.ibm.com/docs/services/cloud-object-storage/iam?topic=cloud-object-storage-iam-public-access

bucketの公開設定は上記docsや、下記の手順で行います。
https://qiita.com/testnin2/items/6379e5bc5ea165212e15

ICOSのエンドポイント

ICOSのエンドポイント情報はこちらにあります。
https://cloud.ibm.com/docs/services/cloud-object-storage?topic=cloud-object-storage-endpoints#endpoints
TOKは s3.jp-tok.cloud-object-storage.appdomain.cloud ですね。
従来の s3.jp-tok.objectstorage.softlayer.net もありますが、新しいほうを使うのが無難でしょう。

Bearer tokenを取得

下記URLの手順でbearer tokenを入手します。
https://cloud.ibm.com/docs/iam?topic=iam-iamtoken_from_apikey

上記で使うapikeyをまだ持っていない場合は、下記画面で作成します。
Manage > Access(IAM) で、左側メニューから、IBM Cloud API Keysを選択。
https://cloud.ibm.com/iam#/apikeys

image.png

Bearer tokenを取得するコマンド

curl -k -X POST --header "Content-Type: application/x-www-form-urlencoded" --header "Accept: application/json" --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" --data-urlencode "apikey=[上記で作成したapikey]" "https://iam.cloud.ibm.com/identity/token"

その出力。access_tokenの文字列をbearer tokenとして使います。略していますが、結構長いです。

{"access_token":"eyJraWQiOi・・・・・・略・・・・・・wcggXEqI6-0QqCg","refresh_token":"ReXaaamPhX・・・・・・略・・・・・・・rsXVSxGiS8A","ims_user_id":74xxxxx,"token_type":"Bearer","expires_in":3600,"expiration":1557396995,"scope":"ibm openid"}

上記で入手したaccess_tokenを使って、下記URLにあるcurlコマンドを組み立てます。
https://cloud.ibm.com/docs/services/cloud-object-storage/iam?topic=cloud-object-storage-iam-public-access

-Tオプションを使っている点が上記URLと違いますが、このオプションで、ローカルにあるアップロードしたいファイル名を指定します。成功すると、特にメッセージなくプロンプトが返ってきます。

$ curl -X PUT https://[自分のbucket名].s3.jp-tok.cloud-object-storage.appdomain.cloud/index.html -H "x-amz-acl: public-read" -H "Authorization: Bearer eyJraWQiOi・・・・・・略・・・・・・wcggXEqI6-0QqCg" -H "Content-Type: text/html" -T index.html
$

画像をアップするときはContent-Typeを image/png とかにすればOKです。

$ curl -X PUT https://[自分のbucket名].s3.jp-tok.cloud-object-storage.appdomain.cloud/cloud.png -H "x-amz-acl: public-read" -H "Authorization: Bearer eyJraWQiOi・・・・・・略・・・・・・wcggXEqI6-0QqCg" -H "Content-Type: image/png" -T cloud.png
$

ブラウザから、アップロードしたファイルが確認できました。

image.png

以上

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5