ストレージアカウントのプライベートエンドポイント作成でFunctionsへのデプロイができなくなった問題
何を言っているのかわからねーと思うが・・・
背景
ストレージアカウントにプライベートエンドポイントを設定して、
関数アプリからVNET経由でアクセスするようにしようとしていました。
すると・・・デプロイが不安定になりました
デプロイが不安定になった!
なんじゃそりゃって感じだと思うんですが、「不安定」としか形容できない状態になりました。
まず、VSCodeのAzure Functions Extensionからデプロイできない。
今までできていた、Bastion内へVSCodeリモートで乗り込んで叩いていた
Azure Functions拡張機能でのデプロイができなくなりました。
「デプロイ成功」みたいなメッセージがでるのに、関数アプリの「概要」画面では何の関数も表示されない・・・
Azure Functions Core Toolsでデプロイできるときとできないときがある
なんじゃそりゃ・・・再現条件不明です
原因(たぶん)
プライベートエンドポイント設定を行うとき、あわせてDNS設定を行うと思いますが、
そのDNSレコード設定のIPアドレスを自動で設定してくれる「privateDnsZoneGroups」という便利なリソースがあるんですが、それの設定をミスっていました・・・
直接的な原因はコピペミスです・・・
ストレージアカウントのプライベートエンドポイントは使用しているリソースごとに設定する必要があります。
今回のケースでは「blob」「queue」「table」でそれぞれプライベートエンドポイントを設定する必要があり、
横着してコピペしたところqueueのprivateDnsZonesに向けて作成すべきprivateDnsZoneGroupsをblobのものに向けて作成しまうというありえないミスをしていました。
結果、FunctionとFunctionの動作に必要なストレージ間での接続に何らかの問題が起こってデプロイできなくなってしまったんじゃないかな?と考えています(わかりませんが)。
結論
コピペには気をつけよう!
bicep便利 vscode便利!
最近はAzure上にリソースを構築したり破壊したりを繰り返していますが、bicepはとても便利です。
ハマりどころさえうまく回避(解消)できればとても強力なツールとして役立てることができますので、
出せるTipsは出していろんな情報が出回るようになるといいなと思いました。
また、VSCodeのAzure拡張もすごく便利ですね。もともとVSCodeのリモート機能が便利なのは知っていたんですが、
BastionのVMに乗り込んで、Azure拡張でそのままVNET経由でFunctionsへデプロイすることができるのは知りませんでした・・・!
認証もVSCodeが代替してくれるので、
GitHubへのログインやAzureへのログインを省略でき、とても捗るのでオススメです。