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

技术求助:如何通过Azure CLI在Function App中创建函数?

Hey Ben, 我之前刚好做过用Azure CLI自动化部署Functions的流程,给你分享两个实用的方法,帮你搞定在已创建的Function App下添加JavaScript HTTP触发器的需求:

方法一:本地生成函数模板 + CLI部署(推荐)

这个方法用Azure Functions Core Tools先生成标准的JS HTTP触发器模板,再通过CLI把代码部署到云端的Function App,步骤清晰且符合Azure Functions的最佳实践:

  1. 安装Azure Functions Core Tools(如果还没装的话,它是本地开发Functions的必备工具)

  2. 本地生成函数项目和触发器:

    # 初始化一个Node.js环境的函数项目
    func init MyHttpFunctionProject --worker-runtime node
    cd MyHttpFunctionProject
    
    # 创建HTTP触发器函数,自定义名字比如MyFirstHttpTrigger
    func new --template "HTTP trigger" --name MyFirstHttpTrigger --language JavaScript
    

    执行完后,本地会生成包含HTTP触发器的完整项目结构,包括function.json和index.js文件。

  3. 打包并部署到云端Function App:

    # 把当前目录的所有文件打包成zip(注意不要包含外层文件夹)
    zip -r function_package.zip .
    
    # 用CLI部署到已存在的Function App
    az functionapp deployment source config-zip \
      --resource-group <你的资源组名称> \
      --name <你的Function App名称> \
      --src function_package.zip
    

    替换命令里的资源组和Function App名称,执行后就能在云端看到新创建的HTTP触发器了。

方法二:直接调用Azure Management API(CLI无原生命令时的替代方案)

Azure CLI目前没有直接创建单个函数的命令,但可以通过az rest调用Azure的管理API来实现,适合不想本地生成代码的场景:

  1. 先获取你的Function App资源ID:

    function_app_id=$(az functionapp show \
      --resource-group <你的资源组名称> \
      --name <你的Function App名称> \
      --query id -o tsv)
    
  2. 调用API创建HTTP触发器:

    az rest --method put \
      --uri "$function_app_id/functions/MyHttpTrigger?api-version=2022-03-01" \
      --body '{
        "properties": {
          "config": {
            "bindings": [
              {
                "authLevel": "anonymous",
                "type": "httpTrigger",
                "direction": "in",
                "name": "req",
                "methods": ["get", "post"]
              },
              {
                "type": "http",
                "direction": "out",
                "name": "res"
              }
            ]
          },
          "files": {
            "index.js": "module.exports = async function (context, req) { context.log('\''JavaScript HTTP trigger function processed a request.'\''); const name = (req.query.name || (req.body && req.body.name)); const responseMessage = name ? '\''Hello, '\'' + name + '\''. This HTTP triggered function executed successfully.'\'' : '\''This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.'\''; context.res = { status: 200, body: responseMessage }; };",
            "function.json": "{ '\''bindings'\'' : [ { '\''authLevel'\'' : '\''anonymous'\'', '\''type'\'' : '\''httpTrigger'\'', '\''direction'\'' : '\''in'\'', '\''name'\'' : '\''req'\'', '\''methods'\'' : ['\''get'\'', '\''post'\''] }, { '\''type'\'' : '\''http'\'', '\''direction'\'' : '\''out'\'', '\''name'\'' : '\''res'\'' } ] }"
          }
        }
      }'
    

    这里可以根据需求修改authLevel(比如改成function或admin来限制访问)、函数名称和代码逻辑。

小提示
  • 方法一的优势是可以在本地先测试函数逻辑,再部署,不容易出错;
  • 如果是自动化脚本,两种方法都可以集成进去,方法一需要确保脚本环境里安装了Core Tools和zip工具;
  • 部署后可以用az functionapp function show命令验证函数是否创建成功:
    az functionapp function show \
      --resource-group <资源组名称> \
      --name <Function App名称> \
      --function-name <函数名称>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:49:13