🦁

Azure REST API サンプルコード

2023/03/29に公開

はじめに

Azure REST APIをcurlで実行する際の覚え書き。
サンプルはVnetを作成するAPI。
変数の設定部分だけ修正すれば残りはコピペで実行できるはず。

変数の設定

# Azure ADテナント、サブスクリプション、シークレット情報
tenant_id="00000000-0000-0000-0000-00000000000000"
subscriptionId="00000000-0000-0000-0000-00000000000000"
client_id="<application id>"
client_secret="<client secret>"

# 実行したいREST APIのHHTTPメソッド
method="PUT"

# 実行したいREST APIで使用する変数の定義(URIの記載に合わせて定義)
resourceGroupName="resourceGroupName"
virtualNetworkName="virtualNetworkName"

# 実行したいREST APIで送信する本文(必要な場合)
body_json=$(cat << EOS
{
  "properties": {
    "addressSpace": {
      "addressPrefixes": [
        "10.0.0.0/16"
      ]
    },
    "flowTimeoutInMinutes": 10
  },
  "location": "eastus"
}
EOS
)
body=$(echo $body_json | jq -c)

# 実行したいREST APIのURI ※subscriptionIdなどの変数部分を修正
uri="https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Network/virtualNetworks/${virtualNetworkName}?api-version=2022-09-01"

tokenの取得

resource=$(echo $uri | cut -d '/' -f 1-3)
token=$(curl -X POST https://login.microsoftonline.com/${tenant_id}/oauth2/token  \
  -F grant_type=client_credentials \
  -F resource=${resource} \
  -F client_id=${client_id} \
  -F client_secret=${client_secret} | jq -r .access_token)

REST API実行

curl -X ${method} ${uri} \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $token" \
  -d ${body} | jq

Discussion