Data Connect 的 Firebase CLI 指令參考資料

Firebase CLI 是一項工具,可讓您透過指令列管理及設定 Firebase 產品和服務。

CLI 提供的指令可用於執行各種 Data Connect 工作,例如建立新的 Data Connect 專案、初始化對應的本機工作目錄、設定 Data Connect 模擬器、列出 Data Connect 資源、產生用戶端 SDK 等等。

設定指令

Data Connect 新增至 Firebase 專案

firebase init

使用 firebase init 設定新的本機專案設定。這個工作流程會在目錄中建立或更新 Firebase 設定檔

firebase init

firebase init 流程會引導您設定服務和資料庫,並視需要安裝 Data Connect 模擬器,以及設定產生的 SDK。

服務和資料庫設定

如果您選取 dataconnect 進行產品設定,CLI 會提示您輸入新的服務名稱和位置,以及要連結現有的 PostgreSQL 適用的 Cloud SQL 執行個體,還是建立新的執行個體。

如果已連結現有執行個體,CLI 會檢查是否有相容的設定,例如 IAM 驗證和公開 IP 位址。

Local Emulator Suite 設定

CLI 流程可用於設定模擬器,包括 Data Connect 模擬器。

Data Connect 模擬器指令

啟動 Data Connect 模擬器

emulators:start/exec

firebase emulators:start/exec

在互動模式下使用 Local Emulator SuiteData Connect 模擬器,搭配 start 或以指令碼為主的非互動模式,搭配 exec

結構定義和連接器管理指令

本節提供用於管理結構定義和連接器的指令 CLI 參考資訊。

如需相關使用案例和最佳做法,請參閱結構定義和連接器管理指南

部署結構定義和連接器資源

deploy

firebase deploy

這個指令會為 firebase.json 中索引的 Data Connect 服務部署資源。視需要執行結構定義遷移

指令 說明

firebase deploy

標記 說明

–-only dataconnect

為此專案的所有 Data Connect 服務部署結構定義和連接器,但不要部署其他 Firebase 產品資源。

–-only dataconnect:serviceId

為指定的 Data Connect 服務部署結構定義和連接器。

–-only dataconnect:serviceId:connectorId

為指定的 Data Connect 服務部署單一連接器。

–-only dataconnect:serviceId:schema

為指定的 Data Connect 服務部署結構定義。

您可以使用 –-only 標記,傳遞以半形逗號分隔的值,以便部署所需的任何資源子集。

firebase deploy --only dataconnect:service1:schema,dataconnect:service2

列出 Data Connect 服務、結構定義和連接器

dataconnect:services:list

firebase dataconnect:services:list

這個指令會列印在專案中部署的服務、結構定義和連接器的基本資訊。

比較及遷移 SQL 結構定義

dataconnect:sql:diff

firebase dataconnect:sql:diff

這項指令會比較服務的本機結構定義,以及對應 Cloud SQL 資料庫的目前結構定義。它會列印要執行的命令,以便將資料庫遷移至新的結構定義。

指令 說明

firebase dataconnect:sql:diff

標記/參數 說明

serviceId

指定服務。如果省略,則會列印 firebase.json 中所有服務的差異。

dataconnect:sql:migrate

firebase dataconnect:sql:migrate

這項指令會將本機結構定義變更套用至服務的 Cloud SQL 資料庫。

當您使用預設 dataconnect.yaml 檔案設定新的本機 Data Connect 專案時,dataconect:sql:migrate 指令的行為會在執行變更前,先提示您進行任何必要變更,然後再提示您進行任何選用變更。您可以修改這項行為,讓系統一律納入或忽略選用變更,方法是更新 dataconnect.yaml 設定,如「在嚴格或相容模式下遷移結構定義」一文所述。

在互動式環境中,CLI 會顯示每個遷移 SQL 陳述式 (以及該陳述式是否具破壞性),並提示您要套用的變更。傳遞 --force 標記,就等同於接受所有提示。

在非互動式環境中:

  • 在沒有 --force 的情況下,系統只會進行非破壞性的變更。如果有破壞性的變更,CLI 會中止,且不會進行任何變更。
  • 使用 --force 時,所有變更都會完成。如果這項操作包含任何破壞性變更,系統會列印這些變更,並提示您是否要繼續操作,除非您提供 --force 旗標。
指令 說明

firebase dataconnect:sql:migrate

標記 說明

serviceId

遷移指定服務的資料庫。如果專案只有一個服務,系統會推斷 serviceId。

–-force

自動接受提示。

如同其他 --only 標記,您可以提供多項服務,並以半形逗號分隔。

以嚴格或相容模式遷移結構定義

Data Connect 結構定義遷移作業有兩種不同的結構定義驗證模式:嚴格相容。在嚴格模式驗證中,資料庫結構定義必須與應用程式結構定義完全相符,應用程式結構定義才能部署。相容模式驗證要求資料庫結構定義與應用程式結構定義相容,也就是說,資料庫中未由應用程式結構定義使用的元素將保持不變。

這些結構定義驗證模式和結構定義遷移最佳做法,請參閱結構定義和連接器管理指南

驗證模式是使用 dataconnect.yaml 檔案中的 schemaValidation 鍵定義。如果未指定 schemaValidation,CLI 會套用相容的變更,並在執行任何嚴格變更前提示您。請參閱設定參考資料

SDK 指令

產生 SDK

dataconnect:sdk:generate

firebase dataconnect:sdk:generate

這個指令會產生在 connector.yaml 中宣告的類型 SDK。

另請參閱相關指南,瞭解如何使用網路 SDKAndroid SDKiOS SDK

指令 說明

firebase dataconnect:sdk:generate

標記 說明

–-watch

每當您儲存結構定義和連接器 GQL 檔案的變更時,系統就會持續執行這個程序,並產生新的 SDK。

如果產生作業失敗,系統會將錯誤訊息輸出至標準輸出,產生的程式碼不會變更,指令也會繼續執行。

--only connectorId:platform

只為單一平台和單一連接器產生 SDK。

您可以使用 –only 標記傳遞以半形逗號分隔的值。

firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin

Cloud SQL 管理指令

授予 Cloud SQL 的 SQL 角色

dataconnect:sql:grant

firebase dataconnect:sql:grant

Data Connect 會在您在 Cloud SQL 上代管的 PostgreSQL 例項上運作。在某些情況下,您可能會想直接存取資料庫,以便查詢或更新 Data Connect 應用程式產生的資料。如要這樣做,您必須將本節定義的其中一個角色授予所需的使用者或服務帳戶。

如要進一步瞭解已授予的角色,請參閱「PostgreSQL 使用者角色」。

角色 SQL 角色 權限 用量 Grantable
reader firebasereader_<db_name>_<schema_name> 具備資料庫的唯讀存取權。

可對指定結構定義中的所有資料表執行 SELECT 作業。
適用於需要擷取資料但不需修改資料的使用者或服務。
作家 firebasewriter_<db_name>_<schema_name> 具備資料庫的讀取和寫入權限。

可在結構定義中的所有資料表上執行 SELECTINSERTUPDATEDELETETRUNCATE 作業。
適合需要修改資料庫內資料的使用者或服務。
擁有者 firebaseowner_<db_name>_<schema_name> 結構定義擁有者。

擁有結構定義中所有資料表和序列的所有權限。
這個角色搭配 IAM roles/cloudsql.client 角色,可授予在資料庫上執行遷移作業的權限。

例如呼叫 firebase dataconnect:sql:migrate 時。
超級使用者 cloudsqlsuperuser 內建超級使用者角色,具備資料庫的完整權限。

除了擁有者權限外,還可建立結構定義、刪除結構定義、安裝擴充功能,以及執行其他管理工作。

以「firebasesuperuser」登入 CLI 即可存取。
必須具備這項權限,才能安裝擴充功能、建立初始結構定義,以及將任何可授予的 SQL 角色授予其他使用者。

如果非管理員使用者需要超級使用者權限,移轉作業就會失敗,並提示使用者請求資料庫管理員 (即具備 roles/cloudsql.admin 的使用者) 執行具權限的 SQL 指令。
授予具有 roles/cloudsql.admin 的使用者,且無法直接從 Firebase CLI 授予
指令 說明

firebase dataconnect:sql:grant

標記/參數 說明

-R, --role 角色

要授予的 SQL 角色,可選值為:擁有者、寫入者或讀取者。

-E, --email email_address

要授予角色的使用者或服務帳戶電子郵件地址。

全域選項

下列全域選項適用於所有指令:

  • --json 會將 CLI 輸出內容切換為 JSON,供其他工具剖析。
  • --noninteractive--interactive 會視需要覆寫非 TTY 環境的自動偵測功能。