設定及管理 App Hosting 後端

App Hosting 專為使用便利而設計,且不需維護。 並針對大多數用途 提供最佳化的預設設定與此同時 App Hosting 提供多項工具,可協助您管理及設定後端 找到適合的選項本指南將說明這些工具和程序。

設定後端

適用於進階設定 (例如環境變數或執行階段設定) 例如並行、CPU 和記憶體限制,您需要建立和編輯 apphosting.yaml 檔案。這個檔案也包含 支援參照代管密鑰 ,您就能安全地檢查原始碼控管機制

以下是一般 apphosting.yaml 檔案的外觀,並設定以下項目: 後端的 Cloud Run Service、一些環境變數 由 Cloud Secret Manager 代管的密鑰參照:

# Settings for Cloud Run
runConfig:
  minInstances: 2
  maxInstances: 100
  concurrency: 100
  cpu: 2
  memoryMiB: 1024

# Environment variables and secrets
env:
  - variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
      - BUILD
      - RUNTIME

  - variable: API_KEY
    secret: myApiKeySecret

    # Same as API_KEY above but with a pinned version.
  - variable: PINNED_API_KEY
    secret: myApiKeySecret@5

    # Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
  - variable: VERBOSE_API_KEY
    secret: projects/test-project/secrets/secretID

    # Same as API_KEY above but with the long form secret reference with pinned version.
  - variable: PINNED_VERBOSE_API_KEY
    secret: projects/test-project/secrets/secretID/versions/5

本指南的其餘部分提供了這個範例的詳細資訊和相關資訊 可以管理叢集設定,像是節點 資源調度、安全性和其他預先設定項目

選取「Cloud Run」服務設定

你可以透過 apphosting.yaml 設定,指定 「Cloud Run」服務現為 已佈建完成您可以在 系統會在 runConfig 物件中提供 Cloud Run 服務

  • cpu - 每個服務執行個體使用的 CPU 數量 (預設為 0)。
  • memoryMiB - 為 MiB 中的每個服務執行個體分配的記憶體量 (預設值為 512)。
  • maxInstances - 一次執行的容器數量上限 (預設) (共 100 個),並由配額管理)
  • minInstances - 要一律保持運作的容器數量 (預設值為 0)。
  • concurrency - 每個服務執行個體可提出的要求數量上限 接收 (預設值為 80)。

請注意 cpumemoryMiB 之間的重要關係。您可以設定記憶體 設為 128 至 32768 之間的任何整數值,但增加記憶體限制可能會 需要提高 CPU 限制:

  • 超過 4 GiB 需要至少 2 個 CPU
  • 超過 8 GiB 需要至少 4 個 CPU
  • 超過 16 GiB 需要至少 6 個 CPU
  • 超過 24 GiB 需要至少 8 個 CPU

同樣地,cpu 的值也會影響並行設定。如果將值設為 少於 1 個 CPU,您必須將並行設為 1,且系統只會分配 CPU 處理狀態

設定建構環境

有時候,建構程序需要額外的設定,例如 第三方 API 金鑰或可調整設定App Hosting 提供環境 apphosting.yaml 的設定,以便儲存及擷取 決定專案的資料類型

env:
-   variable: STORAGE_BUCKET
    value: mybucket.appspot.com

如果是 Next.js 應用程式,dotenv 檔案內含 環境變數 也會 與「App Hosting」搭配運作。建議精細使用 apphosting.yaml 環境變數

apphosting.yaml 中,您可以指定哪些程序有權存取 環境變數。availability如要限制 環境變數 部署至執行階段環境根據預設,系統會為這兩種平台提供參數。

env:
-   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
    -   BUILD
    -   RUNTIME

對於 Next.js 應用程式,您也可以使用 NEXT_PUBLIC_ 前置字串,方法與 它會使您的 dotenv 檔案能夠在瀏覽器中存取。

env:
-   variable: NEXT_PUBLIC_STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
    -   BUILD
    -   RUNTIME

有效的變數鍵由 A 到 Z 字元或底線組成。只有部分通知 環境變數金鑰僅限內部使用請勿使用下列任何一項: 儲存於設定檔中:

  • 任何開頭為 X_FIREBASE_ 的變數
  • PORT
  • K_SERVICE
  • K_REVISION
  • K_CONFIGURATION

儲存及存取密鑰參數

應以 Secret 的形式儲存 API 金鑰等機密資訊。你可以 apphosting.yaml 中的參照密鑰,以避免檢查機密資訊 轉換至原始碼控管系統

secret 類型的參數代表含有值的字串參數 儲存於 Cloud Secret Manager。 而不是 直接產生值,密鑰參數會檢查 Cloud 中存在的情況 Secret Manager,並在推出期間載入這些值。

  -   variable: API_KEY
      secret: myApiKeySecret

Cloud Secret Manager 中的密鑰可以有多個版本。根據預設, 您的即時後端可用的密鑰參數值會固定在 最新可用的密鑰版本。如果發生以下情況: 需要參數的版本管理和生命週期管理 並釘選在特定版本的 Cloud Secret Manager。舉例來說,如要固定至 第 5 版:

  - variable: PINNED_API_KEY
    secret: myApiKeySecret@5

您可以使用 CLI 指令 firebase apphosting:secrets:set 建立密鑰。 系統會提示您新增必要權限。此流程可賦予您 選項,自動將密鑰參照新增至 apphosting.yaml

如要使用完整的 Cloud Secret Manager 功能,請改用 前往 Cloud Secret Manager 控制台若執行此動作,您必須 權限,App Hosting 使用 CLI 指令 firebase apphosting:secrets:grantaccess

同步處理 Firebase 驗證狀態

使用 Firebase Auth 的應用程式應考慮採用 Firebase Web SDK 驗證狀態。可用的值包括 透過 Service Worker 實作 FirebaseServerApp。基本 就是:

  1. 實作 Service Worker ,可針對伺服器收到的要求,為應用程式新增適當的標頭。
  2. 從伺服器上的要求取得標頭,並將該標頭轉換為驗證 使用 FirebaseServerApp 的使用者。

管理後端

App Hosting 後端基本管理作業的指令如下 (使用 Firebase CLI 中的指令)。只有部分通知 您也可以在 Firebase 控制台中找到作業。這個部分 說明一些常見的管理工作,包括建立及執行 正在刪除後端

建立後端

App Hosting 後端是一組代管資源, 「App Hosting」會建立專門用來建構及執行網頁應用程式。您可以建立 App Hosting 個後端,使用 Firebase 控制台Firebase CLI

Firebase 主控台:從「Build」選單中依序選取「App Hosting」立即開始使用

CLI: (3.9 以上版本) 如要建立後端,請執行下列指令 然後從本機專案目錄的根目錄中,將 project ID 做為引數 (適用於預覽 僅支援 us-central1 區域):

firebase apphosting:backends:create --project PROJECT_ID --location us-central1

在主控台或 CLI 中,按照提示為後端指派名稱,達到以下目的: 設定一個 GitHub 連線 並設定下列基本部署作業設定:

  • 設定應用程式的根目錄 (預設為 /)

    這個位置通常是 package.json 檔案的位置。

  • 設定使用中的分支版本

    這是 GitHub 存放區的分支版本,會部署至 線上網址。通常這是功能分支或開發的分支版本 會合併分支版本

  • 接受或拒絕自動推出

    系統預設會啟用自動推出功能。後端建立完畢後 您可以選擇立即將應用程式部署至 App Hosting

刪除後端

如要完全移除後端,請先使用 Firebase CLI,然後手動移除 移除相關資源,請特別小心,不要刪除 可用於其他後端或 Firebase 專案的其他方面。

  1. 執行下列指令,刪除 App Hosting 後端。 這會停用後端的所有網域,並刪除相關聯的 Cloud Run 服務:

    firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID --location us-central1
    
  2. (選用) 在 「Artifact Registry的 Google Cloud 控制台分頁, 請刪除「firebaseapphosting-images」的後端映像檔。

  3. Cloud Secret Manager 中 刪除任何含有「apphosting」的密鑰秘密名稱裡,把 務必確保其他後端未使用這些密鑰 Firebase 專案的其他方面