1.4. リクエストの作成方法

APIクライアントなどを使用せずにAPIリスクエストを利用する方法を示します。

APIリクエスト形式

APIリクエストは次のような形式となっています。 以下では、日本DCでPlan VQの仮想サーバーを作成するコマンド「deployVirtualMachine」の例を記載します。

https://comp-api.jp-e1.cloudn-service.com/client/api?command=deployVirtualMachine&serviceofferingid=38&templateid=241&zoneid=1&apikey=APIKEYSAMPLE&signature=8vjVFWLtIruwxdxNvG1CLs1mGVw%3D

上記のリクエストは、下記の要素群により構成されています。

エンドポイント

エンドポイントです。
リージョン・NWタイプにより異なりますのでご注意ください。
https://comp-api.jp-e1.cloudn-service.com/client/api?

コマンド

APIコマンドです。

command=deployVirtualMachine

コマンドオプション

上記コマンドのオプションです。
APIにより異なりますのでAPIリファレンスをご参照ください。
&serviceofferingid=38
&templateid=241
&zoneid=1

APIアクセスキー

APIアクセスキーです。

&apikey=APIKEYSAMPLE

電子署名

アカウントごとの署名です。 署名の作成方法については後述します。

&signature=8vjVFWLtIruwxdxNvG1CLs1mGVw%3D

署名の作成方法

署名は、ユーザーの秘密鍵とHMAC-SHA-1ハッシュアルゴリズムを組み合わせて生成します。
署名を作成するには、APIコマンドとオプション、APIアクセスキー(公開鍵) を用意します。
command=deployVirtualMachine
serviceofferingid=38
templateid=241
zoneid=1
apikey=APIKEYSAMPLE
それぞれの値の部分(”=”の右側)をURLエンコード [1] します。

次に、大文字を小文字に変換します。

command=deployvirtualmachine
serviceofferingid=38
templateid=241
zoneid=1
apikey=apikeysample

続いて、要素をアルファベット順(昇順)でソートします。

apikey=apikeysample
command=deployvirtualmachine
serviceofferingid=38
templateid=241
zoneid=1

“&”でつなげます。

apikey=apikeysample&command=deployvirtualmachine&serviceofferingid=38&templateid=241&zoneid=1
秘密鍵を使用し HMAC SHA-1でハッシュをかけます。
ハッシュにはopensslコマンドを利用し、ハッシュ結果はBASE64で文字列化します。
#echo -n 'apikey=apikeysample&command=deployvirtualmachine&serviceofferingid=38&templateid=241&zoneid=1' | openssl sha1 -binary -hmac 'SECRETKEYSAMPLE' | openssl base64

8vjVFWLtIruwxdxNvG1CLs1mGVw=

ハッシュした結果をURLエンコードします。 このエンコード後の値が署名となります。

8vjVFWLtIruwxdxNvG1CLs1mGVw%3D

なお、上記の署名はプログラムの検証にお使いいただけます。 APIキー、秘密鍵、およびコマンド引数を全く同じ状態にしたうえで上記署名と同じとなるかを確認することで 署名作成プログラムの動作を検証可能です。

脚注

[1]URLにて使用できない文字を別の文字に変換することです。(ex.) “/” -> “%2F” “+” -> “%2B” “=” -> “%3D”