KDDIクラウドプラットフォームサービス ナレッジサイト

  • HOME
  • 開発者ガイドブック(APIリファレンス)
  • Premium/Value
  • kick_api.shの使用方法

kick_api.shの使用方法

APIご利用方法

利用時の注意事項

APIご利用方法

下記のbashスクリプト(kick_api.sh)をコピーして、以下のパラメータを変更します。

  1. api_keyおよびsecret_keyパラメータに生成されたキーをコピーします
  2. addressパラメータにアクセスするホスト名を設定します

◆kick_api.shのダウンロード◆

こちらからダウンロードいただけます。

◆変更箇所◆
———————————————

・エンドポイントURLを変更
———————————
address=”<endpoint url (except ‘/client/api’)>”
———————————
・API_KEYを変更
———————————
 api_key=”<api key>”
———————————

・SECRET_KEYを変更
———————————
secret_key=”<secret key>”
———————————————

 

kick_api-sh

 

パラメータを変更したらAPIを実行します。
提供API一覧についてはこちらを参照してください。

スクリプトのusage例を説明します。
例えば、パラメータ指定なしのlistVirtualMachinesコマンドを実行したいときは以下のように実行します。

 

# kick_api.sh command=listVirtualMachines

 

パラメータを指定したrebootVirtualMachineコマンドを実行したいときは以下のようします。
パラメータやレスポンスタグをスペースデリミッタで続けてください。

#  kick_api.sh command=rebootVirtualMachine id=14aa749d-bd33-4a55-a441-e1d4126f2633

 

以下、スクリプトの記述例になります。
ご利用の際は、こちらからダウンロードいただけます。

———————————————————————————————–

GET / HTTP/1.1
#!/bin/bash



# please set your endpoint url (except '/client/api')
 # ex. "https://portal2-east.cloud-platform.kddi.ne.jp:10443"
address=""

# please set your api key
api_key=""

# please set your secret key
secret_key=""

# debug=true
 # export LC_ALL='C'

# check command, output usage
 if [ $# -lt 1 ]; then
 echo "usage: $0 command=... parameter=... parameter=..."; exit;
 elif [[ $1 != "command="* ]]; then
 echo "usage: $0 command=... parameter=... parameter=..."; exit;
 elif [ $1 == "command=" ]; then
 echo "usage: $0 command=... parameter=... parameter=..."; exit;
 fi

# if include '%' in parameter, exit with error.
 for par in "$@"
 do
 if[ ′echo $par |grep '%'′]
 then
 echo "Invalied Parameter"
 exit 1
 fi
 done

command="${1##*command=}"
 c=$(echo $command | tr "A-Z" "a-z")
 api_path="/client/api?"

# check response format for pretty print
 for par in "$@"
 do
 p="${par##*response=}"
 p=$(echo $p | tr "A-Z" "a-z")
 if [ "$p" == "json" ]
 then
 json=true
 break
 fi
 done




# start making signature
 ##
 [ -n "$debug" ] && echo " debug 1 $@"

data_array=("$@" "apikey=${api_key}")
 ##
 [ -n "$debug" ] && echo " debug 2 ${data_array[@]}"

temp1=$(echo -n ${data_array[@]} |
 tr " " "n" |
 sort -fd -t'=' |
 perl -pe's/([^-_.[]~A-Za-z0-9=s])/sprintf("%%%02X", ord($1))/seg'|
 tr "A-Z" "a-z" |
 tr "n" "&" )
 ##
 [ "$debug" ] && echo " debug 3 sorted ${temp1[@]}"

signature=$(echo -n ${temp1[@]})
 signature=${signature%&}
 ##
 [ -n "$debug" ] && echo " debug 4 $signature"

signature=$(echo -n $signature |
 openssl sha1 -binary -hmac $secret_key |
 openssl base64 )

##
 [ -n "$debug" ] && echo " debug 5 signature=$signature"

signature=$(echo -n $signature |
 perl -pe's/([^-_.~A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg')
 # [ -n "$debug" ] && echo " debug 6 urlencoded signature=$signature"
 url=${address}${api_path}$(echo -n $@ | sed s/'+'/'%2B'/g | tr " " "&")"&"apikey=$api_key"&"signature=$signature
 [ -n "$debug" ] && echo " SEND URL: $url"
 if [[ -n $json ]]
 then
 curl ---globoff ${url} | python -mjson.tool
 else
 curl ---globoff ${url} | xmllint ---format -
 fi

# [ -n "$debug" ] && curl -i ---globoff ${url}
———————————————————————————————–

正常に実行されると以下が表示されます。

———————————————————————————————–

<表示形式:XMLの場合>

————————————————————————–

$ ./kick_api.sh command=rebootVirtualMachine id=3e94e278-4c0f-4d0e-9542-28055720af8
<?xml version=”1.0″ encoding=”UTF-8″?>
<rebootvirtualmachineresponse cloud-stack-version=”4.3.0.2″>
<jobid>afc0ae20-54e4-49f0-a5d2-d97ec3b3012c</jobid>
</rebootvirtualmachineresponse>

————————————————————————–

<表示形式:JSONの場合>

————————————————————————–

$ ./kick_api.sh command=rebootVirtualMachine id=3e94e278-4c0f-4d0e-9542-28055720af82 response=json
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 85 0 85 0 0 713 0 –:–:– –:–:– –:–:– 3400
{
“rebootvirtualmachineresponse”: {
“jobid”: “9c29abed-5808-4c9c-8bb7-7260621be5e1”
}
}
———————————————————————————————–

正常な応答が返ってくることを確認してください。

正常な応答が返ってこない場合は、APIエラー発生時切り分けフローに記載されている連絡先にご連絡ください。

利用時の注意事項

※APIコマンド引数として、「%」は使用しないでください。

2021/06/21 2021/06/24