LoginSignup
11
9

More than 5 years have passed since last update.

できるだけ簡単にAzure REST APIを実行する

Posted at

Azure関連でプレビュー機能が公開されて間もない時など、Azure PowershellやCLIのコマンドがなくてREST APIしかインターフェース提供されてないって場合がたまにある。そういう時、さっくりAzure REST APIたたきたい。Microsoft Azureのリソース管理方法まとめ

本来のAzure REST APIの実行手順は、下記のリファレンスの仕様に従ってHTTPリクエストを作成して投げるけど、
Request header の Authorization に Azure サブスクリプションに紐づくAzure ADからOauth 2.0のbearer tokenを取得してセットしないといけないのでちょっと面倒に感じる。

 Azure REST API Reference - Create the request
 https://docs.microsoft.com/ja-jp/rest/api/#create-the-request

そこでもっと簡単にAzure REST API投げる方法ないかなーと試行錯誤したところ、Azure Powershellでログインしたらローカルにbearer token保存されてることが判明。これ使おうってことで、Azure Powersell入ってる環境でPowershellの Invoke-WebRequestコマンドつかってAzure REST APIにリクエストなげるスクリプト作ってみた。(事前にAzure Powershellはインストール必要)

使用するREST APIはなんでもいいけど、まずはシンプルに仮想マシンのリソース情報とってみる(Virtual Machines - Get)[https://docs.microsoft.com/ja-jp/rest/api/compute/virtualmachines/get]

サブスクリプションID、リソースグループ名、仮想マシン名のパラメータを変更してPowershellで実行するとJSON形式で仮想マシンの構成情報が取得できる。

#Parameter Setting
$subscriptionId = "xxx" #サブスクリプションID
$resourceGroup = "xxx" #リソースグループ名
$vmName = "xxx" #仮想マシン名


#Login and acquire my access token
Login-AzureRmAccount -SubscriptionId $subscriptionId

$context = Get-AzureRmContext
foreach($token in $context.TokenCache.ReadItems())
{
    if($token.TenantId -eq $context.Tenant.Id){
        $currentToken = $token
        break
    }
}

#Executing Azure REST-API
$method = "GET"
$apiurl = "https://management.azure.com/subscriptions/"+$subscriptionId+"/resourceGroups/"+$resourceGroup+"/providers/Microsoft.Compute/virtualMachines/"+$vmName +"?api-version=2017-12-01"
$authHeader = "Bearer " + $currentToken.AccessToken

$requestHeader = @{
"Authorization" = $authHeader
"Accept" = "application/json"
}
$contentType = "application/json;charset=utf-8"
$apires = Invoke-WebRequest -Uri $apiurl -Method $method -Headers $requestHeader -ContentType $contentType

#Display the responce body
$apires.Content
11
9
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
11
9