我有一个在计算实例中运行的服务,可以使用这样的私有 IP 地址访问(https://172.31.93.233/proxy.php)。我想从云功能发出 https 请求以访问此服务,因此我创建了一个连接到 VPC 的连接器(IP 范围:172.31.0.0/28),其 IP 范围为:172.30.0.0/16 并且连接器具有入口设置(允许所有流量)和出口设置(通过 VPC 连接器路由所有流量)。但不知何故,我的函数未能完成请求并在日志中说明:“函数执行耗时 60002 毫秒,完成状态:‘超时’VPC 和函数都在同一个区域(us-central1)
额外的附加信息:实际上主要的 https 服务部署在 AWS 端,我使用站点到站点 VPN b/w AWS 到 GCP 来使用 GCP 访问此服务。我可以确认在我连接到 VPN 的同一 VPC 下的 GCP 计算实例上可以访问此服务。
我在创建函数时通过 Web 控制台创建了一个无服务器连接器。在 IAM 中,我可以看到服务帐户的以下权限:
1: Serverless VPC Access Service Agent(Serverless VPC Access Admin, Serverless VPC Access Service Agent)
2: Google Cloud Functions Service Agent(Cloud Functions Service Agent, Serverless VPC Access Admin)
3:我自己的帐户,我从 GCP 测试功能(编辑,所有者,无服务器 VPC 访问管理员)
还有其他服务帐户,但我认为它们与测试功能等无关或不感兴趣。
这是我的示例函数代码:
var http = require('https');
exports.helloWorld = (req, res) => {
http
.get('https://172.31.93.233/proxy.php?api=catalogos_direcciones', resp => {
let data = ''
resp.on('data', chunk => {
data += chunk
})
resp.on('end', () => {
let peopleData = JSON.parse(data)
console.log(peopleData);
res.status(200).json(peopleData);
})
})
};