Azure App Service でカスタムドメインの asuid (TXTレコード)用の検証IDをCLIで取得する

2022.06.19

いわさです。

App Serviceでカスタムドメインを構成するときに、まずドメイン所有について検証する必要があります。
事前に検証用のレコードを用意する必要があるので、例えば外部DNSでレコードを用意せずにAzure CLIでカスタムドメインを追加しようとすると以下のようにエラーとなります。

iwasa_takahito@Azure:~$ az webapp config hostname add --hostname hoge0615.tak1wa.com --resource-group 20220615 --webapp-name hoge0615app
A TXT record pointing from asuid.hoge0615.tak1wa.com to 814dbc8de9fa3e5227191e213b39a1d0a0355173a4a69c52dc159d3ee922b4d7 was not found.

今回は自動化の関係で、カスタムドメイン検証IDを事前にCLIで取得する方法を探していたので方法を残しておきます。

カスタムドメイン

通常、AzureポータルでApp Serviceのカスタムドメインを構成する場合はこのあたり使うこと無いかもしれません。
以下のようにカスタムドメイン追加操作を行えば、あとは画面の案内に沿ってレコードを登録後に検証ボタンを押すだけです。

この際に、カスタムドメインの追加画面で表示されるカスタム検証ID、あるいはTXTレコードの値で表示されている内容を登録することが多いと思います。

CLIの場合

前述のように、CLIの場合はカスタムドメインの追加コマンドのみ提供されているため事前にTXTレコード作成のためにカスタムドメイン検証IDを取得する必要があります。

ConfigやHostのカスタムドメイン周りを探していたのですが、そのあたりではIPアドレスしか取得出来ませんでした。

結論としては、az webapp showでカスタムドメイン検証IDを取得することが出来ます。

iwasa_takahito@Azure:~$ az webapp show --name hoge0615app -g 20220615
{
  "appServicePlanId": "/subscriptions/7ca3dd80-fa18-4054-a801-3ee01bc8cf1f/resourceGroups/20220615/providers/Microsoft.Web/serverfarms/ASP-20220615-b7ab",
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "clientCertExclusionPaths": null,
  "clientCertMode": "Required",
  "cloningInfo": null,
  "containerSize": 0,
  "customDomainVerificationId": "814DBC8DE9FA3E5227191E213B39A1D0A0355173A4A69C52DC159D3EE922B4D7",
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "hoge0615app.azurewebsites.net",
  "enabled": true,
  "enabledHostNames": [
    "hoge0615app.azurewebsites.net",
    "hoge0615app.scm.azurewebsites.net"
  ],
:

あとはこちらから取得したIDを使ってカスタムドメイン用のTXTレコードを作成し、以下のように az webapp config hostname add を使うことで、CLIのみでカスタムドメインを構成することが出来ます。

さいごに

本日は、Azure CLIを使って、App Serviceのカスタムドメイン構成に必要な情報を取得し、App Serviceのカスタムドメイン構成のための自動処理関係で使ってみました。
最初config hostnameあたりをずっと探していたのでちょっと迷子になりました。