LoginSignup
0
0

More than 1 year has passed since last update.

ニフクラのコンピューティングAPIをbashスクリプトでリクエストする

Posted at

ニフクラのコンピューティング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}"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0