从应用引擎中托管的React应用调用私有云函数



我有一个Google Cloud项目,它有以下资源:

  1. App Engine标准环境,它承载前端(基本上是react-app)。
  2. 私有Google Cloud功能

现在,我考虑以下场景从react-app

调用函数
  1. 设置Allow only internal traffic为云功能:只有App Engineflexible environments可以调用该功能,因此排除
  2. 使用CORS认证:客户端仍然可以调用该函数
  3. 使云函数public:将允许每个人调用该函数,不建议用于私有API
  4. 使用Google Cloud API调用函数:这将在前端暴露我的Google Cloud API密钥。

那么有没有办法从App Engine标准环境中调用Cloud函数

你不能用ingress = internal调用Cloud Functions(或Cloud Run),只能用App Engine。看我的答案在这里

为了保证云功能的安全,您可以依赖IAM服务。如果你的应用引擎服务调用你的云函数(我的意思是你的后端代码在应用引擎上运行,而不是在用户浏览器中运行的静态JS文件),你只能授予应用引擎服务帐户(你现在可以自定义服务帐户来运行你的应用引擎服务)调用云函数的权限。

当然,你的云功能是公开暴露的,但只有经过认证和授权的流量才会被路由到你的云功能。所有不良流量(来自互联网或其他未经授权的服务)将被GFE(谷歌前端)自动拒绝,然后调用您的云功能。因此,你将只支付有效的流量,所有的坏流量被丢弃的谷歌。

如果代码在用户浏览器上运行(因为你的App Engine只提供静态文件),你可以使用代理层来添加安全过滤,比如API Gateway。你可以看看这个答案

最新更新