Firestore を使用して、Cloud Run サービス用にスケーラブルな NoSQL クラウド データベースを設定します。Firestore は、モバイル、ウェブ、サーバー開発に対応した、柔軟でスケーラブルな NoSQL データベースです。
このページで説明する Cloud Run インテグレーションを使用すると、Cloud Run サービスを新しい Firestore データベースにすばやく接続できます。
始める前に
- 統合する Cloud Run サービスがすでにデプロイされていることを確認します。
- Firestore の料金ページを確認します。インテグレーションで使用した個々のリソースに対して課金されます。
必要なロール
Cloud Run インテグレーションを使用するには、ユーザーまたは管理者が 2 つの異なるプリンシパルに IAM のロールを付与する必要があります。
クリックして Google アカウントに必要なロールを表示
Cloud Run の統合を使用するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを Google アカウントに付与するよう管理者に依頼してください。
- Cloud Run デベロッパー(
roles/run.developer
) - Compute 閲覧者(
roles/compute.viewer
) - サーバーレス インテグレーション デベロッパー(
roles/runapps.developer
) - サーバーレス インテグレーション オペレーター(
roles/runapps.operator
) - サービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
クリックしてサービス アカウントに必要なロールを表示
Cloud Run サービスをデプロイするには、自動作成された Compute Engine のデフォルトのサービス アカウントを使用するか、ユーザー管理のサービス アカウントを指定します。サービス アカウントには次のロールが必要です。
- Cloud Run デベロッパー(
roles/run.developer
) - ログバケット書き込み者(
roles/logging.bucketWriter
) - サービス アカウント ユーザー(
roles/iam.serviceAccountUser
) - Storage 管理者(
roles/storage.admin
) - Firestore 管理者(
roles/firestore.admin
) - プロジェクト IAM 管理者(
roles/projectIAM.admin
)
新しい Firestore データベースにサービスを接続する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
コンソールまたはコマンドラインを使用して、Cloud Run サービスを Firestore データベースに接続できます。
コンソール
Google Cloud コンソールで [Cloud Run] ページに移動します。
この統合で使用するサービスリストでサービスをクリックします。
[統合] タブをクリックします。
[統合を追加] をクリックします。
[Firestore データベース] をクリックします。
デフォルト名をそのまま使用するか、任意の名前に変更します。
API のリストを有効にするように求められたら、[有効にする] をクリックし、API が有効になるまで待ちます。
[リソース] の下に、この統合の結果として作成される新しいリソースが表示されます。
[送信] をクリックし、統合とリソースが作成されるまで待ちます。この処理には最大 15 分を要する場合があります。
コマンドライン
最新の Google Cloud CLI に更新します。
gcloud components update
統合を作成します。
gcloud beta run integrations create \ --type=firestore \ --service=SERVICE \
次のように置き換えます。
- SERVICE: Cloud Run サービス名。
必要に応じて、
--service-account=SERVICE_ACCOUNT_EMAIL
フラグを含めます。SERVICE_ACCOUNT_EMAIL は、サービスのデプロイに使用されるユーザー管理のサービス アカウントのメールアドレス(
PROJECT_NUMBER-compute@developer.gserviceaccount.com
)に置き換えます。デフォルトのコンピューティング サービス アカウント(SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com
)を使用する場合は、このフラグを省略します。Cloud Run インテグレーションをデプロイするときに、指定されたサービス アカウントを引き続き使用するには、次のコマンドを実行します。
gcloud config set runapps/deployment-service-account
最大 15 分待ちます。その間、完全に構成された Firestore データベースが作成され、接続されます。さらに、データベースを識別する環境変数を含む新しい Cloud Run リビジョンが作成されます。プロセスが完了すると、次のメッセージが表示されます。
[firestore] integration [firestore-xxx] has been updated successfully. To connect to the Firestore database, utilize the environment variable `FIRESTORE_DB_NAME`. This variable is added to the Cloud Run service for you.
ステータスを確認するには、
gcloud beta run integrations describe
を実行します。
Firestore データベースのインテグレーションを表示する
Cloud Run サービスと Firestore データベースのインテグレーションの現在のステータスを表示するには:
コンソール
Google Cloud コンソールで [Cloud Run] ページに移動します。
この統合で使用するサービスリストでサービスをクリックします。
[統合] タブをクリックします。
目的の Firestore データベース インテグレーションを見つけて、[詳細を表示] をクリックします。
コマンドライン
利用可能なインテグレーションのリストを取得するには、次のコマンドを使用します。
gcloud beta run integrations list
返されたリストの名前を使用して、その詳細を表示します。
gcloud beta run integrations describe INTEGRATION_NAME
INTEGRATION_NAME は、Firestore データベース インテグレーションの名前に置き換えます。
Firestore データベースのインテグレーションを削除する
インテグレーションを削除すると、インテグレーションに関連付けられているすべての Google Cloud リソースも削除されますが、Cloud Run サービスは削除されません。
Cloud Run サービスから Firestore データベースのインテグレーションを削除するには:
コンソール
Google Cloud コンソールで [Cloud Run] ページに移動します。
統合を削除するサービスをクリックします。
[統合] タブをクリックします。
目的の Firebase データベース インテグレーションを見つけて、その右側にある省略記号アイコンをクリックし、[削除] をクリックします。
コマンドライン
利用可能なインテグレーションのリストを取得するには、次のコマンドを使用します。
gcloud beta run integrations list
返されたリストの名前を使用して、インテグレーションを削除します。
gcloud beta run integrations delete INTEGRATION_NAME
次のように置き換えます。
- INTEGRATION_NAME は、Firestore データベース インテグレーションの名前に置き換えます。
必要に応じて、次のフラグ オプションを使用できます。
オプション 説明 --service-account
削除オペレーションを実行するユーザー管理のサービス アカウントのメールアドレス。
コードで Firestore データベースにアクセスする
インテグレーションが完了すると、Cloud Run サービスコードで使用する環境変数 FIRESTORE_DB_NAME
が Cloud Run によって自動的に追加されます。
Firestore を使用するサービスのサンプルコード
Cloud Run と Firestore のコードサンプルについては、Firestore のドキュメントをご覧ください。
制限事項
- Cloud Run インテグレーションは、特定のリージョンでのみサポートされています。Cloud Run インテグレーションでサポートされていないリージョンを使用する必要がある場合は、サーバーサイドのクライアント ライブラリを使用するをご覧ください。
- Firestore のデフォルト データベースはサポートされていません。このインテグレーションは、名前付きの Firestore データベースの作成のみをサポートしています。