みなさんこんにちは。id:k.furusawa--gです。2019年最初の投稿になります。前回MyService APIをやると書きましたが諸所問題がありまして変更になりました。
今回は何かとお世話になる人も多いObject StorageのAPIを扱おうと思います。Oracle CloudのObject StorageといえばおそらくOracle Cloud InfrastructureのObject Storageを使うのが妥当なのだと思うのですが、こちらはcURLでは呼び出せないのでC#やJavaでAPI開発をやる勢いで記事を書かなければいけません。気合がいるので比較的楽なCloud Infrastructure ClassicのStorage Classic REST APIを使ってみようと思います! Oracle Cloud InfrastructureのObject Storageもいつかどこかで書くと思います。
Storage Classic REST APIドキュメント docs.oracle.com
Identity Service Id
とエンドポイントの把握のためにダッシュボードで開いてみましょう。
Identity Service Id
はいつも通りです。Storage Classicの特徴としてエンドポイントが3つあります。最初見たときぎょっとしましたがそれぞれ役割があるようです。
-
REST Endpoint (Permanent)
その名の通り恒久的に利用できるエンドポイントです。アカウントに紐づく自動生成GUIDが含まれておりアカウント情報が変更(
Identity Service Id
の変更)されても利用し続けることができます。そのためこちらを利用する場合はIdentity Service Id
を必要としません。この記事では使いません。公式ドキュメントに詳しい利用方法が書かれています。 -
REST Endpoint
通常のエンドポイントです。「https://
Cloud Account Name
.us.storage.oraclecloud.com/v1/Storage-Cloud Account Name
」の形式になります。 -
Auth V1 Endpoint
認証用エンドポイントです。認証時にのみ利用します。
ではStorage Classicにファイルを置くところまでやってみましょう。まずは認証です。
認証cURL
curl -v -X GET \ -H "X-Storage-User: Storage-Identity Service Id:ユーザーID"\ -H "X-Storage-Pass: パスワード" \ https://atomitech.us.storage.oraclecloud.com/auth/v1.0
ヘッダのX-Storage-User
に注意してください。Storage-Identity Service Id
:ユーザーID(メールアドレス)
の形式になります。
認証が正常に通ると以下の様に長々とヘッダが返ってくると思います。
HTTP/1.1 200 OK
X-Auth-Token: AUTH_***
X-Storage-Token: AUTH_***
X-Storage-Url: https://uscom-east-1.storage.oraclecloud.com/v1/Storage-idcs-***
X-Auth-Token
を利用しますので変数に入れるなりどこかにメモするなりしてください。
認証が済んだので次にコンテナを作りましょう。以下のようなcURLを組みます。
コンテナ作成cURL
curl -v -X PUT \ -H "X-Auth-Token: AUTH_***" \ https://atomitech.us.storage.oraclecloud.com/v1/Storage-atomitech/MyContainer
X-Auth-Token
に認証のレスポンスに含まれていたX-Auth-Token
を入れます。
MyContainer
の部分は任意のコンテナ名を入れてください。
これを実行し200が返ってこれば成功です。GETして確認してみましょう。
コンテナ一覧取得cURL
curl -v -X GET \ -H "X-Auth-Token:AUTH_***"\ https://atomitech.us.storage.oraclecloud.com/v1/Storage-atomitech
実行するとコンテナ名が返ります。
MobileMetadata MyContainer _apaas mautic omcemodileVFTD2
先ほど作成したMyContainer
が含まれています! ちゃんと作成されたようですね。
分かりやすいようにダッシュボードでも確認しに行きます。
コンテナがありますね! 大丈夫みたいです。
コンテナ詳細を得たい場合は上のリクエストにコンテナ名を含めれば得られます。
コンテナ詳細の取得cURL
curl -v -X GET \ -H "X-Auth-Token:AUTH_***" \ https://atomitech.us.storage.oraclecloud.com/v1/Storage-atomitech/MyContainer
では、このコンテナにオブジェクトをアップロードしてみましょう。cURLを叩いている環境の適当な場所にtest.txt
を作成します。中身はなんでもいいですが今回は以下の様にしてみました。
test storage
微妙な内容ですね! もっとわかりやすい内容のほうがよかったですね。
オブジェクトのアップロードには以下のcURLを組みます。
オブジェクト作成cURL
curl -v -X PUT \ -H "X-Auth-Token: AUTH_***" \ -T test.txt \ https://atomitech.us.storage.oraclecloud.com/v1/Storage-atomitech/MyContainer/myObject
私の環境ではhome直下にファイルを置いたのでファイル名を直に指定しました。環境に合わせてパスは変更してください。
myObject
はアップロードしたオブジェクトにつける任意の名称です。
200で成功したらコンテナ詳細でGETするとアップロードしたオブジェクト名も返ってきます。ダッシュボードでも確認してみましょう。
コンテナにオブジェクトが入っていますね。成功です。オブジェクトの中身も確認しておきましょう。中途半端にアップロードされている危険もあります。
オブジェクト詳細の取得cURL
curl -v -X GET \ -H "X-Auth-Token:AUTH_***" \ https://atomitech.us.storage.oraclecloud.com/v1/Storage-atomitech/MyContainer/myObject
実行するとBodyに内容が入って返ります。
test storage
正常ですね!
エンドポイントが3つもあるので何事かと思いましたが、事実上使うのは2つ(認証と呼び出し)なのでそこまで複雑でもなかったですね。
次回こそMyService APIについて書きたいと思います!