プレゼントに釣られて一般事務員が ConoHa の API を利用してみた

ConoHa でレビュー書いたらプレゼントというキャンペーンをやっているので API を試してみました。
キャンペーンのページにあるリンクから新しく登録すると1000円分のクーポンがもらえます。登録して少しすると残高に1000円が増える感じです。
個人的には こちらの友達紹介から登録していただけるとお互いに幸せになれる感じです。このリンクから登録しても1000円分のクーポンがもらえ、さらにワタクシにもクーポンが付く…らしいです。

早速新しい方の ConoHa アカウントを作って試します。

アカウントを作成して最初にすることは基本情報の登録です。
電話認証→個人情報登録→支払い情報登録と進んでいけばOK。
そういえば電話認証は通話の他に SMS で認証することもできるようになったんですね。

API の利用を始めるためには API 用のユーザーを作る必要があります。
API のタブを選んで +追加 をクリックしたらパスワードを入力して保存、これで API ユーザーを作ることができました。

f:id:k-side:20150619131324p:plain

f:id:k-side:20150619131325p:plain

API のドキュメントが公開されているので、これを見ながら試してみます。

まずはバージョン情報の取得をしてみます。

$ curl -i -X GET \
-H "Accept: application/json" \
https://identity.tyo1.conoha.io/

HTTP/1.1 300 Multiple Choices
Server: openresty/1.7.10.1
Date: Thu, 18 Jun 2015 05:28:02 GMT
Content-Type: application/json
Content-Length: 327
Connection: keep-alive

{"versions": {"values": [{"status": "stable", "updated": "2015-05-12T09:00:00Z", "media-types": [{"base": "application/json"},{"base": "application/xml"}],"id": "v2.0","links": [{"href": "https://identity.tyo1.conoha.io/v2.0/","rel": "self"},{"href": "https://www.conoha.jp/docs/","type": "text/html","rel": "describedby"}]}]}}

ドキュメントでは整形されていますが、返ってくる JSON は整形されていないようです。
中身はドキュメントに記録されているものとと同じものが返ってきました。

続いてトークンを取得してみます。 テナント ID は API 情報の中にある「テナント情報」をクリックすると表示されるので、コピペとかすると楽です。

$ curl -i -X POST -H "Accept: application/json" \
-d '{"auth":{"passwordCredentials":{"username":"%API User Name%","password":"%API User Password%"}, "tenantId": "%Tenant ID%"}}' \
https://identity.tyo1.conoha.io/v2.0/tokens

JSON が返ってくるのですが、どれを隠したもんかと悩んだので結果は記録しておきません。
取得したトークンには期限が設定されていて、返ってきた JSONaccess.token.expires に記録されている日時がその期限のようです。
有効期限が切れたらまたトークンの発行をすればいいようです。
肝心のトークンは access.token.id に書かれているので、そいつを使います。

トークンがちゃんと働くかどうか、バージョン情報の詳細取得で確認できそうです。
ここでは Computer Service のまージョン情報省再取得を行ってみます。

$ curl -i -X GET \
-H "X-Auth-Token: %access.token.id%" \
-H "Accept: application/json" \
https://compute.tyo1.conoha.io/v2

実行してそれっぽい JSON が返ってくればトークンが働いてくれているものとしていいようです。
トークンが間違っているとエラーコード 401 が返ってきます。

今回は取りあえずここまで。
次は VM 作っていじって消す感じのことをやろうかなと思います。