You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bicep部署Azure Function时遭遇Bad Request错误求助

Flex消耗计划下Bicep部署Azure Python函数失败的问题排查与解决

问题原因分析

你遇到的BadRequest错误主要来自以下几个不兼容点:

  1. API版本适配问题:使用的2020-12-01 API版本对Flex消耗计划的支持不完善,该计划是较新的资源类型,需要匹配更新的API版本。
  2. Python代码部署方式不兼容:Flex消耗计划不支持通过Microsoft.Web/sites/functions资源的files属性直接嵌入代码,这种方式仅适用于传统消耗计划下的非Python函数。
  3. 配置项冗余错误:Python函数的触发绑定是通过代码内的装饰器声明的,不需要在Bicep的config.bindings里定义;scriptFile和entryPoint是针对C#脚本等语言的配置,对Python完全无效。

解决方案

1. 升级API版本

将Microsoft.Web/sites/functions的API版本替换为2022-09-01或更高版本,确保对Flex消耗计划的完整支持。

2. 改用部署包方式部署代码

Flex消耗计划下Python函数必须通过部署包(Zip)部署:

  • 将本地的function_app.py、requirements.txt等文件打包成Zip包。
  • 将Zip包上传到Azure Blob存储(需配置容器为公开访问或生成SAS令牌)。
  • 在Function App的应用设置中配置WEBSITE_RUN_FROM_PACKAGE指向Zip包的URL。

对应的Bicep配置示例:

// 配置Function App应用设置,指定部署包地址
resource functionAppSettings 'Microsoft.Web/sites/config@2022-09-01' = {
  parent: functionApp
  name: 'appsettings'
  properties: {
    FUNCTIONS_WORKER_RUNTIME: 'python'
    PYTHON_VERSION: '3.11'
    WEBSITE_RUN_FROM_PACKAGE: 'https://<你的存储账户>.blob.core.windows.net/<容器名>/function-app.zip?<SAS令牌>'
    // 若使用Flex计划的文件存储,需额外配置:
    // WEBSITE_CONTENTAZUREFILECONNECTIONSTRING: '<存储账户连接字符串>'
    // WEBSITE_CONTENTSHARE: '<文件共享名称>'
  }
}

3. 简化函数资源配置

由于部署包会自动注册函数,若仍需通过Bicep声明函数资源,只需保留基础配置即可:

resource function 'Microsoft.Web/sites/functions@2022-09-01' = {
  parent: functionApp
  name: functionNameComputed
  properties: {
    config: {
      disabled: false
    }
  }
}

额外注意

  • 确保Flex消耗计划的Function App已配置正确的运行时(Python版本)和存储连接(若不使用WEBSITE_RUN_FROM_PACKAGE)。
  • 部署包中的代码需符合Azure Python函数的规范:function_app.py中需包含正确的触发装饰器(如@app.route()或@azure.functions.def_http_trigger())。

内容的提问来源于stack exchange,提问作者Dave4048

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:43:09