LoginSignup
11
14

More than 5 years have passed since last update.

[ConoHa API] ConoHaのAPIを使ってみる

Last updated at Posted at 2015-07-04

はじめに

久しぶりに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を使用します。

11
14
0

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
11
14