やりたいこと
IBM CloudのICOS(IBM Cloud Object Storage)にWindowsに標準搭載されているcurlコマンドを利用してファイルをアップロードする。尚、ibmcloudコマンドは利用せず、事前にAPIキーを作成しておく
環境情報
> curl -V curl 7.83.1 (Windows) libcurl/7.83.1 Schannel ...
やり方
APIキーを引数に入れた上で下記コマンドを押下すると
> curl -X "POST" "https://iam.cloud.ibm.com/identity/token" --data-urlencode "apikey=XX" --data-urlencode "response_type=cloud_iam" --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey"
標準出力にてアクセストークンが発行されるので
{"access_token":"...","refresh_token":"not_supported","ims_user_id":.."token_type":"Bearer","expires_in":3600,"expiration":xx,"scope":"ibm openid"}
バケット名と取得したアクセストークンを引数に入れた上でファイル(test.txt)を-T
オプションで利用すると
> curl -X PUT "https://s3.jp-tok.cloud-object-storage.appdomain.cloud/XX/test.txt" -H "Authorization: bearer XX" -T "test.txt"
ファイルがアップロードされる。
以下、補足です。
補足
curlを押下する環境によってはエンドポイントの証明書認証にて以下のエラーになるので
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - The revocation function was unable to check revocation because the revocation server was offline."grant_type=urn:ibm:params:oauth:grant-type:apikey"
証明書情報を無視する-k
オプションを利用する必要があります。
また、今回はアップロードを行いましたが、トークンの確認であれば以下にて指定したバケットのオブジェクトが表示されます。
> curl "https://s3.jp-tok.cloud-object-storage.appdomain.cloud/XX" -H "Authorization: bearer XX"
以上。