Azure Function部署后调用第三方API报连接超时问题咨询
Azure Function 调用第三方公网API超时排查方案
你遇到的本地正常、Azure部署后连接超时的问题,在已完成TLS版本配置、超时调整、HTTPClientFactory+Polly重试、CORS配置的前提下,问题100%出在Azure侧出站网络规则或第三方侧对Azure出口IP的拦截上。注意CORS是控制浏览器到Function的入站跨域规则,对Function主动发起的出站请求完全无效,这步排查不解决问题属于正常情况。
需要逐项检查以下Azure侧配置:
- 确认Function出站IP是否在第三方API白名单内
公网访问场景下,不同层级的Azure Function有固定的出站公网IP池:在Function门户的「属性」页面可以查到当前实例所有的出站公网IP地址,需要把这些IP全部提交给第三方API侧加入访问白名单。这是该类问题最高发的诱因:本地开发环境的公网出口IP被第三方默认放行,Azure数据中心的出口IP如果不在白名单内,请求会被第三方防火墙直接丢包,不会返回任何拒绝响应,最终触发你看到的连接超时错误。 - 检查VNet集成相关的网络规则
如果你的Function开启了VNet集成、或者部署在专用ASE(应用服务环境)内:- 检查VNet关联的NSG(网络安全组)出站规则,确认放行了到第三方API对应IP、端口的请求
- 如果VNet配置了强制隧道(所有出站流量引流到本地防火墙、第三方虚拟网络设备),需要在引流的防火墙设备上添加第三方API的访问白名单,同时确认路由规则没有把公网流量路由到不可达的内网地址段
- 如果你开启VNet集成后配置了「所有流量路由到VNet」,但VNet本身没有配置公网出口NAT,会直接导致所有公网出站请求不通
- 检查Function自身的出站限制
进入Function「网络」-「出站访问」配置页,确认没有配置自定义出站规则拦截公网请求;不要在Function应用配置中强行设置全局HTTP代理,默认配置下的Azure托管环境不需要额外代理即可访问公网,错误的代理配置会直接导致连接超时。
快速验证方法:在Function中新增一个测试接口,先发起请求到公开的公网服务(比如公共时间接口、公开的GET测试接口),如果公共接口可以正常访问、仅目标第三方API超时,即可确认是IP白名单/网络策略拦截问题,和代码逻辑、HTTPClient配置无关。
内容的提问来源于stack exchange,提问作者Mousumi
相关产品推荐
相关产品推荐

