调用GCP Cloud Run服务时遇getaddrinfo ENOTFOUND 500错误求配置方案
Cloud Run服务间调用出现
getaddrinfo ENOTFOUND 500错误的解决方案 问题场景
当前集成流程:angular app -> GCP apigw-1.com/api1 -> GCP Cloud Run micro-1.com/api1 -> GCP Cloud Run apigw-2.com/api2
以下调用均正常:
- angular app 经apigw-1.com/api1可正常访问micro-1.com/api1
- Postman直接调用apigw-2.com/api2无异常
但micro-1.com/api1调用apigw-2.com/api2时,触发getaddrinfo ENOTFOUND 500内部服务器错误,需通过GCP端配置解决该问题。
核心原因
该错误本质是DNS解析失败,或服务间调用的权限/网络配置缺失,导致micro-1无法定位或访问apigw-2服务。
具体配置步骤
1. 确认调用域名正确性
Cloud Run服务的有效调用域名需符合以下格式:
- 完全限定域名(FQDN):
[服务名]-[随机哈希]-[地区].a.run.app(可在Cloud Run服务详情页获取) - 同项目内部简化域名:
[服务名].run.app(仅当服务配置了内部访问权限时可用)
若使用自定义域名apigw-2.com,需确保该域名已在GCP DNS中正确映射到Cloud Run服务,且调用方网络可解析该域名。
2. 配置服务访问权限
被调用方(apigw-2)
- 进入GCP控制台Cloud Run页面,打开apigw-2服务的配置编辑界面
- 在「连接性」模块,选择:
- 若仅允许内部服务调用:「允许内部流量和云负载平衡流量」
- 若需同时支持外部+内部调用:「允许所有流量」
- 保存配置
调用方(micro-1)
确保micro-1的服务账号(默认格式:[项目编号]-compute@developer.gserviceaccount.com)在apigw-2所在项目中拥有roles/run.invoker权限:
- 进入apigw-2服务的「权限」页面
- 点击「添加权限」,输入micro-1的服务账号邮箱
- 选择「Cloud Run Invoker」角色,完成授权
3. VPC网络配置检查(若使用VPC连接器)
如果micro-1配置了VPC连接器访问内部资源,需确保:
- VPC连接器的子网与apigw-2所在网络互通
- 连接器已启用DNS解析功能,可解析Cloud Run服务域名
- 跨项目场景下,已配置VPC peering及相应的DNS转发规则
4. 验证调用
配置完成后,在micro-1服务中使用正确的域名发起调用,测试是否恢复正常。
内容的提问来源于stack exchange,提问作者Ramesh Mohan Reddy
相关产品推荐
相关产品推荐

