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

Python消费计划Azure Function无法连接带防火墙的Blob存储

消费计划Function App无法访问受限Blob存储的原因与解决办法

核心问题:你漏了区域级的Functions服务IP范围

消费计划的Function App不是固定使用「网络」页面显示的那几个出站IP,它的出站流量是从所在区域的Azure Functions公共IP池里随机选取的。页面里的静态IP只是当前实例在用的一部分,当函数自动扩容、实例重启,或者Azure更新IP池时,就会用到池里的其他IP——你只添加了静态IP,自然会被防火墙拦截。

必须添加的IP范围

要让Function App稳定访问Blob存储,需要添加两类IP到防火墙允许列表:

  • 所在区域的Azure Functions服务IP段:这是整个区域Functions服务共用的IP池,每月会更新。你需要从Azure的官方IP范围列表里提取对应区域的Functions相关段。
  • 你已经添加的那批Function App静态出站IP:作为补充,覆盖当前实例的访问情况。

操作步骤

  1. 获取最新的Azure IP范围JSON文件,找到你Function App所在区域的AzureCloud.<区域>条目,提取其中service为Functions的所有IP段。
  2. 把这些IP段批量导入Blob存储的防火墙允许列表。
  3. 记得每月更新一次IP范围,因为Azure会定期调整服务IP池。

低成本替代方案(不用升级到高级计划)

如果嫌每月更新IP麻烦,还有两个低成本选项:

  • 用托管标识+IAM权限绕防火墙:给Function App启用系统分配的托管标识,然后在Blob存储的IAM里给这个标识分配「存储Blob数据参与者」权限。之后修改代码用Azure AD认证访问Blob(Python可以用azure-storage-blob库的DefaultAzureCredential),同时把Blob存储防火墙设置为「允许受信任的Azure服务访问」——这个选项虽然范围宽,但同一租户下的服务访问是安全的,适合你的场景。
  • 注意:如果要更严格的访问控制,还是推荐添加IP范围的方案。

验证方法

改完配置后,触发一次函数执行,然后去Blob存储的「监控」>「日志」里查询StorageBlobLogs,筛选StatusText为AuthorizationFailure的请求,确认有没有还被拦截的IP,要是没有就说明配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:05:17