いしぐめも

プログラミングとかしたことを書きます。

Microsoft.Network/dnsResolvers/inboundEndpoints の subnet 指定のIDはリソースIDじゃないから注意(ARMテンプレート, Bicep)

Microsoftのドキュメントを読んでフンフンフーンとBicepを書いていたらドハマりしたので共有。

learn.microsoft.com

なにが起こったか

DNSプライベートリゾルバを使用するとき、DNSへのインバウンド通信に使用するIPを定義する「inboundEndpoints」というリソースがあるんですが、ドキュメントを読んで適当に実装すると死にます。

というのも、IP指定を行う IpConfiguration のパラメータには以下のような記載があります。

inboundEndpointsのIpConfigurationの説明

これをそのまま真に受けて、「subnet の id はリソースIDを指定すればいいんだな」と考えてしまい、

subnet: { id: inboundSubnet.id }

とか書いてしまうと、デプロイ時にエラーが起こります。

で、今回は別モジュールでbicepを書いていたので、該当デプロイのログを見ようとすると・・・

なぜかDeploymentがNotFoundになる

なぜか404…

解決方法

解決方法はサンプルにありました。

github.com

ここによると、サブネットのID指定は ${resolverVnet.id}/subnets/${inboundSubnetName}(著者編集) で行う必要があるみたいですね。

終わりに

あんまサブネットを指定するケースってなかったので今回ハマってしまったのですが、「<VNET_ID>/subnets/<SUBNET_NAME>」って指定するのが一般的なんでしょうか?

結構注意が必要ですね