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

如何通过Azure Resource Manager API创建Azure Function App v4及函数?

Azure Function App v4 通过ARM API创建函数的正确方式

核心结论

是的,v4编程模型下不能再通过传入bindingsConfig到CreateOrUpdateAsync()来创建函数。因为v4采用「代码优先」的绑定声明模式,绑定直接定义在业务代码中(比如C#用特性标注),不再依赖function.json配置文件;而ARM API的SiteFunctions.CreateOrUpdateAsync()本质是基于function.json的配置逻辑,这套流程对v4模型完全不适用。

错误原因解析

你碰到的"<my-func-name> is not a valid function name"错误,根源在于v4函数的命名逻辑变更:v4函数的名称由代码中的注解/特性直接定义(比如C#里函数的方法名或[Function]特性指定的名称),而非通过ARM API手动指定。当你用旧方式传入配置时,ARM服务无法识别这种不符合v4模型的创建请求,因此返回400错误。

正确实现流程

v4模型下,创建函数的核心是部署包含函数代码的应用包,而非通过ARM API直接配置绑定或函数元数据,具体步骤如下:

  1. 编写v4规范的函数代码
    直接在代码中声明绑定与函数标识,比如C#示例:

    public static class MyFunctions
    {
        [Function("my-func-name")] // 此处指定的名称即为函数的唯一标识
        public static HttpResponseData Run(
            [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
        {
            var response = req.CreateResponse(HttpStatusCode.OK);
            response.WriteString("Hello from v4 function!");
            return response;
        }
    }
    
  2. 打包并部署代码到Function App

    • 将代码编译打包为符合Azure Functions要求的zip包(包含编译后的程序集、依赖项等);
    • 通过ARM API、Azure CLI或PowerShell完成部署,比如Azure CLI命令:
      az functionapp deployment source config-zip --resource-group <你的资源组名> --name <你的函数应用名> --src <本地zip包路径>
      
    • 如果用.NET SDK的ARM客户端实现,可调用WebSiteExtensions相关的部署接口,或使用CreateOrUpdateDeploymentSlotAsync方法上传部署包。
  3. 自动注册函数
    部署完成后,Azure Functions runtime会自动扫描代码中的函数定义,完成注册并创建对应的函数实例,无需再调用SiteFunctions.CreateOrUpdateAsync()。

补充说明

如果需要通过ARM API实现自动化管理,重点应放在Function App本身的资源配置(比如指定runtime版本为~4),函数的定义与更新完全通过代码部署来完成。v4模型彻底实现了函数定义与基础设施配置的解耦,代码即配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:06:00