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

GCP Cloud Run调用API Gateway时出现getaddrinfo ENOTFOUND errno -3008错误

问题分析与解决方案

getaddrinfo ENOTFOUND errno -3008 本质是Node.js发起请求时,无法解析目标域名对应的IP地址,核心问题出在DNS解析或网络连通性环节,以下是针对性排查步骤:

1. 核对调用地址正确性

  • 确认m2代码中使用的ag1地址与Postman完全一致,包括协议(http/https)、完整域名、端口号,排查拼写错误(比如GCP API Gateway域名通常为xxx-xxxxx.uc.gateway.dev格式,注意字符完整性)。
  • 禁止使用localhost这类本地测试地址——m2运行在Docker/GCP容器环境中时,localhost指向容器内部,而非外部的ag1服务。

2. 验证m2环境的DNS解析能力

  • 若m2部署在GKE、Cloud Run等托管服务中,进入m2容器执行解析命令测试:
    nslookup <ag1完整域名>
    # 或使用dig工具
    dig <ag1完整域名>
    
    若解析失败,说明m2所在网络环境无法识别ag1的域名。
  • 检查GCP网络配置:确认m2所在VPC与ag1的网络连通,若ag1为私有网关,需配置VPC peering确保网络互通。

3. 检查ag1的访问控制策略

  • 确认ag1是否限制了访问IP/网络范围:Postman能访问可能是因为其IP在允许列表内,而m2的服务IP未被纳入。
  • 若为私有API Gateway,需确保m2所在资源(GKE集群、Cloud Run服务)与ag1处于同一VPC,或通过VPC peering/Cloud VPN连通,同时ag1的访问策略允许m2的服务账号或IP段访问。

4. 排查Docker容器网络配置(自定义部署场景)

  • 若m2是自行部署的Docker容器,检查网络模式:非host模式下,确认容器DNS配置为GCP公共DNS(8.8.8.8)或内部DNS,避免使用无法解析外部域名的自定义DNS。
  • 测试容器出站网络:
    ping 8.8.8.8
    
    若ping不通,需检查Docker网络配置或GCP防火墙规则是否允许容器出站访问。

5. 代码层面排查

  • 检查m2的HTTP客户端代码,确认是否存在错误的代理配置:若代码中设置了代理,而代理无法解析ag1域名,也会触发该错误。
  • 临时替换为ag1的直接IP地址测试(可通过Postman调用时查看目标IP),若调用成功,可锁定为域名解析问题,重点排查DNS配置。

内容的提问来源于stack exchange,提问作者collaborate.ever

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:47:13