我将我的一个云函数的连接设置更改为‘只允许内部流量’设置。
我的nodejs应用程序运行在同一个项目中,与我的云功能相同。我从云函数中删除了'allUser'访问,并添加了作为云函数的调用者。
但是当我从我的nodejs应用程序调用这个函数时,我得到了403个错误。我能做些什么来解决这个问题?
我遵循这一点作为指导:这里
------------------UPDATE----------------
非常感谢下面的解释。现在它已经开始有意义了。因此,我的设置如下:
云功能侧:
App引擎(节点js)侧:
当我在函数公开可用时调用它时,我使用的是给定的主机名。现在,我的帖子请求如下所示:
const optionsCFS = {
hostname: "10.8.0.0",//process.env.CLOUD_URL,
port: 443, //(tried 28 as well)
timeout: 5000,
path: process.env.CLOUD_ORDER_SAVE_PATH, // remaining path
method: 'POST',
headers: {
'Content-Type': 'application/application-json',
'Content-Length': CFSdata.length,
//'charset': 'utf-8'
}
}
console.log('Going to call CF ')
const orderReq = https.request(optionsCFS, resCFServer =>
{ // Do something })我得到错误502 -坏网关。
发布于 2021-02-17 20:25:11
当您将通信量设置为仅内部时,您会对云函数(或者云运行,这是相同的行为)说:
然而,你并没有说:
区别很重要,因为即使您将云函数(或云运行)设置为入口模式Allow internal traffic only,该服务仍然公开在互联网上,仍然可以公开访问,但是服务前面的网关(我猜是Google前端)执行另一个检查:“您来自VPC吗?”
此检查基于仅存在于内部Google网络中的流量元数据(这也意味着通信量停留在Google主干中,以保留这些元数据)。
所以我继续我的解释..。当您将无服务器VPC连接器设置为App时,只能将私有通信量路由到符合RFC 1918的VPC连接器。
然而,正如所解释的,云函数和云运行服务可以在互联网上访问,而不是在私有IP上(符合RFC 1918)。因此,您的App流量不会通过无服务器的VPC连接器,也不能在入口检查期间被接受为“内部”通信量。
通过云函数和云运行,您可以将vpc-egress值设置为private-ranges-only (类似于App的默认行为,只路由RFC 1918范围内的in )或all。这是您需要使用的最新模式,用于从云函数或云运行中调用内部唯一服务。
https://stackoverflow.com/questions/66245642
复制相似问题