如何从Cloud Function向Compute Engine发起API调用且不暴露公网?
无需暴露公网,从Cloud Function调用Compute Engine内API的方案
方案一:配置Serverless VPC Access连接器
- 创建Serverless VPC Access连接器,建立Cloud Function与目标VPC的内网通道
- 部署Cloud Function时指定使用该连接器,同时为Cloud Function的运行服务账号配置VPC内网访问权限
- 调用时直接使用Compute Engine实例的内部IP或私有DNS域名,流量完全走内网,无需公网IP
方案二:配置私有服务访问
- 在GCP私有网络中设置私有服务访问,将Cloud Function所属的服务网络与你的VPC建立对等连接
- 确保Compute Engine实例仅分配内部IP(不配置公网IP),并在VPC防火墙规则中允许Cloud Function所在子网/服务账号的流量访问实例的API端口(如80、443)
方案三:使用内部负载均衡(适用于多实例场景)
- 创建内部负载均衡器,将流量分发到后端的Compute Engine实例集群
- 通过Serverless VPC Access连接器,让Cloud Function访问负载均衡器的内部IP,避免后端实例IP变化带来的影响
- 配置防火墙规则允许来自Cloud Function的流量访问负载均衡器的监听端口
关键注意事项
- 所有资源需处于同一GCP项目,或已配置VPC对等连接的跨项目环境
- 严格检查防火墙规则,确保允许Cloud Function的来源(连接器子网IP段、服务账号)访问目标端口
- 禁止为Compute Engine实例分配公网IP,彻底切断公网访问路径
内容的提问来源于stack exchange,提问作者le Minh Nguyen
相关产品推荐
相关产品推荐

