APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【小ネタ】利用可能なAzureリソースの名前をチェックするコマンド

はじめに

こんにちは、ACS事業部の吉川です。
本記事はQiitaのAzure Advent Calendar 2022の5日目の記事です。

qiita.com

全国のAzureユーザーの皆様、リソースの命名に困っていないでしょうか。
自由に名前を決められるものはさておき、Azure全体でユニークな名前 が求められるリソースの場合、他のユーザーと被らないような名前を付ける必要があります。
ポータルで作る分には下記のようにエラーが表示されるのでいいのですが…
CLIやIaCを利用する際、実行してみて初めて利用可能な名前かどうかわかる、というのは不便ですよね。

そんなときに便利な、利用可能な名前かどうかを事前に確認できるコマンド を紹介します。

コマンド

以下がストレージアカウントの名前をチェックするコマンドです。

az storage account check-name -n <名前>

試しに example という名前を指定して実行すると、以下のようにレスポンスが表示されました。

{
  "message": "The storage account named example is already taken.",
  "nameAvailable": false,
  "reason": "AlreadyExists"
}

"reason": "AlreadyExists" ということですので、既に他で利用済みのため使用不可("nameAvailable": false) という結果でした。

では名前を変えて再実行すると…

az storage account check-name -n example20221205
{
  "message": null,
  "nameAvailable": true,
  "reason": null
}

今度は "nameAvailable": true と利用可能であるという結果が表示されました。
このように一部のリソースでは、Azure CLIを利用してリソース名を事前チェックすることが可能です。
ストレージアカウント以外では、以下のようなものがあります。

Azure Container Registry

az acr check-name -n <名前>

Cosmos DB

az cosmosdb check-name-exists -n <名前>

API Management

az apim check-name -n <名前>

REST API

Azure CLIでは確認できないリソースでも、REST APIでは対応している場合があります。
例えばApp Serviceでは以下のAPIが存在します。

learn.microsoft.com

サブスクリプションIDと認証トークンを取得して以下のように実行すると…

curl -X POST "https://management.azure.com/subscriptions/${SUBSCRIPTION_ID}/providers/Microsoft.Web/checknameavailability?api-version=2022-03-01" \
  -H "Authorization:Bearer ${TOKEN}" \
  -d "type=Microsoft.Web/sites" \
  -d "name=example" 

以下のようにレスポンスが返ってきます。

{
    "nameAvailable": false,
    "reason": "AlreadyExists",
    "message": "Hostname 'example' already exists. Please select a different name."
}

API呼び出すのは少し面倒ですが、CLIと同じように確認できそうですね。

おわりに

ちょっとだけ便利な名前確認コマンド、いかがでしたでしょうか。 皆様のAzureライフの一助となれば幸いです。

私達ACS事業部はAzure・AKSを活用した内製化のご支援をしております。ご相談等ありましたらぜひご連絡ください。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
切磋琢磨しながらスキルを向上できる、エンジニアには良い環境だと思います。ご興味を持っていただけたら嬉しく思います。

www.ap-com.co.jp

本記事の投稿者: 吉川 俊甫
AKS/ACAをメインにインフラ系のご支援を担当しています。 Shunsuke Yoshikawa - Credly