色々調べても Azure CLI を使って Alias record set を作成する方法が見当たらなかったので、リファレンスを読んで実際に試しました。普段なら Azure Portal での方法と CLI でのサンプルコマンドが載ってるはずですが、ドキュメントは何故か Azure Portal のみでした。
使うコマンドは record-set a create
か record-set a update
です。aaaa と cname も使えるはず。
普通に record set を作成する時と同じですが、パラメータとして --target-resource
を与えると Alias record set となります。渡す値は ARM 上のリソース ID です。
新しく Alias record set を作成する場合には、以下のようなコマンドを叩きます。
az network dns record-set a create -g TestRG -n @ -z example.com --target-resource /subscription/***/
リソース ID は Azure Portal ならプロパティからコピーできます。ARM Explorer を使っても良いですが、少し手間がかかるので Azure Portal 手軽で良いです。
実際に Cloud Shell を使って Traffic Manager に対する Alias record set を作成してみました。対応していないリソース ID を渡すとエラーになるので、バリデーションという意味で安心です。
ちなみに Azure CDN への Alias record set を作成する時は Endpoint のリソース ID が必要なので、CDN Profile と間違えないようにしましょう。Public IP Address は試してないですが多分同じでしょう。
作成後に Azure Portal から DNS レコードを確認すると、ちゃんと Alias record set になっています。
使っている API バージョンが 2018-05-01
より古い場合は、確認しようとしても IP アドレスしか返ってこないので悩むことになります。新しい CLI とクライアントを使えば大丈夫です。
Front Door でも試してみた
昨日に Front Door チームの方から、既に Front Door も Alias record set に対応していると教えてもらっていたので、実際に CLI を使って試しておきました。
既に A レコードを作っていたので、update を使って --target-resource
を Front Door に切り替えます。Front Door のリソース ID は Azure Portal から確認出来ないので ARM Explorer を使いました。
az network dns record-set a update -g TestRG -n @ -z example.com --target-resource /subscription/***/
これも Cloud Shell から実行しました。エラーが出ないので Front Door に対応してることが分かります。
Azure Portal から確認してみると、一覧ではちゃんと Front Door と表示されていました。あとは追加ダイアログでの対応が終われば、サクッと使えるようになるはずです。
Front Door も CDN と同様にカスタムドメインを割り当てるには afdverify という CNAME が必要なので、別途作成しておきます。将来的には CDN の時のように自動で作ってくれるようになるでしょう。
これで Front Door Designer からカスタムドメインを追加できるようになります。実際に追加しました。
これもまた CDN と同じように Key Vault から証明書をインポート出来るので、せっかくなので設定して https を有効化まで行ってみました。
全ての設定完了後にアクセスすると x-azure-ref
ヘッダーが返ってきているので Front Door を通っていることが確認できます。
少しはまったポイントとしては Azure CDN Standard Microsoft と Front Door は同じ Microsoft の CDN Edge を使っているので、Alias 先を切り替えても同じ IP が返って来ますし、どちらかのカスタムドメインを予め削除しておかないと謎のエラーが出続けて悩むことになります。
同じドメインでの CDN Standard Microsoft から Front Door への移行は避けた方が無難かもしれません。
ARM Template でも作れる
Azure DNS REST API のバージョン 2018-05-01
から targetResource
が追加されているので、ARM Template で Traffic Manager や CDN を作成する場合は同じテンプレートで Alias record set を作れます。
ARM Template の場合は [resourceId]
を使えば簡単にリソース ID を取れるので、CLI より楽です。