【问题标题】:Serve static SPA from Google Cloud Storage and API from Google App Engine提供来自 Google Cloud Storage 的静态 SPA 和来自 Google App Engine 的 API
【发布时间】:2018-06-12 15:06:28
【问题描述】:

我有一个由 REST API 提供服务的静态 Web 客户端 SPA。我正在尝试找出在 Google 的云平台上托管这些应用程序的最佳方式,使用 App Engine 来托管 API,并使用 Cloud Storage 来托管静态 Web 客户端。

如果我从头开始这样做,一个简单的反向代理可以管理 API 和客户端资产之间的路由流量。为了对 GCP 做同样的事情,我查看了以下内容:

  • Google 的 Compute Engine 支持 content-based load balancing:虽然 App Engine 没有等效项
  • App Engine 上的 API 可以将请求代理到 Cloud Storage,但代价是 API 服务上的不必要负载
  • 只需将 API 和客户端托管在不同的域(分别为 App Engine 和 Cloud Storage)上,并正确配置跨源问题
  • 使用 Google Cloud Endpoints 作为反向代理在 App Engine 和 Cloud Storage 之间适当地路由流量:尚未完全探索此选项,但截至撰写本文时,Cloud Endpoints 确实使用了 not support routing to multiple hosts(仅在 v3 中定义) OpenAPI 规范)。

以上所有内容都有局限性。我正在尝试做的事情似乎相当传统,但我不确定 GCP 上阻力最小的路径是什么。

【问题讨论】:

标签: google-app-engine google-cloud-platform google-cloud-storage google-cloud-endpoints


【解决方案1】:

谷歌云存储允许您托管一个静态网站: https://cloud.google.com/storage/docs/hosting-static-website

您不需要使用 Endpoint 或 AppEngine 作为反向代理

如果您需要根据路由设置负载均衡器,或者需要设置 ssl 证书,您可以使用存储桶作为服务后端: https://cloud.google.com/compute/docs/load-balancing/http/backend-bucket

【讨论】:

  • 我正在使用 App Engine 来托管 API,因此确实需要一些方法来路由 API(例如 /api/this/1/api/that/2)和客户端资产(例如 /index.html、@)的请求987654328@).
  • 使用负载均衡器和存储桶作为后端服务可能是一个解决方案。您可以在页面路径上设置规则库:cloud.google.com/compute/docs/load-balancing/http/url-map
  • 如何将 App Engine 与负载平衡器集成?鉴于该应用程序引擎 (afaik),管理它自己的负载平衡。
  • 嗯.. 你说得对。您无法在子域上托管您的 api 吗? api.domain.com ?在 AppEngine 上,没有很多可能的设置..
  • 我认为更好的选择是将静态文件移动到 App Engine 中,如 here 所述。这将简化在两种不同技术之间管理资源的复杂性
【解决方案2】:

正如您正确观察到的,您的设置可能会出现许多复杂情况。谷歌云存储只是一个存储,它可能不一定像你想要的那样管理对 GAE 的请求。也许,在这种情况下使用 Endpoints 将是一个更可行的解决方案(考虑到您列出的选项),您可以使用简单的 Javascript 从 Google Cloud Storage 中的应用程序文件调用 GAE 应用程序中的 Endpoints。但是,话虽如此,我认为更好的选择是将静态文件移动到 App Engine 中,如 here 所述。这将简化在两种不同技术之间管理资源的复杂性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2014-05-02
    • 2021-01-06
    • 1970-01-01
    相关资源
    最近更新 更多