簡體   English   中英

提供來自 Google Cloud Storage 的 static SPA 和來自 Google App Engine 的 API

[英]Serve static SPA from Google Cloud Storage and API from Google App Engine

我有一個 static web 客戶端 SPA,由 REST ZDB974238714831DE634A7CED1 提供服務我試圖找出在谷歌雲平台上托管這些應用程序的最佳方式,使用 App Engine 托管 API,並使用雲存儲托管 static web 客戶端。

如果我從頭開始這樣做,一個簡單的反向代理可以管理 API 和客戶端資產之間的路由流量。 為了對 GCP 做同樣的事情,我查看了以下內容:

  • Google 的 Compute Engine 支持基於內容的負載平衡:盡管 App Engine 沒有等效項
  • App Engine 上的 API 可以將請求代理到 Cloud Storage,但代價是 API 服務上的不必要負載
  • 只需將 API 和客戶端托管在不同的域(分別為 App Engine 和 Cloud Storage)上,並正確配置跨源問題
  • 使用Google Cloud Endpoints作為反向代理在 App Engine 和 Cloud Storage 之間適當地路由流量:尚未完全探索此選項,盡管在撰寫本文時,Cloud Endpoints 不支持路由到多個主機(僅在 v3 的OpenAPI 規范)。

以上所有都有局限性。 我正在嘗試做的似乎相當傳統,但我不確定 GCP 上阻力最小的路徑是什么。

Google Cloud 存儲允許您托管 static 網站: https://cloud.google.com/storage/docs/hosting-static-website

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

如果您需要基於路由設置負載均衡器,或者需要設置 ssl 證書,您可以使用存儲桶作為服務后端: https://cloud.google.com/compute/docs/load-balancing/http/backend -桶

正如您正確地觀察到的那樣,您的設置可能會出現許多復雜情況。 谷歌雲存儲只是一個存儲,它可能不一定像你想要的那樣管理對 GAE 的請求。 也許,在這種情況下使用 Endpoints 將是一個更可行的解決方案(考慮到您列出的選項),您可以使用簡單的 Javascript 從 Google Cloud Storage 中的應用程序文件調用 GAE 應用程序中的 Endpoints。 但是,話雖如此,我認為更好的選擇是將您的 static 文件移動到 App Engine 中,如此所述。 這將減輕在兩種不同技術之間管理資源的復雜性

讓我們談談從 Google App Engine 提供 SPA static 文件。

SPA 需要為單個索引提供許多路由。html,通常稱為rewrite規則。 App Engine 可以通過正確配置的app.yaml handlers部分來做到這一點。

對於真實文件部分,您提供真實路徑:

- url: /assets/
  static_dir: path/to/real/files

對於這些假路由,提供入口點 index.html:

- url: /
  static_file: path/to/index.html
  upload: path/to/index.html
- url: /.*
  static_file: path/to/index.html
  upload: path/to/index.html

通過這種配置,Google 前端將提供 static 文件,而不會影響您的后端。

這是一個 Angular 應用程序,我部署到 App Engine,例如

有關保護 API 和 CORS 策略的其他內容,您可以考慮使用dispatch.yaml以避免跨域問題。 或者從具有雲端點的不同域提供服務(配置了 IAP jwk)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM