从VS Code部署Python函数到Azure Functions失败求助
解决Azure Functions部署时
Malformed SCM_RUN_FROM_PACKAGE错误的方法 针对部署Python HTTP触发函数时遇到的Malformed SCM_RUN_FROM_PACKAGE when uploading built content错误,以下是几个可行的解决步骤:
禁用Run From Package模式
登录Azure门户,进入目标函数应用,打开配置>应用设置,找到WEBSITE_RUN_FROM_PACKAGE配置项并删除,保存设置后重新尝试部署。该模式配置异常会直接导致上传构建内容时触发格式错误。使用Zip部署替代VS Code自动部署
- 本地将函数代码打包为Zip文件(需包含
__init__.py、function.json、requirements.txt等必要文件) - 执行Azure CLI命令完成部署:
az functionapp deployment source config-zip -g <你的资源组名称> -n <你的函数应用名称> --src <本地Zip文件路径>
- 本地将函数代码打包为Zip文件(需包含
清理SCM缓存
- 进入函数应用的高级工具(Kudu),点击Debug Console>CMD
- 删除
D:\home\site\wwwroot目录下的所有文件,之后重新发起部署
确认运行时版本匹配
在Azure门户的函数应用配置>常规设置中,检查运行时堆栈是否设置为Python 3.9(与本地使用的3.9.7版本匹配),版本不匹配可能导致构建后的内容无法正常上传检查存储账户权限
函数应用关联的存储账户需具备Blob存储读写权限,可在Azure门户的存储账户**访问控制(IAM)**中,确认函数应用的服务主体是否拥有Storage Blob Data Contributor角色权限
你的函数代码为标准HTTP触发实现,无语法或逻辑问题,无需修改:
import logging import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') name = req.params.get('name') if not name: try: req_body = req.get_json() except ValueError: pass else: name = req_body.get('name') if name: return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.") else: return func.HttpResponse( "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.", status_code=200 )
内容的提问来源于stack exchange,提问作者pravinnilee
相关产品推荐
相关产品推荐

