ニフクラのコンピューティングAPIをbashスクリプトでリクエストするための
スクリプトを書きました。
params
パラメーターを変更することで、任意のAPIをリクエストできます。
#!/bin/sh
urlencode() {
# https://qiita.com/ik-fib/items/cc983ca34600c2d633d5
echo "$1" | nkf -WwMQ | sed 's/=$//g' | tr = % | tr -d '\n'
}
HOST="jp-east-1.computing.api.nifcloud.com"
ACCESS_KEY="<YOUR ACCESS KEY>"
SECRET_KEY="<YOUR SECRET KEY>"
TIMESTAMP="`date -u +'%FT%T.%2NZ' | sed -e 's/:/%3A/g'`"
declare -A params=(
["Action"]="DescribeVolumes"
["VolumeId.1"]="VolumeId"
["SignatureMethod"]="HmacSHA256"
["SignatureVersion"]="2"
["Timestamp"]=${TIMESTAMP}
)
# https://pfs.nifcloud.com/api/rest/authenticate.htm
STR="GET\n"
STR+="${HOST}\n"
STR+="/api/\n"
STR+="AccessKeyId=${ACCESS_KEY}"
params_index=( ${!params[@]} )
# パラメーター名でソート
_IFS=$IFS
IFS=$'\n'
sorted_params_index=($(echo "${params_index[*]}" | sort))
IFS=$orig_ifs
# パラメーター名と値をイコール/アンパサントで連結
QUERY_STR=""
for idx in "${sorted_params_index[@]}"; do
QUERY_STR+="&${idx}=${params[${idx}]}"
done
STR+=${QUERY_STR}
SIGNATURE=$(urlencode $(echo -en ${STR} | /usr/bin/openssl dgst -sha256 -binary -hmac ${SECRET_KEY} | /usr/bin/openssl base64));
curl "https://${HOST}/api/?AccessKeyId=${ACCESS_KEY}${QUERY_STR}&Signature=${SIGNATURE}"