Firebase CLI は、コマンドラインから Firebase のプロダクトとサービスを管理、構成できるツールです。
CLI には、新しい Data Connect プロジェクトの作成、対応するローカル作業ディレクトリの初期化、Data Connect エミュレータの設定、Data Connect リソースの一覧表示、クライアント SDK の生成など、さまざまな Data Connect タスクを実行するために使用できるコマンドがあります。
設定コマンド
Data Connect を Firebase プロジェクトに追加する
firebase init
firebase init
を使用して、新しいローカル プロジェクト構成を設定します。このワークフローでは、ディレクトリ内の Firebase 構成ファイルを作成または更新します。
firebase init
firebase init
フローでは、サービスとデータベースの設定、必要に応じて Data Connect エミュレータのインストール、生成された SDK の構成について説明します。
サービスとデータベースの設定
プロダクトの設定に dataconnect
を選択すると、新しいサービス名とロケーション、既存の Cloud SQL for PostgreSQL インスタンスをリンクするか新しいインスタンスを作成するかを尋ねるメッセージが表示されます。
既存のインスタンスがリンクされている場合、CLI は互換性のある設定(IAM 認証やパブリック IP アドレスなど)を確認します。
Local Emulator Suite の設定
CLI フローでは、Data Connect エミュレータなどのエミュレータをセットアップできます。
Data Connect エミュレータ コマンド
Data Connect エミュレータを起動する
エミュレータ:start/exec
firebase emulators:start/exec
start
でインタラクティブ モード、または exec
でスクリプト ドリブンの非インタラクティブ モードで、Local Emulator Suite バージョンの Data Connect エミュレータを使用します。
スキーマとコネクタの管理コマンド
このセクションでは、スキーマとコネクタの管理に使用するコマンドの CLI リファレンス情報を提供します。
これらのコマンドに関連する使用方法とおすすめの方法については、スキーマとコネクタの管理ガイドをご覧ください。
スキーマとコネクタ リソースをデプロイする
デプロイ
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 は、プロジェクトにサービスが 1 つしかない場合に推測されます。 | |
--force |
プロンプトを自動的に承認する。 |
他の --only
フラグと同様に、カンマで区切って複数のサービスを提供できます。
厳密モードまたは互換モードでスキーマを移行する
Data Connect スキーマ移行には、厳密と互換性の 2 つの異なるスキーマ検証モードがあります。厳格モードの検証では、アプリケーション スキーマをデプロイする前に、データベース スキーマがアプリケーション スキーマと完全に一致している必要があります。互換モードの検証では、データベース スキーマがアプリケーション スキーマと互換性がある必要があります。つまり、アプリケーション スキーマで使用されていないデータベース内の要素は変更されません。
これらのスキーマ検証モードとスキーマ移行のベスト プラクティスについては、スキーマとコネクタの管理ガイドをご覧ください。
検証モードは、dataconnect.yaml
ファイルの schemaValidation
キーを使用して定義します。schemaValidation
が指定されていない場合、CLI は互換性のある変更を適用し、厳格な変更を実行する前にプロンプトを表示します。構成リファレンスをご覧ください。
SDK コマンド
SDK を生成する
dataconnect:sdk:generate
firebase dataconnect:sdk:generate
このコマンドは、connector.yaml で宣言された型付き SDK を生成します。
ウェブ SDK、Android SDK、iOS SDK のガイドもご覧ください。
コマンド | 説明 | |
---|---|---|
firebase dataconnect:sdk:generate |
フラグ | 説明 |
–-watch |
プロセスを実行し続け、スキーマとコネクタの GQL ファイルに変更を保存するたびに新しい SDK を生成します。 生成に失敗した場合、エラーが stdout に出力されます。生成されたコードは変更されません。コマンドは引き続き実行されます。 |
|
–-only connectorId:platform |
1 つのプラットフォームと 1 つのコネクタの 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 ロール | 権限 | 用途 | 付与可能 |
---|---|---|---|---|
リーダー | firebasereader_<db_name>_<schema_name> |
データベースに対する読み取り専用アクセス権。 指定されたスキーマ内のすべてのテーブルに対して SELECT オペレーションを実行できます。 |
データの取得は必要だが、変更は必要としないユーザーやサービスに最適です。 | ○ |
ライター | firebasewriter_<db_name>_<schema_name> |
データベースに対する読み取り / 書き込みアクセス権。 スキーマ内のすべてのテーブルに対して SELECT 、INSERT 、UPDATE 、DELETE 、TRUNCATE オペレーションを実行できます。 |
データベース内のデータを変更する必要があるユーザーまたはサービスに適しています。 | ○ |
所有者 | firebaseowner_<db_name>_<schema_name> |
スキーマのオーナー。 スキーマ内のすべてのテーブルとシーケンスに対するすべての権限があります。 |
このロールは、IAM roles/cloudsql.client ロールと組み合わせて、データベースの移行を行う権限を付与します。たとえば、 firebase dataconnect:sql:migrate を呼び出す場合。 |
○ |
スーパーユーザー | cloudsqlsuperuser |
データベースに対する完全な権限を持つ組み込みのスーパーユーザー ロール。 オーナー権限に加えて、スキーマの作成、スキーマの削除、拡張機能のインストール、その他の管理タスクを実行できます。 CLI で「firebasesuperuser」としてログインすることでアクセスできます。 |
拡張機能のインストール、初期スキーマの作成、付与可能な 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 以外の環境の自動検出をオーバーライドします。