はじめに
久しぶりにSoftware Designを買って読み終わるとそこに魅惑的な宣伝が。
「ConoHaのAPIをさわってレビューを書くだけで最新MacBookなどもれなくプレゼント!」
MacBookもほしいし、これはのっかるしかない!ということでAPIを触ってみてレビューを書くことにしました。
また、触るだけではつまらないので、サーバを管理するスマホアプリをつくろうと思います。
ConoHaって?
ConoHaはOpenStackをベースとしたVPSサービスで、AmazonのEC2やS3のような機能が提供されています。Webページ上でさっくりサーバを立てたり消したりできて便利です。
ConoHa API
で、そのサーバの管理をするためのAPIが公開されています。ドキュメントには各APIに対してcurlでアクセスする例が載っており、とてもわかり易いです。
たとえばバージョン情報の取得は以下のように行います。
curl -i -X GET \
-H "Accept: application/json" \
https://identity.tyo1.conoha.io/v2.0
ちなみに、パラメータは以下のとおりですね。
- -i : 出力にヘッダを表示
- -X : リクエストコマンドの指定
- -H : ヘッダの指定
するとこんなレスポンスが返ってきます。
HTTP/1.1 200 OK
Server: openresty/1.7.10.1
Date: Sat, 04 Jul 2015 06:59:03 GMT
Content-Type: application/json
Content-Length: 310
Connection: keep-alive
{"version": {"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"}]}}
"id": "v2.0" なのでバージョン2ですね。
トークンの取得
バージョン情報の取得はだれでもできますが、サーバの管理を行うためには本人確認が必要です。そのためにトークンを取得し、リクエストの中に入れ込みます。
この情報はこのべんに詳しくまとめられています。
サーバ一覧の取得
では自分のVPSサーバを立てて、その情報をAPIで取得してみます。
tokens APIでトークンを発行
versionはGETで取得でしたが、tokensはPOSTで取得します。POSTのときは-dでデータを送ります。
curl -i -X POST \
> -H "Accept: application/json" \
> -d '{"auth":{"passwordCredentials":{"username":"ナイショ","password":"ナイショ"},"tenantId":"ナイショ"}}' \
> https://identity.tyo1.conoha.io/v2.0/tokens
HTTP/1.1 200 OK
Server: openresty/1.7.10.1
Date: Sat, 04 Jul 2015 07:06:54 GMT
Content-Type: application/json
Content-Length: 2452
Connection: keep-alive
{"access":{"token":{"issued_at":"2015-07-04T07:06:54.719616","expires":"2015-07-05T07:06:54Z","id”:"ナイショ","tenant":{"name":以下略
idの部分が今後使用するトークンになります。また、expiresをみると発行してから15時間有効なようです。
servers APIでVM一覧を取得
serversはGETで取得です。さっき発行したトークンをX-Auth-Tokenとしてヘッダに入れて送ります。
curl -i -X GET \
> -H "Accept: application/json" \
> -H "X-Auth-Token: トークン" \
> https://compute.tyo1.conoha.io/v2/テナントID/servers
HTTP/1.1 200 OK
Server: openresty/1.7.10.1
Date: Sat, 04 Jul 2015 07:12:51 GMT
Content-Type: application/json
Content-Length: 366
Connection: keep-alive
{"servers":[{"id":以下略
ちなみに、トークンを入れないと以下の様なエラーが発生します。
curl -i -X GET -H "Accept: application/json" https://compute.tyo1.conoha.io/v2/テナントID/servers
HTTP/1.1 401 Unauthorized
Server: openresty/1.7.10.1
Date: Sat, 04 Jul 2015 07:16:01 GMT
Content-Type: application/json
Content-Length: 23
Connection: keep-alive
serversではVM名などの最小限の情報が手に入ります。現在の稼働状況やConoHaの管理ページで表示されているネームタグを表示したい場合はservers/detailを使用します。
curl -i -X GET -H "Accept: application/json" -H "X-Auth-Token: トークン" https://compute.tyo1.conoha.io/v2/テナントID/servers/detail
HTTP/1.1 200 OK
Server: openresty/1.7.10.1
Date: Sat, 04 Jul 2015 07:19:20 GMT
Content-Type: application/json
Content-Length: 2121
Connection: keep-alive
{"servers":[{"status":"SHUTOFF","updated":"2015-07-02T21:00:37Z"以下略
"status":"SHUTOFF" で電源が落ちているのがわかりますね。
今後やること
APIを叩いてサーバを管理するスマホアプリを作ります。PhoneGapを使うことで、iPhoneでもAndroidでも動くアプリを目指します。
しばらくはブラウザ上で開発し、ある程度まとまったところでスマホアプリ化します。
また、APIのアクセスにはjQueryの$.ajaxを使用します。