Requisito de App Engine

Antes, todas las bases de datos de Firestore en el modo de Datastore estaban vinculadas a una aplicación de App Engine. Cuando se vincula, tu base de datos requiere una aplicación de App Engine activa en el mismo proyecto. Si la aplicación de App Engine no está activa, se inhabilitará el acceso de lectura y escritura a la base de datos.

Ahora, las bases de datos en modo Datastore se aprovisionan sin vincular a App Engine de forma predeterminada.

Si tu base de datos está vinculada a App Engine, puedes desvincularla.

App Engine activo

Una aplicación de App Engine activa significa que hay una aplicación en el mismo proyecto y que no está inhabilitada. No es necesario que la aplicación tenga ningún uso. La aplicación y la base de datos vinculadas deben estar en la misma región.

Si inhabilitas tu aplicación de App Engine, también inhabilitarás el acceso a la base de datos del modo Datastore vinculada a esa aplicación.

Puedes comprobar el estado de desvinculación de App Engine mediante la API REST:

curl  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)"

En la respuesta, busca el valor de appEngineIntegrationMode. Si el valor es DISABLED, tu base de datos no está vinculada a ninguna aplicación de App Engine.

Puedes desvincular tu base de datos en modo Datastore de la aplicación de App Engine para eliminar el requisito de que App Engine esté activo. Cuando desvinculas tu base de datos, puedes inhabilitar App Engine sin que esto afecte al acceso a tu base de datos.

La desvinculación es una operación permanente.

Si desvincula su base de datos, no podrá usar la función Inhabilitar escrituras en la página Datastore Admin. Si la escritura está inhabilitada, al desvincular tu base de datos se habilitará.

Antes de desvincular tu base de datos de App Engine, habilita la API de Firestore y actualiza tus permisos de gestión de identidades y accesos.

Para desvincular tu base de datos, ve a la página Administración de Datastore y haz clic en Desvincular base de datos de la aplicación. La operación de desvinculación puede tardar hasta cinco minutos en completarse.

Ir a Administración de Datastore

Migrar recursos de App Engine de Terraform

Si antes gestionabas bases de datos en modo Datastore mediante el recurso de Terraform google_app_engine_application, puedes usar el recurso de Terraform google_firestore_database.

Para obtener instrucciones generales sobre cómo gestionar bases de datos en modo Datastore mediante Terraform, consulta Automatizar la creación de bases de datos.

Crea un recurso google_firestore_database

En el archivo de configuración de Terraform, crea un recurso google_firestore_database:

datastore.tf

resource "google_firestore_database" "database" {
  project     = "project"
  name        = "(default)"
  location_id = "location"
  
  type = "DATASTORE_MODE"
  
  app_engine_integration_mode = "DISABLED"

  // Optional, but recommended for safety
  delete_protection_state = "DELETE_PROTECTION_ENABLED"
}

Consulta la lista de ubicaciones disponibles en Ubicaciones de Datastore. Elige la ubicación correspondiente a la de tu base de datos.

Importar la base de datos del modo Datastore

Primero, comprueba que la API de Firestore esté habilitada.

A continuación, importa la base de datos del modo Datastore a tu estado de Terraform:

terraform import google_firestore_database.database "(default)"

A continuación, ejecuta lo siguiente:

terraform plan

Inspecciona el resultado para asegurarte de que la importación se ha completado correctamente. Si la salida muestra algún campo que cambia, asegúrate de que esos cambios son intencionados. Si el resultado incluye una línea similar a la siguiente:

google_firestore_database.database must be replaced

A continuación, inspecciona el archivo de configuración de Terraform para ver si hay algún error, sobre todo en los campos project, location o name, y vuelve a ejecutar terraform plan. Los campos que requieran que Terraform sustituya tu base de datos se marcarán con # forces replacement en el resultado del plan.

Cuando estés conforme con el resultado del plan de Terraform, ejecuta lo siguiente:

terraform apply

Eliminar el recurso google_app_engine_application

Si tienes un recurso google_app_engine_application en tu archivo de configuración de Terraform, quítalo ahora.

Después, vuelve a ejecutar lo siguiente:

terraform plan

Debería aparecer lo siguiente:

Terraform will perform the following actions:

  # google_app_engine_application.app will be destroyed
  # (because google_app_engine_application.app is not in configuration)

Cuando estés satisfecho con el resultado del plan, ejecuta

terraform apply

Actualmente, Terraform no admite la eliminación de recursos de App Engine. Aunque Terraform mostrará que el recurso se ha destruido, no eliminará la aplicación de App Engine. Sin embargo, Terraform ya no gestionará la aplicación de App Engine.

Requisito de la API de Firestore

Antes, todas las bases de datos de Firestore en modo Datastore estaban vinculadas a una aplicación de App Engine. Ahora, las bases de datos en modo Datastore se aprovisionan sin vincular a App Engine de forma predeterminada. Además, todas las bases de datos, tanto las que ya existían como las que se han creado recientemente, deben cumplir los siguientes requisitos:

  • Para gestionar tu base de datos desde la Google Cloud consola y la CLI de gcloud, la API de Firestore debe estar habilitada en el proyecto. Esto es obligatorio tanto para las bases de datos de Firestore en modo nativo como para las de Firestore en modo Datastore.
  • Cuando se ejecuten desde la Google Cloud consola o la CLI de gcloud, las operaciones administrativas que se indican a continuación requerirán los siguientes permisos de gestión de identidades y accesos:

    • Crear una base de datos: datastore.databases.create
    • Ver los metadatos de la base de datos: datastore.databases.getMetadata
    • Editar metadatos de la base de datos: datastore.databases.update

Si no has habilitado la API de Firestore, verás un error en las páginas de Datastore de la consola Google Cloud , que incluye el siguiente aviso:

La API de Firestore es necesaria para administrar tu base de datos.

Este error también incluye un botón para habilitar la API de Firestore. Haz clic en el botón para habilitar la API.

También debes verificar tus permisos de gestión de identidades y accesos para asegurarte de que no se vea afectado tu acceso a la base de datos.

Verifica que las cuentas que acceden a la base de datos a través de la Google Cloud consola tengan los permisos necesarios, que se indican más arriba.

Los roles predefinidos, como Usuario de Datastore y Lector de Datastore, incluyen los permisos necesarios. Si has creado roles de gestión de identidades y accesos personalizados, es posible que tengas que actualizarlos para que incluyan los permisos anteriores.

Si has definido un rol personalizado para Datastore, es posible que no tenga el permiso datastore.databases.getMetadata. Para mantener el acceso, actualiza tus roles personalizados con datastore.databases.getMetadata o usa un rol predefinido.

Habilitar la API mediante Terraform

Si quieres, también puedes habilitar la API de Firestore a través de Terraform:

resource "google_project_service" "firestore" {
  project = "project"
  service = "firestore.googleapis.com"
}

Si tienes un recurso google_firestore_database, puedes añadir una dependencia al recurso google_project_service para asegurarte de que la API esté habilitada antes de que Terraform intente crear la base de datos:

resource "google_firestore_database" "database" {
  // ...
  depends_on = [google_project_service.firestore]
}