Data Connect サービスとデータベースを管理する

Data Connect プロジェクトは、次の 2 つの主要なインフラストラクチャ要素で構成されています。

  • 1 つ以上の Data Connect サービス インスタンス
  • 1 つ以上の Cloud SQL for PostgreSQL インスタンス

このガイドでは、Data Connect サービス インスタンスを設定して管理する方法について説明し、関連付けられた Cloud SQL インスタンスを管理する方法について説明します。

Firebase Data Connect のリージョンを構成する

Data Connect を使用するプロジェクトには、ロケーションの設定が必要です。

新しい Data Connect サービス インスタンスを作成すると、サービスのロケーションを選択するよう求められます。

利用できるロケーション

Data Connect サービスは、次のリージョンで作成できます。

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4

Data Connect サービス インスタンスを管理する

サービスの創出

新しいサービスを作成するには、Firebase コンソールを使用するか、Firebase CLI を使用してローカル プロジェクトの初期化を実行します。これらのワークフローは、新しい Data Connect サービスを作成します。

これらのフローでは、次の手順も説明します。

  • 新しい Cloud SQL インスタンスのプロビジョニング(無料枠)
  • 既存の Cloud SQL インスタンスを Data Connect(Blaze プラン)にリンクする

ユーザーを管理

Data Connect には、最小権限の原則(必要な機能をサポートするために必要な最小限の権限を各ユーザーまたはサービス アカウントに付与する)とロールベース アクセス制御(RBAC)の概念(データベース権限を管理するための事前定義されたロールを使用して、セキュリティ管理を簡素化する)に従ってユーザー アクセスを管理するツールが用意されています。

プロジェクト メンバーをプロジェクト内の Data Connect インスタンスを変更できるユーザーとして追加するには、Firebase コンソールを使用して適切な事前定義ユーザーロールを選択します。

これらのロールは、Identity and Access Management(IAM)を使用して権限を付与します。ロールは権限のコレクションです。ロールをプロジェクト メンバーに割り当てると、そのロールに含まれるすべての権限がそのプロジェクト メンバーに付与されます。詳細については、以下をご覧ください。

特定のワークフローを有効にするロールを選択する

IAM ロールを使用すると、Firebase CLI ワークフローで Data Connect プロジェクトを管理できます。

CLI コマンド、その他のワークフロー 必要なロール
firebase init dataconnect
  • 権限なし(Cloud SQL インスタンスをリンクしていない場合)
  • roles/cloudsql.admin(Cloud SQL インスタンスの作成時)
firebase deploy -–only dataconnect
  • firebasedataconnect.connectors.*
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
  • roles/cloudsql.admin
firebase dataconnect:sql:diff
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
firebase dataconnect:sql:migrate
  • ターゲット Cloud SQL インスタンスに対する roles/cloudsql.admin
firebase dataconnect:sql:grant
  • ターゲット Cloud SQL インスタンスに対する roles/cloudsql.admin

Data Connect サービスのパフォーマンスをモニタリングする

サービスのパフォーマンスを理解する

Data Connect サービスと Cloud SQL for PostgreSQL サービスの両方のパフォーマンスが、ユーザー エクスペリエンスに影響する可能性があります。

  • Cloud SQL for PostgreSQL サービスについては、割り当てと上限のドキュメントの一般的なガイダンスをご覧ください。
  • Data Connect サービスには GraphQL リクエストの割り当てがあり、クエリの呼び出しと実行のレートに影響します。

    • クライアント アプリ コネクタからの 1 分あたりのリクエスト数 6,000 件というプロジェクトごとの全体的な割り当て。
    • Firebase Admin SDK と REST API からの 1 分あたり 6,000 リクエストのプロジェクト全体の割り当て。
    • ユーザーあたりの割り当ては 1 分あたり 1,200 件のリクエストです。ここで、ユーザー単位とは、クライアント アプリ、Firebase Admin SDK、REST API のいずれからであっても、1 つの IP アドレスから開始されたリクエストに上限が適用されることを意味します。

    これらの割り当て上限に達した場合は、Firebase サポートにお問い合わせのうえ、関連する割り当てを調整してください。

サービスのパフォーマンス、使用状況、請求をモニタリングする

Firebase コンソールで、リクエスト、エラー、オペレーション率をグローバルとオペレーションごとにモニタリングできます。

Cloud SQL インスタンスを管理する

無料トライアルの制限事項

次の Cloud SQL for PostgreSQL 機能は、3 か月間の無料トライアルではサポートされていません。

  • PostgreSQL バージョン(15.x 以外)
  • 既存の Cloud SQL for PostgreSQL インスタンスの使用
  • db-f1-micro と異なるマシンティア
  • インスタンスのリソース(ストレージ、メモリ、CPU など)を変更する
  • リードレプリカ
  • プライベート インスタンスの IP アドレス
  • 高可用性(マルチゾーン)。シングルゾーン インスタンスのみがサポートされます
  • Enterprise Plus エディション
  • 自動バックアップ
  • ストレージの自動増量。

Cloud SQL インスタンスを管理する

一般に、Google Cloud コンソールを使用して Cloud SQL インスタンスを管理し、次のワークフローを実行できます。

  • Cloud SQL インスタンスを停止して再起動する
  • Cloud SQL データベースの作成と削除(インスタンス内)
  • フラグを使用して PostgreSQL データベース インスタンスを起動し、さまざまな拡張機能を使用する
  • Google Cloud コンソールCloud SQL のオブザーバビリティ機能を使用してパフォーマンスをモニタリングする
  • IAM、シークレット マネージャー、データ暗号化、認証プロキシなどの機能を使用して、Cloud SQL のアクセスとセキュリティを管理する
  • Cloud SQL ユーザーの追加、削除、管理。

これらのワークフローについては、Cloud SQL for PostgreSQL のドキュメントをご覧ください。

PostgreSQL ユーザーロールを付与する

Data Connect には、最小権限の原則(必要な機能をサポートするために必要な最小限の権限を各ユーザーまたはサービス アカウントに付与する)とロールベース アクセス制御(RBAC)の概念(データベース権限を管理するための事前定義されたロールを使用して、セキュリティ管理を簡素化する)に従ってユーザー アクセスを管理するツールが用意されています。

場合によっては、Cloud RunCloud Functions、GKE などを介して、選択した SQL クライアントを使用して Data Connect 管理の Cloud SQL データベースに直接接続することが必要になることがあります。

このような接続を有効にするには、次の方法で SQL 権限を付与する必要があります。

  • Google Cloud コンソールまたは gcloud CLI を使用して、インスタンスに接続する必要があるユーザーまたはサービス アカウントに roles/cloudsql.client IAM ロールを割り当てる
  • Firebase CLI を使用して必要な PostgreSQL ロールを付与する

Cloud SQL IAM ロールを割り当てる

Cloud SQL for PostgreSQL を使用して IAM ロール roles/cloudsql.client を割り当てる方法については、ロールと権限をご覧ください。

PostgreSQL ロールを付与する

Firebase CLI を使用すると、firebase dataconnect:sql:grant コマンドで、プロジェクトに関連付けられたユーザーまたはサービス アカウントに事前定義された PostgreSQL ロールを付与できます。

たとえば、書き込みロールを付与するには、CLI で次のコマンドを実行します。

firebase dataconnect:sql:grant --role writer

詳細については、CLI リファレンス ガイドをご覧ください。

既存の Cloud SQL for PostgreSQL データベースを統合する

デフォルトのデータベース プロビジョニングと管理フローでは、プロジェクトで新しい(グリーンフィールド)データベースが使用されていることを前提としています。firebase deploy を呼び出すと、Data Connect は実行されるデータベース スキーマの変更を表示し、承認後に移行を実行します。

既存の(ブラウンフィールド)データベースでは、スキーマを管理するための独自のワークフローがあり、移行に Data Connect ツールを使用できません。ただし、モバイルとウェブ用の SDK 生成、クエリベースの認可、クライアント接続管理などの利点を活用するために、Data Connect プロジェクトでデータベースを使用したいと考えています。

このセクションでは、後者のケース(既存のデータベースと Data Connect の統合)について説明します。

に沿って Database Migration Service を使用できます。

既存のデータベースを Data Connect プロジェクトに統合する

既存のデータベースを統合するワークフローには、通常、次の手順が含まれます。

  1. Firebase コンソールで Data Connect プロジェクトを設定する際に、インスタンスとデータベースを選択します。
  2. Firebase CLI を使用して firebase dataconnect:sql:setup コマンドを実行し、Data Connect が SQL 移行を処理するオプションを拒否します。

    カスタム ツール以外のツールによるデータベース スキーマの変更を防ぐため、setup コマンドは適切な読み取りロールと書き込みロールを割り当てますが、owner ロールは割り当てません。setup コマンドと PostgreSQL ロールの詳細については、CLI リファレンス ガイドをご覧ください。

  3. データベース スキーマと一致する Data Connect GraphQL スキーマを記述します。

    GraphQL スキーマが PostgreSQL スキーマと互換性がある場合にのみ、GraphQL スキーマ、クエリ、ミューテーションをデプロイできます。

    両方のスキーマの調整を簡素化するために、データベースの移行に必要な SQL ステートメントを提供する firebase dataconnect:sql:diff コマンドが用意されています。これを使用して、既存のデータベース スキーマに合わせて GraphQL スキーマを繰り返し調整できます。

  4. 今後は、ローカル開発環境で GraphQL スキーマ、クエリ、ミューテーションをすばやく反復処理できます。次に、結果に満足したら、firebase dataconnect:sql:diff を使用して、カスタム ツールとフローを使用して PostgreSQL に適用できる SQL 移行ステートメントを取得します。

  5. または、PostgreSQL データベースを直接変更してから、GraphQL スキーマに移植することもできます。スキーマの変更がサポートされていない場合があるため、GraphQL ファーストのアプローチをおすすめします。また、PostgreSQL スキーマがデプロイされたコネクタ クエリやミューテーションと互換性のない変更をデプロイすると、これらのコネクタが動作しなくなるか、誤動作する可能性があります。