背景
Azure Functions へ az functionapp deployment source config-zip --build-remote で ZIP デプロイしようとしたところ、社内プロキシ(TLS インターセプトあり)っぽいエラーで失敗。
Bicep(management.azure.com 側)でのインフラデプロイは通るのに、Functions のコードデプロイ(*.scm.azurewebsites.net 側)だけが落ちる、という状態だった。
結論としては 「PowerShell プロファイルが読み込まれておらず、意図した proxy 設定が効いていなかった」 というおバカな話。 ![]()
概要
- ZIP デプロイは
*.scm.azurewebsites.net(Kudu/SCM)に対して飛ぶので、インフラデプロイとネットワーク条件がズレやすい - VS Code 側の設定で
pwsh -NoProfile起動になっていると、プロファイル由来の proxy 設定が読み込まれない -
-NoProfileをなくせば、意図通りの Proxy で正常動作
詳細
1. 症状:ZIP デプロイだけが落ちる
インフラ系(Bicep/ARM)は成功するのに、Functions のコードデプロイで失敗。
ZIP デプロイのコマンドはこんな感じ。
az functionapp deployment source config-zip \
-g <resource-group> \
-n <function-app-name> \
--src $zipPath \
--build-remote
2. ZIP デプロイは「SCM(Kudu)」へ飛ぶ
ZIP デプロイは SCM(Kudu) 側に対して要求が飛ぶ(https://<app>.scm.azurewebsites.net/...)。
なので、同じ Azure に対して操作していても、
- インフラ(ARM)
- アプリ(SCM/Kudu)
で 到達経路やプロキシ判定が変わる からだめなのか? ![]()
ZIP デプロイの仕組み自体は Azure Functions の公式ドキュメントにまとまっている。
3. いったん「証明書/CA」方向も疑う(ただし本筋ではなかった)
プロキシ配下で certificate verify failed 系が出ると、CA バンドル指定(REQUESTS_CA_BUNDLE など)に寄せたくなる。
この方向性自体は公式のトラブルシューティングにも出てくる。
Azure CLI のプロキシ/証明書系のトラブルシューティング。
ただし今回の本筋はここじゃなかった。
4. 原因:VS Code が pwsh -NoProfile で起動していた
VS Code の設定で PowerShell が -NoProfile 付きにしていて、PowerShell のプロファイルが読み込まれていなかった
プロファイルには、
-
HTTP_PROXY/HTTPS_PROXY NO_PROXY- 社内向けのプロキシ初期化
みたいな設定が入っていたが、プロファイルが読まれない=意図した proxy が効かない になっていた
PowerShell のプロファイルと -NoProfile の挙動は公式にも書かれている。
- about_Profiles:
- about_PowerShell_exe(
-NoProfileパラメータ):
5. 対処:-NoProfile を外して再実行
VS Code 側の設定(例:.vscode/settings.json など)で、PowerShell 起動引数から -NoProfile を外す。
その状態で同じ ZIP デプロイを再実行したところ、以下のように 202 Accepted(デプロイ受付) まで到達。
WARNING: Getting scm site credentials for zip deployment
WARNING: Starting zip deployment...
WARNING: Deployment endpoint responded with status code 202
202 Accepted は「要求が受理され、非同期でデプロイが進む」意味。
この時点で即「完了」ではないけど、少なくとも TLS/プロキシで握りつぶされず、SCM 側に届いた ことの証跡
あとがき
「証明書をどうするか」って方向に寄りがちだったけど、そもそも 想定していた proxy 設定が PowerShell プロファイルでしか入っていなかった のが盲点だった。
別件で、 Integrated Terminal の問題(同一環境になって困る)があったので、 -NoProfile を付けて試していたことをすっかり忘れていた
気付いたきっかけは、別環境では特に問題なかった事
で、あれ?環境問題ってことに気付いて、Proxy を確認したところ、意図したものじゃないものになってることに気付いて解決できた。
一時的にお試しした際は、ちゃんと、変更差分をみて戻すなりしておかないとですね・・ ![]()
参考リンク
- Azure Functions の ZIP デプロイ(zip push deployment)
- Azure Functions のデプロイ方式(全体像)
- Azure CLI トラブルシューティング(プロキシ/証明書の考え方含む)
- PowerShell プロファイル(起動時に何が読まれるか)
-
pwshの-NoProfile(起動引数)
- VS Code ターミナル基礎(補足)