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

如何通过GitHub Action部署无全网络公网访问的Azure Function

解决方案

方法1:用Azure存储账户中转部署(无需开启函数公网访问)

核心思路是将代码先上传至Azure存储,再让处于VNet内的函数应用从存储拉取代码,GitHub Action仅与存储账户交互,完全无需访问函数的公网端点:

  • 准备一个Azure存储账户,为GitHub Action使用的Azure AD服务主体分配存储Blob数据参与者权限,无需开启存储的公网访问即可完成上传操作。
  • GitHub Action流程配置:
    1. 使用azure/login Action以服务主体身份登录Azure。
    2. 将函数代码打包为zip格式。
    3. 通过azure/storage-blob-upload Action或Azure CLI命令az storage blob upload将zip包上传至存储账户的Blob容器。
    4. 执行Azure CLI命令az functionapp deployment source config-zip,指定存储账户内zip包的路径——该命令通过Azure管理API触发函数应用从存储拉取代码,全程无需开启函数的公网访问。

方法2:改用Azure AD身份验证的ARM部署

放弃发布配置文件的用户名密码验证方式,改用Azure AD服务主体完成部署,依托Azure管理平面的权限实现代码推送:

  • 创建一个Azure AD服务主体,为其分配函数应用的网站参与者角色,确保该主体拥有部署权限。
  • GitHub Action流程配置:
    1. 使用azure/login Action传入服务主体的客户端ID、租户ID、客户端密钥完成登录。
    2. 将函数代码打包为zip格式。
    3. 使用azure/arm-deploy Action通过ARM模板配置函数应用的代码部署,或直接执行az functionapp deployment source config-zip命令——该命令基于Azure AD身份验证,无需依赖函数的公网SCM端点,全程通过Azure管理API完成部署。

方法3:配置SCM站点专用终结点+跳转机(适合已有VNet内跳转资源的场景)

若需保留发布配置文件的部署方式,可为函数应用的SCM(部署)站点创建专用终结点,再通过VNet内的跳转机或Azure Bastion建立隧道完成部署:

  • 为函数应用的SCM站点创建专用终结点,并将其纳入目标VNet的子网。
  • 在VNet内部署跳转机(或使用Azure Bastion),配置GitHub Action通过SSH隧道连接至跳转机,再访问SCM站点的专用终结点完成部署。
关键注意事项
  • 所有方案中,需确保GitHub Action使用的Azure AD服务主体拥有足够的权限(如存储Blob数据参与者、网站参与者等),避免因权限不足导致部署失败。
  • 优先使用Azure AD身份验证替代发布配置文件的明文凭据,既提升安全性,又能更好适配VNet的封闭网络环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:40:13