瞭解應用程式託管及其運作方式

應用程式託管會處理一系列複雜的背景工作,簡化應用程式部署作業。本頁說明該工作流程的重要部分,提供根據應用程式需求自訂流程的重點資訊。

架構支援

針對在這些架構中開發的網頁應用程式,應用程式託管提供無須設定所需的建構及部署支援:

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

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

App 託管架構轉接器有兩種主要角色:

  1. 這些程式庫會剖析原始碼和任何架構專用的設定檔 (例如 next.config.js),以便瞭解應用程式的設定行為。
  2. 這些資料庫會執行應用程式的建構指令,產生靜態資產並建立用於實際工作環境的最佳化應用程式版本。

架構轉接器會使用 npm run build 建構 Node.js 應用程式,最適合搭配每個架構的預設建構指令碼使用:Next.js 適用的 next build,以及適用於 Angular 的 ng build。應用程式託管會嘗試使用自訂建構指令進行建構,但無法保證一定能成功執行。

應用程式託管存放區整合功能的運作方式

GitHub 存放區和應用程式託管後端之間的重要連線是由 Developer Connect 處理,這是 Google Cloud 的外部開發運作工具連線平台。建立 App Hosting 後端時,Developer Connect 的 UI 工作流程會引導您安裝 Firebase GitHub 應用程式。此程序的主要步驟為:

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

此外,App Hosting 也能與 GitHub 檢查 API 整合,藉此檢查推出作業。這項檢查可讓您在 GitHub 中查看推出作業的狀態,並在部署程序期間偵錯,以免發生任何錯誤。

與 Firebase 和其他 Google 服務整合

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

App Hosting 後端服務帳戶

在建構期間和執行階段,應用程式代管後端會透過服務帳戶與其他 Google 服務進行驗證。您首次在 Firebase 專案中啟用應用程式託管時,系統會建立用於這些用途的預設服務帳戶:

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

根據預設,這個服務帳戶適用於所有後端,且具有一組最低權限,可讓您建構、執行及監控應用程式。此外,它還有權使用應用程式預設憑證驗證 Admin SDK,並執行從 Cloud Firestore 載入資料等作業。請參閱「Firebase 應用程式託管角色」。

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

重要詞彙與定義

  • 後端:App Managed 為建構及執行網頁應用程式而建立的代管資源集合。
  • 推出:已上線應用程式的特定版本,連結至 Git 修訂版本。
  • 即時分支版本:部署至線上網址的 GitHub 存放區分支版本。通常這是合併功能分支版本或開發分支版本的分支版本。

已知問題和限制

應用程式託管預先發布版功能有一些已知的限制:

  • 無論 root\_directory 是透過 Firebase 控制台或 CLI 設定,系統目前不支援含有巢狀 package.json 檔案的專案。我們將在日後推出的版本中提供修正方法。
  • 目前不支援圖片最佳化功能。
  • 在某些情況下,App Managed 後端可能會在應用程式的網址中傳回 Intermittent connection error 訊息。我們將在日後推出的版本中提供修正結果。
  • 系統會修改快取標頭,將 CDN 快取限制在 60 秒內;未來如果應用程式代管功能能夠在部署時快速清除快取,這項限制就會解除。
  • 未快取的靜態檔案由 Cloud Run 提供;在後續版本中,這些檔案將儲存於 App Hosting 來源並提供,以提高效能。
  • 我們將在日後推出的版本中,以自訂網域的形式提供萬用字元子網域。
  • Firebase 控制台的後端用量頁面可能未顯示 App 託管 SKU。我們將在後續版本中提供這些功能。
  • Firebase 控制台可能會在建立後端時,偶而顯示「找不到建構項目且無效」的錯誤訊息。
  • 目前,同一個專案中的所有後端均共用一個 GitHub 機構/帳戶。可連結至該機構/帳戶下的不同存放區。 如要建立連結不同 GitHub 帳戶的後端,請分別將這些帳戶放入不同的專案。
  • 目前僅支援 us-central1 區域。