前置き
App Serivce は有料プランでカスタムドメイン名を設定することが出来ますが、
複数の App Service に同じカスタムドメイン名を設定することが出来るか調査してみました。
結果
それぞれの App Service が「異なるスケールユニット」に存在する場合、同じカスタムドメインを割り当てることが出来る
それぞれの App Service が同じスケールユニットに存在する場合、
「カスタムドメインの追加」の「検証」で「次のアプリではホスト名が既に使われています…」のエラーとなり、カスタムドメインを追加できません。
参考
引用 + 日本語訳
同じスケール ユニット内の 2 つのアプリが同じカスタム ドメイン名を持つことはできないという制限が報告されています。アプリのスケール ユニットをチェックして、それらが異なることを確認します。スケール ユニットは、FTP URL のドメイン名を調べることで見つけることができます ( .ftp.azurewebsites.windows.net)。アプリのスケール ユニットは、App Service プランの作成時に Azure によってランダムに決定され、変更することはできません。Azure は、2 つのプランが同じリソース グループとリージョンの組み合わせで作成された場合にのみ、それらが同じスケール ユニット内にあることを確認します。
この記事を書いたきっかけ
担当している案件で「ドメイン名は現行のまま、宛先を 旧 App Service から新 App Serivce に切り替える」という作業を行った際、
同じカスタムドメイン名は複数の App Service に割り当てられないと思いこんでしまっていたため(検証では同じスケールユニットの App Service で試したため)、 以下の手順で実施しました。
- DNSプロパイダーの CNAME レコードを新 App Serivce の割当 URL に変更する
- 旧 App Service のカスタムドメインを削除
- 新 App Service にカスタムドメインを割り当て
結果、DNSのキャッシュが更新されるまで旧環境の App Service へのアクセスが発生しダウンタイムが生じてしまいました。
同じカスタムドメイン名が割り当てられるとわかっていたら、以下の手順とすればダウンタイムは発生しなかったと思われます。
- 新 App Service にカスタムドメインを割り当て
- DNSプロパイダーの CNAME レコードを新 App Service の割当 URL に変更する
- DNSが伝播したら旧 App Service のカスタムドメインを削除(あるいは App Serivce を停止)