从VS Code部署Python Azure Functions后设置WEBSITE_RUN_FROM_PACKAGE致函数消失
ZIP包结构不符合要求
这是最常见的原因。Azure Functions要求ZIP包根目录直接包含函数代码、host.json等核心文件,不能把代码嵌套在子文件夹里。比如打包时如果选了整个项目文件夹,ZIP里会多一层目录,Functions识别不到里面的函数。
解决:重新打包,确保打开ZIP就能看到host.json和各个函数文件夹,不要嵌套多余层级。Blob存储的ZIP文件权限不足
如果Blob是私有状态,函数应用没有权限读取这个ZIP包,就加载不出函数。直接用Blob的默认URL访问不了私有Blob。
解决:要么把Blob设置为“匿名读取”权限(适合测试,生产环境不建议),要么生成带读取权限的SAS URL,把这个SAS URL填到WEBSITE_RUN_FROM_PACKAGE里。配置的URL格式错误
要确保填的是ZIP文件的直接访问URL,不是Blob容器的URL或预览页URL。正确格式类似https://xxx.blob.core.windows.net/container/your-function-package.zip(带SAS的话后面会跟?sv=xxx这类参数)。
解决:复制Blob的URL(或SAS URL)时,确认指向具体ZIP文件,不要选错地址。函数应用未重启
修改WEBSITE_RUN_FROM_PACKAGE后,需要手动重启函数应用才能生效,自动重启可能没触发,导致新部署包没加载。
解决:在Azure门户的函数应用页面,点击顶部的“重启”按钮,等重启完成后再查看函数列表。ZIP包本身内容有问题
比如打包时漏了函数的function.json、__init__.py,或者Python依赖包没正确打包(需要把虚拟环境的site-packages内容也打包进去,或用官方func pack命令打包)。
解决:本地解压ZIP包检查,确认每个函数文件夹的必要文件都存在;如果是依赖问题,重新用func pack命令打包。
内容的提问来源于stack exchange,提问作者user15410844

