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

如何向同一Azure Function App添加第二个函数(避免覆盖)

解决Azure Function App部署多函数时覆盖原有函数的问题

问题根源

你当前使用的GitHub Action是将指定路径下的内容全量打包部署到Azure,会直接替换Function App上已有的所有文件。如果第二个函数没有和第一个函数放在同一个项目目录结构中,单独部署第二个函数时自然会覆盖掉第一个。

解决步骤

1. 调整项目目录结构

所有函数必须放在同一个Azure Function项目根目录下,标准结构如下:

项目根目录/
├── 函数1文件夹/
│   ├── __init__.py
│   ├── function.json
│   └── 其他相关文件
├── 函数2文件夹/
│   ├── __init__.py
│   ├── function.json
│   └── 其他相关文件
├── requirements.txt  # 所有函数共享的依赖文件
└── host.json         # Function App全局配置文件

每个函数单独占用一个文件夹,通过各自的function.json定义触发规则等配置,根目录放置所有函数共享的依赖和全局配置。

2. 检查GitHub Action路径配置

你的当前配置里AZURE_FUNCTIONAPP_PACKAGE_PATH: '.'已经指向项目根目录,只要项目结构符合上述要求,这个配置无需修改。如果之前你是单独部署某个函数的文件夹,需要将该参数改回项目根目录路径。

3. 可选:启用增量部署(单独部署单个函数不影响其他)

如果需要单独部署某个函数又不想覆盖现有函数,可以在Azure/functions-action步骤中添加clean: false参数,禁止部署时清空现有文件:

- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
    app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
    package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
    publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}
    scm-do-build-during-deployment: true
    enable-oryx-build: true
    clean: false  # 新增该行,保留Function App上的现有文件

⚠️ 注意:使用该参数时,要确保新部署的文件不会与现有文件冲突(比如不要重命名函数文件夹);如果需要删除旧函数,需手动在Azure门户操作,或者本地删除对应函数文件夹后再执行部署。

4. 验证部署结果

推送代码后查看GitHub Action的部署日志,确认无报错。登录Azure门户进入你的Function App,在「函数」列表中应该能看到两个函数都已正常存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:56:33