从 App Engine 中托管的 React App 调用私有云函数
Calling a private Cloud function from React App hosted in App Engine
我有一个 Google 云项目,它具有以下资源:
- App Engine 标准环境,托管前端(基本上是 react-app)。
- 私有 Google 云函数
现在,我想到了以下场景来从 react-app 调用函数
- 设置
Allow only internal traffic
为云函数:只有App Engineflexible environments
可以调用该函数,所以排除
- 使用
CORS
进行身份验证:客户端仍然可以调用该函数。
- 制作云函数
public
:会让大家调用函数,不推荐私有API
- 使用
Google Cloud API
调用函数:这会在前端公开我的 Google Cloud API 密钥。
那么是否有解决方法可以从 App Engine 标准环境调用 Cloud 函数
您不能仅通过 App Engine 调用具有 ingress = internal 的 Cloud Functions(或 Cloud 运行)。看我的回答here
要保护您的云功能,您可以依赖 IAM 服务。如果您的 App Engine 服务调用您的云函数(我的意思是您在 App Engine 上有 运行 的后端代码,而不是在用户浏览器中 运行 的静态 JS 文件),您可以仅授予 App Engine 服务帐户(您现在可以customize the service account to run with your App Engine service)调用您的云功能的权限。
当然,您的云函数是公开的,但只有经过身份验证和授权的流量才会路由到您的云函数。所有不良流量(来自互联网或其他未经授权的服务)将被 GFE(Google 前端)在调用您的云功能之前自动拒绝。因此,您只需为有效流量付费,所有不良流量都会被google丢弃。
如果代码 运行s 在用户浏览器上(因为您的 App Engine 只提供静态文件),您可以使用代理层来添加安全过滤,例如 API Gateway.You可以看看这个
我有一个 Google 云项目,它具有以下资源:
- App Engine 标准环境,托管前端(基本上是 react-app)。
- 私有 Google 云函数
现在,我想到了以下场景来从 react-app 调用函数
- 设置
Allow only internal traffic
为云函数:只有App Engineflexible environments
可以调用该函数,所以排除 - 使用
CORS
进行身份验证:客户端仍然可以调用该函数。 - 制作云函数
public
:会让大家调用函数,不推荐私有API - 使用
Google Cloud API
调用函数:这会在前端公开我的 Google Cloud API 密钥。
那么是否有解决方法可以从 App Engine 标准环境调用 Cloud 函数
您不能仅通过 App Engine 调用具有 ingress = internal 的 Cloud Functions(或 Cloud 运行)。看我的回答here
要保护您的云功能,您可以依赖 IAM 服务。如果您的 App Engine 服务调用您的云函数(我的意思是您在 App Engine 上有 运行 的后端代码,而不是在用户浏览器中 运行 的静态 JS 文件),您可以仅授予 App Engine 服务帐户(您现在可以customize the service account to run with your App Engine service)调用您的云功能的权限。
当然,您的云函数是公开的,但只有经过身份验证和授权的流量才会路由到您的云函数。所有不良流量(来自互联网或其他未经授权的服务)将被 GFE(Google 前端)在调用您的云功能之前自动拒绝。因此,您只需为有效流量付费,所有不良流量都会被google丢弃。
如果代码 运行s 在用户浏览器上(因为您的 App Engine 只提供静态文件),您可以使用代理层来添加安全过滤,例如 API Gateway.You可以看看这个