サンプルコード
サンプルコード
このサンプルは認証・リクエストの署名で示した署名(Signature)の生成方法とAPIの呼出方法を紹介するためのものです。以下二つの処理を実行します。
- 契約情報の一覧を取得
- 指定した仮想サーバにラベルを設定
サンプルプログラムでは、bash・OpenSSL、その他UNIX commandを使用しています。
サンプルコード(p2pub.sh)
#!/bin/bash
HOSTNAME="p2pub.api.iij.jp"
APIVERSION="20151130"
apicall() {
local METHOD=$1
local URI=$2
local PARAM=$3
local STRING_TO_SIGN
local CONTENT_TYPE
local OUTPUT=/tmp/_gio.$$
local HTTP_STATUS
if [ "${METHOD}" != "GET" ]; then
CONTENT_TYPE="application/json"
else
CONTENT_TYPE=""
fi
STRING_TO_SIGN="${METHOD}\n"
STRING_TO_SIGN="${STRING_TO_SIGN}\n${CONTENT_TYPE}"
STRING_TO_SIGN="${STRING_TO_SIGN}\nx-iijapi-expire:${IIJAPI_EXPIRE}"
STRING_TO_SIGN="${STRING_TO_SIGN}\nx-iijapi-signaturemethod:HmacSHA256"
STRING_TO_SIGN="${STRING_TO_SIGN}\nx-iijapi-signatureversion:2"
STRING_TO_SIGN="${STRING_TO_SIGN}\n`echo -n ${URI} | sed -e 's/\?.*//'`"
SIGNATURE=`echo -en ${STRING_TO_SIGN} | openssl dgst -sha256 -binary -hmac "$IIJAPI_SECRET_KEY" | base64`
if [ "${METHOD}" = "GET" ]; then
HTTP_STATUS=`curl -s -o ${OUTPUT} -w '%{http_code}' \
-H "x-iijapi-Expire:$IIJAPI_EXPIRE" \
-H "x-iijapi-SignatureMethod:HmacSHA256" \
-H "x-iijapi-SignatureVersion:2" \
-H "Authorization:IIJAPI $IIJAPI_ACCESS_KEY:$SIGNATURE" \
https://${HOSTNAME}${URI}`
else
HTTP_STATUS=`curl -s -o ${OUTPUT} -w '%{http_code}' \
-H "Content-Type: $CONTENT_TYPE" \
-H "x-iijapi-Expire:$IIJAPI_EXPIRE" \
-H "x-iijapi-SignatureMethod:HmacSHA256" \
-H "x-iijapi-SignatureVersion:2" \
-H "Authorization:IIJAPI $IIJAPI_ACCESS_KEY:$SIGNATURE" \
-X ${METHOD} \
-d "${PARAM}" \
https://${HOSTNAME}${URI}`
fi
echo HTTP_STATUS: $HTTP_STATUS
cat ${OUTPUT} | python -mjson.tool && rm ${OUTPUT}
return 0
}
apicall "GET" "/r/${APIVERSION}/gises/${SERVICECODE}.json"
apicall "PUT" "/r/${APIVERSION}/${SERVICECODE}/virtual-servers/${VM_SERVICECODE}/label.json" "{ \"Name\" : \"SAMPLE\" }"
exit 0
実行例
AccessKeyなどは環境変数で与えます。
※このスクリプトはあくまでサンプルです。環境変数、ShellのhistoryからAccessKey, SecretKeyが漏洩しないように十分に注意して下さい。
$ export IIJAPI_ACCESS_KEY='アクセスキー' $ export IIJAPI_SECRET_KEY='シークレットキー' $ export IIJAPI_EXPIRE=`date -u -d '1 hours' +'%Y-%m-%dT%H:%M:%SZ'` $ export SERVICECODE="gisで始まるサービスコード" $ export VM_SERVICECODE="ivmで始まるサービスコード" $ ./p2pub.sh