Azureリソースの作成・変更を行う際には、Azure Portal、CLI、PowerShellなど様々な手段があります。Azure Portalからであれば、手動でポチポチ簡単に作成できるのが一番の利点です。CLIやPowerShellもAPIをラップして使いやすいように設計されています。また公式ドキュメントをはじめネット上にはたくさんのサンプルがあります。しかし、プレビュー機能などを利用する際は、先に挙げた方法では対応しておらず、直接REST APIを実行しなければいけないことが多々あります。
今回はそんなREST API実行方法や個人的な使い分けについて記載します。
結論
手段 | 手軽さ | 仕様タイミング |
直接実行 | × | ブラウザやCLIが使用できない環境である スクリプトやプログラムを作成して繰り返し実行する |
az rest | △ | ブラウザを使えない環境である 繰り返し実行する or 検証目的である |
APIリファレンスページからの実行 | ○ | ブラウザからAzureに認証できる 検証目的である |
直接実行
一番シンプルな方法です。curlやPostman、VS Codeの拡張機能など様々な方法はありますが、お好みの方法で実行できます。具体的な実行方法は英語ですが、Azureのブログがありますので、そちらを確認いただければと思います。
ただせっかくなので、APIを1つ実行してみましょう。実行までの流れは以下のようになります。
- アクセストークンの取得(Azure CLI)
- アクセストークンをヘッダーにしていいてAPI実行
まずはアクセストークンをAzure CLIを使って取得します。CLIを使えない環境でもAzure PortalのCLoud Shell上で実行できます。結果の「accessToken」に長い文字列が取得できるのでこれをメモっておきます。また「expiresOn」にあるように有効期限があるので注意しましょう。
az account get-access-token { "accessToken": "xxxxxxxxx", "expiresOn": "2023-12-17 01:18:29.000000", "expires_on": 1702775909, "subscription": "f1fa317f-6c2f-45dc-8d62-0b026c1785b3", "tenant": "tenant id", "tokenType": "Bearer" }
続いては、アクセストークンを使って実際にAPIを実行します。Subnetの一覧を取得します。curlコマンドで実行していますが、お好みの手段で実行してください。
curl -X GET -H "Authorization: Bearer access-token" https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets?api-version=2023-05-01
この方法の一番の難点は、Authorizationヘッダー用のトークンを生成しないといけないことです。Azure PortalやCLI、PowerShellでは裏でいい感じにやってくれますが、APIを直接実行するときはそうはいきません。これが少し手間になります。またアクセストークン自体に有効期限があるので、定期的にリフレッシュする必要もあります。
何度も繰り返し実行する場合には、ちょっとしたスクリプトやプログラムを作成することもあると思います。その際は直接APIを実行することになるでしょう。
az restの利用
azコマンド(CLI)にはrestというサブコマンドがあります。restサブコマンドの詳細は公式ドキュメントを確認していただきたいと思いますが、このサブコマンドでは任意のAPIを実行することができます。では、直接APIを実行する方法と何が違うのかというと、認証用トークンの作成が不要になります。あくまでazコマンドなので、事前にaz loginを済ませておけば認証は裏でやってくれます。
CLIをインストール済みであるなら、こちらのほうがやや楽だと思います。また繰り返し実行が必要な時でも、スクリプトを作成すればよいので、その際も選択肢となると思います。
では再びSubnet一覧を取得してみましょう。アクセストークンの取得がないだけでだいぶ楽ですね。
az rest --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets?api-version=2023-05-01 --method get
REST APIリファレンスページから直接実行
ちょっと試してみたい!そんな時はこの方法が一番楽だと思います。「APIを実行したい!」そんなときどうしますか?そうです、公式ドキュメント見に行くと思います。そして、実行したいAPIを調べるとなんと「Try it」というボタンがあります。これを押してAzureにログインすると、右側にAPI実行ペインが表示されます。あとは必要なパラメータを入力して一番下にあるRunボタンを押すだけです。
おなじみのSubnetの情報を取得するAPIを例として見てみます。
ブラウザでログイン済みであるため、認証ヘッダーの指定も不要です。ブラウザでこんなにも簡単に実行できるなら、わざわざ他の方法を使う必要はありませんね。もちろんな十回も繰り返し実行が必要な時はスクリプトを作成したほうが効率が良いです。
最後に
REST APIを使わないといけない! そんな時は、公式サイトのREST APIリファレンスから実行するのが一番簡単です。しかし、何らかの理由によりブラウザから実行できない場合もあるかもしれません。その際はaz restサブコマンドを試してみるのが良いと思います。CLIも使えないとなるとあとはAPIを直接実行する必要があります。またスクリプト等を作成して繰り返し実行が必要であればCLIもしくは直接実行になると思います。
コメント