こんにちは、わたなべです。先月はいろいろあり記事を書く時間が取れず2ヶ月ぶりのエントリーです。
さて、去る3/24にNifty Cloudにエンハンスがあり待望の REST API が提供されました。同時にJava SDK,CLIの提供も始まりました。
SOAP I/Fに比べて扱いやすいREST APIの提供を心待ちにしていた方は多いのではないかと思います。残念ながら現状公式に公開されたSDKは、Javaのみとなっており私が普段の開発に使用しているPHP用のSDKは提供されていません。
折角RESTのAPIが提供されたのに使えないのは癪だな?...(^^;、ということで先日からREST API で色々と遊んでいました。
出来るだけ汎用的に使える様に考えていたら、SDKに近いものができ上がったので紹介させていただこうと思います。
なお、このSDKは私が個人的に開発した非公式な物です。Niftyさんは開発には関わっておりませんので、問い合わせなどはしないようお願いします。
Unofficlal NIFTY Cloud SDK for PHP
Unofficlal NIFTY Cloud SDK for PHPのソースコードはgithubで公開しているので下記を参照してください。
Unofficlal NIFTY Cloud SDK for PHP
事前準備
REST APIを使用するには、認証キーが必要なのでコントロールパネルの「API認証」メニューよりREST APIの認証キー(AccessKey ,SecretAccessKeyの2つ)を取得しておいてください。
SDKの設置
アーカイブをダウンロードする方法
最新のバージョンのアーカイブがありますので以下からダウンロードして使用できます。
$ wget "https://github.com/kaz29/unofficial-niftycloud-sdk-for-php/zipball/v0.1a" $ unzip kaz29-unofficial-niftycloud-sdk-for-php-v0.1a-0-g0a59355.zip $ mv kaz29-unofficial-niftycloud-sdk-for-php-0a59355 niftycloudsdk
gitコマンドで取得する方法
git コマンドで取得する場合は下記の様になります。
$ git clone https://github.com/kaz29/unofficial-niftycloud-sdk-for-php.git niftycloudsdk
サンプルを動かしてみる
設置が完了しましたので、早速サンプルを動かしてみましょう。
認証情報の設定
SDKを使用できる様に事前に取得しておいた認証キーを設定します。samplesディレクトリに設定ファイルのサンプル(settings.php.sample)がありますのでそれをコピーして各自の設定を行ってください。
$ cd niftycloudsdk/samples $ cp settings.php.sample settings.php $ vim settings.php 'ここにSecretAccessKeyを入れてください', 'access_key' => 'ここにAccessKeyを入れてください。', 'instance_id' => "ここにテストで使用するインスタンスIDを入れてください。", 'key_name' => 'ここにテストで使用するSSH Key IDを入れてください', );
- secret_key
- access_key
- instance_id
- key_name
事前に取得したSecretAccessKeyを設定してください
事前に取得したAccessKeyを設定してください
サンプル実行時に使用するサーバー名を設定してください。ここで指定したサーバー名でテスト用のサーバーを作成しますので、"APITEST"の様に分かりやすいIDを指定すると良いと思います。
サーバー名は、英数字1~15文字で指定してください。
サンプル実行時に使用するSSHキー名を指定してください。サンプルでサーバー作成をする際にこのSSHキー名を使用してサーバーが作成されます。
サーバーの作成
まずはサーバー作成APIの使用方法を解説します。以下がサーバー起動APIを使用する場合のサンプルです。
// samples/run_instances.php の抜粋 $result = $api->run_instances(array( 'ImageId' => 1, 'KeyName' => $params['key_name'], 'InstanceType' => 'mini', 'InstanceId' => $params['instance_id'], 'AccountingType' => NiftyCloud::ACCOUNTING_TYPE_PAYPER, 'Admin' => null, 'Password' => $params['instance_id'], )); if ( $api->isError() ) { echo "Errorn"; } else { echo "{$result->instancesSet->item->instanceId}: {$result->instancesSet->item->instanceState->name}n"; }
run_instances(サーバー作成)に指定するパラメータの詳細は以下の通りです。
- ImageId
- 1 : CentOS 5.3 32bit Plain
- 2 : CentOS 5.3 64bit Plain
- 3 : Red Hat Enterprise Linux 5.3 32bit
- 4 : Red Hat Enterprise Linux 5.3 64bit
- 6 : CentOS 5.3 32bit Server
- 7 : CentOS 5.3 64bit Server
- 12 : Microsoft Windows Server 2008 R2
- KeyName
- InstanceType
- mini
- small
- small2
- small4
- medium
- medium4
- medium8
- large
- large8
- large16
- InstanceId
- AccountingType
- 1 : 月額課金(NiftyCloud::ACCOUNTING_TYPE_MONTH)
- 2 : 従量課金(NiftyCloud::ACCOUNTING_TYPE_PAYPER)
- Admin
- Password
作成するサーバーのOSイメージIDを指定します。
デフォルトで用意されているOSイメージのIDは以下の通りです。
オリジナルのOSイメージを作成している場合は保存時に指定したイメージ名を指定する事が出来ます。
作成するサーバーで使用するSSHキー名を指定します。
作成するサーバーのインスタンスタイプを指定します。
指定可能なインスタンスタイプは下記の通りです。
使用するOSによって指定可能なインスタンスタイプに制限がありますので詳細はNIFTY Cloudのサービス仕様をご確認ください。
サーバーのIDを指定します
利用料金のタイプを指定します。
指定可能な値は以下の通りです。
管理者アカウント名
Windows OS選択時のみ指定可能な値ですので今回はnullを指定しています。
管理者パスワード
root / 管理者アカウントのパスワードを指定します。
正常に処理が完了した場合、APIのレスポンスはSimpleXMLのインスタンスになります。応答フィールドの詳細についてはAPIのリファレンスを参照してください。
その他のサンプルについて
現在用意してあるその他のサンプルは以下の通りです。
- describe_availavility_zones.php
- modify_instance_attribute.php
- stop_instances.php
- describe_instances.php
- terminate_instance.php
利用可能なゾーンの情報を取得
指定したサーバーの詳細情報を更新
指定したサーバーを停止
指定したサーバーの情報を取得
指定したサーバーを削除
まとめ
今回紹介した以外の機能に関しても一通り実装はすんでいますので、今後紹介しようと思っています。ご利用になった、感想や要望があれば@kaz_29かgithub宛にお寄せください。もちろんご自身で改造しいただいても構いません!有益な修正が出来たらpullリクエスト頂ければうれしいです。
また、若干無茶っぽい非公式SDKの公開を快く承諾してくださったNIFTY Cloudチームの皆さんありがとうございました!
最後に再度念のため…、このSDKは私わたなべが個人的に開発した物ですのでくれぐれもNIFTYさんに問い合わせ等しないようお願いしますね!