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 分あたり 1,200 件のリクエストです。ここで、ユーザーごととは、クライアント アプリ、Firebase Admin SDK、REST API のいずれからでも、1 つの IP アドレスから開始されたリクエストに上限が適用されることを意味します。

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

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

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

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

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

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

  • 15.x 以外の PostgreSQL バージョン
  • 既存の 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 ツールを使用できない場合があります。しかし、Data Connect プロジェクトでデータベースを使用して、モバイルとウェブの SDK 生成、クエリベースの認可、クライアント接続管理などを活用したい場合があります。

このセクションでは、後者の場合(既存のデータベースと 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 スキーマ、クエリ、ミューテーションをデプロイできるのは、GraphQL スキーマが PostgreSQL スキーマと互換性がある場合のみです。

    両方のスキーマの調整を簡素化するために、firebase dataconnect:sql:diff コマンドを提供しています。このコマンドを使用すると、データベースの移行に必要な SQL ステートメントを取得できます。これを使用して、既存のデータベース スキーマと一致するように GraphQL スキーマを反復的に調整できます。

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

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