TECH

ついに公開されたAPIをPHPから利用する(バックアップ情報を取得する)

TECH
中津川 篤司

CloudGarageのインスタンス操作などを自動化できるAPIがついに公開されました。これでインスタンスの立ち上げや停止を自動化できるようになります。

そこで今回はPHPを使ってAPI操作を行う方法を解説します。処理内容としては、インスタンスに設定されたバックアップ情報を取得します。

必要なソフトウェア、ライブラリ

今回必要なソフトウェア、ライブラリは以下の通りです。

  • PHP

APIキーを取得する

続いてCloudGarageの管理画面にてAPIキーを取得します。管理画面の右上にあるメニューをクリックして、アカウント情報確認/変更を選択します。

一度パスワードを入力する必要があります。

そして一番下にあるAPI Key管理にてAPI Keyを発行します。私はすでに発行済みなので再発行になっていますが、最初はAPIキーがないはずです。Client ID(クライアントID)とClient Secret(クライアントシークレット)の二つで認証します。重要なキーなので漏洩したりしないよう注意してください。

設定ファイルを読み込む

まず設定ファイルとなるJSONファイルを取得します。これは上記クライアントIDとクライアントシークレットが保存されたファイルです。

$config = json_decode(file_get_contents('../config.json'), true);

トークンを取得する

次にAPIを利用するためのトークンを取得します。これはクライアントIDとクライアントシークレットを用いて、POST /tokens にアクセスします。file_get_contents関数を使ってPOST処理を行います。

$baseUrl = "https://api.cloudgarage.jp";
$token = getToken($baseUrl, $config);

// トークンを取得する
function getToken($baseUrl, $config) {
  $url = "$baseUrl/tokens";
  $options = array (
    'http' => array (
      'method' => 'POST',
      'header' => 'Content-type: application/json',
      'content' => json_encode(
        array(
          'client_id' => $config['clientId'],
          'client_secret' => $config['clientSecret']
        )
      )
    )
  );
  $contents = file_get_contents($url, false, stream_context_create($options));
  return json_decode($contents, true)['token']['id'];
}

インスタンス一覧を取得する

トークンを取得したら、それを使ってAPIにアクセスできます。まず、既存のインスタンス一覧を取得します。これは GET /servers にリクエストします。

function getInstances($baseUrl, $token) {
  $url = "$baseUrl/servers";
  return get($url, $token, 'servers');
}

function get($url, $token, $key) {
  $options = array (
    'http' => array (
      'header' => implode("\r\n", array(
        'Content-type: application/json',
        "X-Auth-Token: $token"
      ))
    )
  );
  $contents = file_get_contents($url, false, stream_context_create($options));
  return json_decode($contents, true)[$key];
}

GET処理はこの後でも使うので関数化しておきます。

自動バックアップ情報を取得する

インスタンスIDが分かったら、そのインスタンスの自動バックアップ情報を取得します。これは GET /servers/{id}/autoBackup で取得できます。

function getAutoBackupInfo($baseUrl, $token, $id) {
  $url = "$baseUrl/servers/$id/autoBackup";
  return get($url, $token, 'autoBackup');
}

結果を出力すると次のようになります。

array(6) {
  ["resourceId"]=>
  string(36) "948...4fc"
  ["cycle"]=>
  string(1) "W"
  ["dayOfCycle"]=>
  string(6) "MONDAY"
  ["time"]=>
  string(8) "01:00:00"
  ["saveCount"]=>
  int(1)
  ["nextExecDatetime"]=>
  string(23) "2018/12/24 01:00:00.000"
}

PHPは豊富な関数が用意されているので、それらを組み合わせるだけで簡単に利用できます。特にWeb APIを扱う上でfile_get_contents関数は強力です。ぜひ使いこなしてください!

APIリファレンスはCloudGarage API リファレンスにありますので、ぜひご覧ください。

この記事を書いた人

中津川 篤司

株式会社MOONGIFT 代表取締役。CloudGarage、ニフクラ mobile backend、hifive エバンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。2004年、まだ情報が少なかったオープンソースソフトの技術ブログ『MOONGIFT』を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶエバンジェリスト業「DevRel」活動をスタートした。 Twitter:@goofmint | GitHub:@goofmint | Facebook: goofmint

この記事のタグ

オススメの記事

ページトップへ