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

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 buildng build 適用於 Angular。App Hosting 會使用自訂建構指令嘗試建構,但無法保證建構成功。

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

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

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

此外,App Hosting 已與 GitHub 檢查 API 整合,可提供發布檢查項目。這項檢查可讓您在 GitHub 中查看推出作業狀態,並視情況為部署程序偵錯。

與 Firebase 和其他 Google 服務整合

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

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 訊息。我們將在日後推出的版本中提供修正方法。
  • 已修改快取標頭,將 CDN 快取限制在 60 秒內;日後 App Hosting 可以在部署時快速清除快取,將會解除這項限制。
  • 未快取的靜態檔案會從 Cloud Run 提供;在後續版本中,系統會從 App Hosting 來源儲存並提供這些檔案,藉此提高效能。
  • 我們將在日後推出的版本中提供以自訂網域做為自訂網域的萬用字元子網域。
  • Firebase 控制台的後端用量頁面可能不會顯示 App Hosting SKU。我們將在日後推出的版本中提供這些功能。
  • Firebase 主控台可能會在後端建立時間歇顯示「找不到版本,並無效」錯誤訊息。
  • 無論 root\_directory 是使用 Firebase 主控台還是 CLI 設定,系統目前不支援含有巢狀 package.json 檔案的專案。我們將在日後推出的版本中提供修正方法。
  • 目前,同一項專案中的所有後端會共用 GitHub 機構/帳戶。這些專案可連結至該機構/帳戶下的不同存放區。 如要建立連接至不同 GitHub 帳戶的後端,請將後端置於不同專案中。
  • 目前僅支援 us-central1 區域。