瞭解 App Hosting 及其運作方式

App Hosting 會處理一系列複雜的背景工作,簡化應用程式的部署作業。本頁面說明工作流程中的關鍵部分,並說明您可能會想在哪些點自訂資料流,依應用程式需求而定。

架構支援

App Hosting 為使用下列架構開發的網頁應用程式提供不需設定的建構和部署支援:

  • Next.js 13 以上
  • Angular 17.2 以上版本

App Hosting 會檢查存放區中的 package-lock.json 檔案或其他鎖定檔案,以識別您使用的架構。如果您嘗試部署缺少鎖定檔案的 Node.js 應用程式,App Hosting 將無法建構及執行應用程式。您可以在根目錄中執行 npm install,藉此建立 package-lock.json

App Hosting 架構轉接器有兩個主要角色:

  1. 它們會剖析原始碼和任何特定架構的設定檔 (例如 next.config.js),以便瞭解應用程式的設定行為。
  2. 這些指令會執行應用程式的建構指令,產生靜態資產,並建立正式版應用程式的最佳化版本。

架構轉接程式會使用 npm run build 建構 Node.js 應用程式,並與每個架構的預設建構指令碼搭配使用,例如 Next.js 的 next build 和 Angular 的 ng buildApp Hosting 會嘗試使用自訂建構指令進行建構,但無法保證一定能成功。

App Hosting 存放區整合功能的運作方式

Developer Connect 是 Google Cloud 針對外部 DevOps 工具的連線平台,負責處理 GitHub 存放區和 App Hosting 後端之間的重要連結。在建立 App Hosting 後端時,Developer Connect 的 UI 工作流程會引導您安裝 Firebase GitHub 應用程式。這個程序的重要步驟如下:

  1. 您將「Developer Connect」授予「Secret Manager 管理員」角色。這樣一來,系統就能在 Cloud Secret Manager 中,以「密鑰」的形式安全地儲存憑證。
  2. 您授權 Firebase GitHub 應用程式存取 GitHub 存放區
  3. Developer Connect 會在專案的 Secret Manager 存放區中儲存專屬的 GitHub 授權權杖,請勿修改或刪除這組權杖。

此外,App Hosting 會整合 GitHub 檢查 API,提供推出版本的檢查功能。這項檢查可讓您在 GitHub 中查看推行狀態,並在發生錯誤時偵錯部署程序。

與 Firebase 和其他 Google 服務整合

App Hosting 會設定建構和執行階段環境,讓您可以使用 Google 應用程式預設憑證初始化 Firebase Admin SDK。這樣一來,後端就能在建構和部署期間與其他 Firebase 產品通訊。

App Hosting 個位置

App Hosting 部署作業會在特定位置建立後端資源。這種彈性的網頁應用程式位置有幾項重要優點:

  • 將資料放置在距離使用者較近的地理位置,藉此提升效能並縮短延遲時間。
  • 某個地區中的 App Hosting 發生災難性失敗,不會影響部署在其他區域的網頁應用程式。

您可以在控制台或 Firebase CLI 中建立 App Hosting 後端時,選擇下列任一區域:

  • us-central1 (愛荷華州)
  • asia-east1 (台灣)
  • europe-west4 (荷蘭)

App Hosting 後端服務帳戶

在建構和執行階段期間,App Hosting 後端會使用服務帳戶驗證其他 Google 服務。系統會在您首次在 Firebase 專案中啟用 App Hosting 時,為這些用途建立預設服務帳戶:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

根據預設,這個服務帳戶會套用至所有後端,而且擁有最低限度的權限,可讓您建構、執行及監控應用程式。此外,這個帳戶還擁有使用應用程式預設憑證驗證 Admin SDK 的權限,可執行從 Cloud Firestore 載入資料等作業。請參閱 Firebase App Hosting 角色

如果應用程式需要在建構期間或從執行中的後端與其他 Google 服務互動,您可以新增角色來自訂預設服務帳戶。舉例來說,如果應用程式需要 Vertex AI 權限,您可能需要新增 roles/aiplatform.user 或某些相關角色。

重要詞彙和定義

  • 後端App Hosting 建立用於建構及執行網頁應用程式的管理資源集合。
  • 推出:連結至 Git 修訂版本的運作中應用程式特定版本。
  • 正式版分支:GitHub 存放區的分支,會部署至正式版網址。通常是指將功能分支或開發分支合併的分支。

已知問題和限制

App Hosting 預先發布版有一些已知的限制:

  • 在某些情況下,App Hosting 後端可能會在應用程式的網址中傳回 Intermittent connection error 訊息。我們將在後續版本中提供修正項目。
  • 我們已修改 Cache-Control 標頭,將 CDN 快取時間限制在 60 秒;未來當 App Hosting 能夠在部署時快速清除快取時,這項限制就會解除。
  • 根據預設,系統會在 Cloud Run 中完成圖片最佳化,不會保留最佳化的圖片,因此建議您停用圖片最佳化功能或手動指定載入器,直到有更好的解決方案可用為止。
  • 未快取的靜態檔案會由 Cloud Run 提供;在後續版本中,這些檔案會從 App Hosting 來源儲存及提供,以提升效能。
  • App Hosting SKU 可能不會顯示在 Firebase 控制台的後端用量頁面中。我們將在後續版本中提供這些功能。
  • Firebase 主控台在建立後端時,可能會間歇性顯示「找不到並且無效的版本」錯誤。
  • 目前,同一項專案中的所有後端會共用 GitHub 機構/帳戶。這些檔案可連結至該機構/帳戶下的不同存放區。如要建立連接至不同 GitHub 帳戶的後端,請將後端置於不同專案中。
  • Next.js 中介軟體、重寫和重新導向會在 CDN 後方的 Cloud Run 中執行。因為這些指令無法保護快取回應,請務必為轉譯的內容設定適當的控制指令