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

如何用private endpoints和VNet集成实现Azure Function访问存储账户

跨区域Azure Function经VNet Integration访问启用防火墙的存储账户(私有端点模式)配置指南

按这个步骤配,能省至少4天无意义的排查时间,别套VM场景加公网IP的老思路,App Service Plan的路由逻辑和VM完全不一样。

核心认知先对齐

  • 不要尝试把Function的出站公网IP加到存储防火墙规则里,跨区域VNet Integration场景下,发往存储的流量根本不会走公网出站通道,加公网IP完全无效,这是和VM场景最本质的区别。
  • 不要用旧版需要虚拟网关的VNet Integration,必须用标准SKU的区域虚拟网络集成,才支持跨全局VNet对等的流量转发。

分步配置流程

1. 存储账户侧私有端点预配置

  • 给US West区域的存储账户创建私有端点,部署到存储所在VNet的独立子网,提前关闭该子网的私有端点网络策略(默认开启,会导致私有端点路由不通)。
  • 按需添加对应子资源的私有端点:要访问Blob就选blob子资源,要访问队列/表/文件就对应选queue/table/file子资源,别只配blob导致其他服务访问不通,关联的私有DNS区域统一用privatelink.<存储服务类型>.core.windows.net格式。
  • 临时放开本地客户端IP到存储防火墙,先在本地测通私有端点本身的连通性,确认私有IP分配正常再锁防火墙。

2. Function侧VNet Integration配置

  • 给North Central US区域的Function启用VNet Integration,关联到Function所在区域的独立子网,子网地址段别和存储侧VNet段冲突。
  • 打开VNet Integration配置里的Route All开关,必须全开,不然发往存储的流量会默认走公网,直接撞存储防火墙被拦。
  • 给VNet Integration关联的子网配NSG出站规则,允许443端口出站到存储所在VNet的地址段,别开强制隧道把私有链路流量导去第三方NVA导致丢包。

3. 跨区域链路与DNS配置(90%的人卡在这里)

  • 两个区域的VNet建立全局VNet对等,对等链路双向开启「允许虚拟网络访问」「允许转发流量」,不需要开网关传输选项。
  • 把Function侧VNet的自定义DNS服务器改成能解析存储私有端点的地址:要么是存储侧VNet内部署的Azure DNS私有解析器入站IP,要么是自建的DNS转发器地址,绝对不能用默认的Azure公共DNS,不然会把存储域名解析到公网IP,根本走不到私有链路。
  • 配置完DNS重启下Function,进Kudu控制台执行nameresolver <你的存储账户名>.blob.core.windows.net,如果返回的是私有端点的10.x/172.x/192.x段内网IP,说明DNS配置正确;如果返回公网IP,回头查DNS配置,不用往下走。
  • Kudu里执行tcping <刚才解析到的存储私有IP> 443,如果能通,说明跨区域链路已经打通。

4. 存储防火墙收尾

  • 把存储防火墙公网访问切到「选定网络」,不需要加任何公网IP规则,也不需要加跨区域VNet的防火墙规则:私有端点流量会绕过公网防火墙校验,只要链路通、DNS解析对,默认就能访问。
  • 删掉之前临时加的本地客户端IP规则,锁死公网访问即可。

高频踩坑排错

  • 配完所有规则等10分钟再测,VNet路由、私有端点、DNS配置的传播有延迟,刚配完不通就反复改配置只会越排越乱。
  • Consumption/Elastic Premium版Function别尝试用服务端点连跨区域存储,服务端点不支持跨区域生效,必须走私有端点+全局对等的方案。
  • 如果开启了Function的公网访问限制,别把VNet Integration的子网段拦了,会导致VNet通道本身断连。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:09:24