Cloud Run设为Internal Ingress后,如何从Cloud Function直接访问?
解决Cloud Function直接访问Internal Ingress的Cloud Run问题
核心原因
你添加VPC连接器后仍无法访问,大概率是连接器的访问模式或子网配置未匹配要求,导致Cloud Function的请求没走内部路由到Cloud Run。
具体解决步骤
- 检查VPC连接器的访问模式
进入VPC网络的「无服务器VPC访问」页面,找到你的连接器:- 确保访问模式设为
private(而非public),只有private模式才允许通过连接器访问Google托管的内部服务(比如设为Internal Ingress的Cloud Run)。
- 确保访问模式设为
- 启用子网的Private Google Access
找到连接器绑定的子网,进入子网详情页:- 开启「Private Google Access」选项,这样子网内的流量(包括通过连接器的Cloud Function流量)才能访问Google的内部API端点。
- 确认Cloud Function的VPC配置
打开Cloud Function F的配置页:- 确认已正确关联上述VPC连接器,并且勾选了「允许访问所有VPC服务」(或至少允许访问Google API服务)。
- 验证服务账号权限
即便你和Cloud Run使用同一个服务账号,也要确认:- 该服务账号被授予了Cloud Run服务R的
roles/run.invoker角色(在Cloud Run R的权限页添加即可)。
- 该服务账号被授予了Cloud Run服务R的
- 测试访问
直接在Cloud Function里调用https://XXX.a.run.app即可,此时请求会通过VPC连接器走内部路由,无需依赖负载均衡。
额外注意点
如果Cloud Run和Cloud Function不在同一个区域,需要确保两者所在的VPC是同一个,或者通过VPC peering连通,否则连接器无法跨VPC完成访问。
内容的提问来源于stack exchange,提问作者littleEinstein
相关产品推荐
相关产品推荐

