【问题标题】:Calling a private Cloud function from React App hosted in App Engine从 App Engine 中托管的 React App 调用私有云函数
【发布时间】:2021-10-04 06:20:56
【问题描述】:

我有一个具有以下资源的 Google Cloud 项目:

  1. App Engine 标准环境,托管前端(基本上是 react-app)。
  2. 私有的 Google Cloud 函数

现在,我想通过以下场景从 react-app 调用函数

  1. Allow only internal traffic设置为云函数:只有App Engine flexible environments可以调用该函数,所以排除
  2. 使用CORS进行身份验证:客户端仍然可以调用该函数。
  3. 制作云函数public:会让大家调用函数,私有API不建议这样做
  4. 使用 Google Cloud API 调用函数:这将在前端公开我的 Google Cloud API 密钥。

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

【问题讨论】:

    标签: google-app-engine google-cloud-platform google-cloud-functions


    【解决方案1】:

    您不能使用 App Engine 调用具有 ingress = internal only 的 Cloud Functions(或 Cloud Run)。看我的回答here

    为了保护您的云功能,您可以依赖 IAM 服务。如果您的 App Engine 服务调用您的云函数(我的意思是您有在 App Engine 上运行的后端代码,而不是在用户浏览器中运行的静态 JS 文件),您只能授予 App Engine 服务帐户(您现在可以customize the service account to run with your App Engine service ) 调用云函数的权限。

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

    如果代码在用户浏览器上运行(因为您的 App Engine 仅提供静态文件),您可以使用代理层添加安全过滤,例如 API Gateway。您可以查看此answer

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 2019-03-02
      • 2011-04-18
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      相关资源
      最近更新 更多