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

Flex Consumption SKU函数应用Zip Deploy调用Kudu API返回404

解决Flex Consumption函数应用Kudu API部署失败问题

问题根源

Flex Consumption SKU的函数应用不兼容传统Kudu的/api/zipdeploy接口,这是你收到404错误的直接原因。而/api/publish?type=zip接口虽然返回OK,但该接口在Flex Consumption环境下仅做请求校验,不实际执行部署逻辑,因此部署无效果。

正确部署方案

针对Flex Consumption SKU,需使用专属的部署端点,而非传统Kudu接口,具体操作如下:

1. 获取部署凭据

通过az cli获取函数应用的发布凭据(既然az cli能正常部署,说明网络策略允许该请求):

az webapp deployment list-publishing-profiles --name <你的函数应用名称> --resource-group <你的资源组名称> --query "[?publishMethod=='Zip'].{username:userName, password:userPWD}" -o tsv

执行后会得到发布用户名、密码两个关键值。

2. 使用正确的Zip Deploy端点

替换原Kudu接口为Flex Consumption专属端点:
https://<你的函数应用名称>.azurewebsites.net/admin/zipdeploy

3. 编写bash部署脚本

用curl调用专属端点,带上基础认证信息:

# 替换为你的实际信息
FUNCTION_APP="your-function-app-name"
ZIP_FILE="./deploy-package.zip"
PUB_USER="你的发布用户名"
PUB_PWD="你的发布密码"

# 发起部署请求
curl -X POST "https://$FUNCTION_APP.azurewebsites.net/admin/zipdeploy" \
  -u "$PUB_USER:$PUB_PWD" \
  --data-binary @"$ZIP_FILE" \
  -H "Content-Type: application/zip"

4. 验证部署结果

接口返回202 Accepted表示部署请求已被接受,后台会异步处理。可通过以下命令查看部署日志确认状态:

az functionapp deployment log list --name <你的函数应用名称> --resource-group <你的资源组名称>

为什么az cli/GitHub Action能正常工作?

az cli和GitHub Action的部署逻辑已内置适配Flex Consumption SKU,会自动切换到专属部署端点,因此不会遇到Kudu接口的兼容性问题。

额外注意事项

  • 确保VNet防火墙允许对https://<你的函数应用名称>.azurewebsites.net的443端口访问(部署请求直接发往主域名,而非scm子域名)。
  • 若使用MSI认证替代发布凭据,可通过以下方式调用接口:
# 获取Azure访问令牌
TOKEN=$(az account get-access-token --resource "https://management.azure.com/" --query accessToken -o tsv)

# 发起部署请求
curl -X POST "https://$FUNCTION_APP.azurewebsites.net/admin/zipdeploy" \
  -H "Authorization: Bearer $TOKEN" \
  --data-binary @"$ZIP_FILE" \
  -H "Content-Type: application/zip"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:06:07