サンプルコード
サンプルコード
このサンプルは認証・リクエストの署名で示した署名(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