半年くらい前までは問題なくリリースできていた関数アプリがエラーにより発行できなくなったので、その際の確認ポイントです。
事象
Visual Studio 2022で.NET6のアプリケーションを関数アプリ(Azure Functions)に「発行」(デプロイ)すると「公開でエラーが発生しました。」のダイアログボックスが表示され失敗する。
このとき次のようなログが出力される。
2>xxx\.nuget\packages\microsoft.net.sdk.functions\4.1.0\build\
Microsoft.NET.Sdk.Functions.Publish.ZipDeploy.targets(46,5):
エラー : The attempt to publish the ZIP file through <関数アプリのFQDN>/api/zipdeploy
failed with HTTP status code Unauthorized.
原因(の一つの可能性)
[SCM 基本認証の発行資格情報]が「オフ」になっており、基本認証(ユーザー名とパスワードの認証)によるアプリの展開資格情報が得られないため、該当の設定を「オン」にする必要がある。
該当箇所:関数アプリ左ペインの[設定]にある[構成] > [全般設定]タブ
(Webアプリも同様)
Azure Functions の zip プッシュ デプロイ | Microsoft Learn
デプロイ資格情報を構成する - Azure App Service | Microsoft Learn
引っかかった点
関数アプリを普通にデプロイした場合に、該当の設定は既定で「オン」になります。
このため特段意識をしなくても本事象に当たることはないと思います。
が、Visual Studio 2022でデプロイを行う先の関数アプリを[新しいプロファイル]として登録しますが、この際に[基本認証を有効にする(非推奨)]が既定でチェックが外れていました。
このため関数アプリをこのまま登録してAzureポータルを確認すると「SCM 基本認証の発行資格情報」がオフに変わっています。
以前は普通にデプロイできていたし、.NET6ランタイムの関数アプリが2024年11月より選択できなくなっているため、その辺りがエラーの原因かな、と見当違いなアプローチで調査をしていたのですが、Visual Studio 2022で恐らくデフォルトが変わっていてハマりました。
既定値も意識しないと、というお話でした。