Use Firestore to set up a scalable NoSQL cloud database for your Cloud Run service. Firestore is a flexible, scalable, NoSQL database for mobile, web, and server development.
Using the Cloud Run integration described on this page, you can quickly connect your Cloud Run service to a new Firestore database.
Before you begin
- Make sure the Cloud Run service you are integrating with is already deployed.
- Review the Firestore pricing page. You are billed for individual resources used in the integration.
Required roles
To use the Cloud Run integrations, you or your administrator must grant IAM roles on two different principals.
Click to view required roles for your Google Account
To get the permissions that you need to use Cloud Run integrations, ask your administrator to grant your Google Account the following IAM roles on your project:
- Cloud Run Developer (
roles/run.developer
) - Compute Viewer (
roles/compute.viewer
) - Serverless Integrations Developer (
roles/runapps.developer
) - Serverless Integrations Operator (
roles/runapps.operator
) - Service Account User (
roles/iam.serviceAccountUser
)
Click to view the required roles for the service account
To deploy the Cloud Run service, you can either use the auto-created Compute Engine default service account, or specify a user-managed service account. The service account must have the following roles:
- Cloud Run Developer (
roles/run.developer
) - Logs Bucket Writer (
roles/logging.bucketWriter
) - Service Account User (
roles/iam.serviceAccountUser
) - Storage Admin (
roles/storage.admin
) - Firestore Admin (
roles/firestore.admin
) - Project IAM Admin (
roles/projectIAM.admin
)
Connect a service to a new Firestore database
Any configuration change leads to the creation of a new revision. Subsequent revisions will also automatically get this configuration setting unless you make explicit updates to change it.
You can connect a Cloud Run service to a Firestore database using the console or the command line.
Console
In the Google Cloud console, go to the Cloud Run page.
Click the service in the services list that you want to use in this integration.
Click the Integrations tab.
Click Add integration.
Click Firestore database.
Use the default name or change the name to the value you want to use.
If prompted to enable a list of APIs, click Enable and wait for the APIs to be enabled.
Under Resources, note the new resources that will be created as a result of this integration.
Click Submit and wait for the integration and resources to be created. It can take up to 15 minutes.
Command line
Update to the latest Google Cloud CLI:
gcloud components update
Create the integration:
gcloud beta run integrations create \ --type=firestore \ --service=SERVICE \
Replace:
- SERVICE with your Cloud Run service name.
Optionally, include the
--service-account=SERVICE_ACCOUNT_EMAIL
flag.SERVICE_ACCOUNT_EMAIL with the user-managed service account email address (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
) that is used to deploy the service. Omit this flag if you want to use the default compute service account (SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com
).To continue using the specified service account when deploying Cloud Run integrations, run the following command:
gcloud config set runapps/deployment-service-account
Wait up to 15 minutes, during which time a fully configured Firestore database is created and connected. In addition, a new Cloud Run revision is created, including environment variables that identify the database. When the process is complete, the following message is shown:
[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.
You can check the status by running
gcloud beta run integrations describe
.
View Firestore database integrations
To view the current status of Firestore database integrations for your Cloud Run service:
Console
In the Google Cloud console, go to the Cloud Run page.
Click the service in the services list that you want to use in this integration.
Click the Integrations tab.
Locate the Firestore database integration you are interested in and click View details.
Command line
Use the following command to get a list of available integrations:
gcloud beta run integrations list
Using a name from the returned list, display the details for it:
gcloud beta run integrations describe INTEGRATION_NAME
Replace INTEGRATION_NAME with the name of your Firestore database integration.
Delete Firestore database integrations
Deleting an integration will also delete all of the Google Cloud resources associated with that integration, but it will not delete your Cloud Run service.
To delete a Firestore database integration from your Cloud Run service:
Console
In the Google Cloud console, go to the Cloud Run page.
Click the service you want to delete an integration from.
Click the Integrations tab.
Locate the Firestore database integration you are interested in and click the ellipsis icon to the right of the integration, then click Delete.
Command line
Use the following command to get a list of available integrations:
gcloud beta run integrations list
Using a name from the returned list, delete the integration:
gcloud beta run integrations delete INTEGRATION_NAME
Replace:
- INTEGRATION_NAME with the name of your Firestore database integration.
Optionally, you can use the following flag options:
Option Description --service-account
The user-managed service account email address to perform the delete operation.
Access the Firestore database in your code
After you complete the integration, Cloud Run
automatically adds the environment variable FIRESTORE_DB_NAME
for use in your Cloud Run service code.
Sample code for services using Firestore
Refer to the Firestore documentation for Cloud Run and Firestore code samples.
Limitations
- The Cloud Run integrations is only supported in certain regions. If you need to use a region that is not supported by the Cloud Run integrations, refer to Use a server side client library.
- The Firestore default database is not supported. This integration only supports creating named Firestore databases.