Requisito de App Engine

Antes, todas las bases de datos de Firestore en modo Datastore estaban vinculadas a una aplicación de App Engine. Cuando se vincula, tu base de datos requiere una aplicación activa de App Engine en la misma en un proyecto final. Sin la app activa de App Engine, tendrás acceso de lectura y escritura a la base de datos está inhabilitada.

Las bases de datos en modo Datastore ahora se aprovisionan desvinculadas de App Engine de forma predeterminada.

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

App Engine activa

Una app de App Engine activa significa que una app existe en el mismo proyecto y que esta aplicación no esté inhabilitada. No requiere que se use esa app. La aplicación y la base de datos vinculadas deben existir en la misma región.

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

Puedes verificar el estado de desvinculación de App Engine con la API de 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, observa el valor de appEngineIntegrationMode. Si el valor es DISABLED, tu base de datos no está vinculada a una aplicación de App Engine.

Puedes desvincular tu base de datos en modo Datastore de App Engine para quitar el requisito activo de App Engine. Cuando desvinculas tu base de datos, puedes inhabilitar App Engine sin afectar el acceso a tu base de datos.

La desvinculación es una operación permanente.

Si desvinculas tu base de datos, no podrás usar la función Inhabilitar escrituras. en la página Administrador de Datastore. Si las operaciones de escritura están inhabilitadas, la desvinculación tu base de datos habilitará las operaciones de escritura.

Antes de desvincular tu base de datos de App Engine, asegúrate de habilitar API de Firestore y actualiza tus permisos de IAM.

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

Ir al administrador de Datastore

Migra recursos de App Engine de Terraform

Si anteriormente administrabas bases de datos en modo Datastore a través del google_app_engine_application de Terraform, puedes usar el google_firestore_database recurso de Terraform en su lugar.

Si deseas obtener instrucciones generales para administrar las bases de datos del modo Datastore mediante Terraform, consulta Automatiza la creación de bases de datos.

Crea un recurso google_firestore_database

En tu archivo de configuración de Terraform, crea una nueva 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 Ubicaciones de Datastore para ver la lista de ubicaciones disponibles. Elige la ubicación correspondiente de tu base de datos existente.

Importa la base de datos existente en modo Datastore

En primer lugar, asegúrate de que el API de Firestore esté habilitado.

Luego, importa la base de datos existente en modo Datastore a tu archivo estado:

terraform import google_firestore_database.database "(default)"

Luego, ejecute el siguiente comando:

terraform plan

Inspecciona el resultado para asegurarte de que la importación se haya completado correctamente. Si el resultado muestra los campos que cambian, asegúrate de que estos cambios sean los deseados. Si el resultado incluye una línea similar a esta:

google_firestore_database.database must be replaced

Luego, inspecciona tu archivo de configuración de Terraform para ver si había errores, especialmente en las propiedades project, location o name y, luego, vuelve a ejecutar terraform plan. Cualquier campo que sea que solicites que Terraform reemplace tu base de datos, se marcará con # forces replacement en el resultado del plan.

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

terraform apply

Quita el recurso google_app_engine_application

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

Luego, vuelve a ejecutar lo siguiente:

terraform plan

Debería ver un resultado similar al 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 conforme con el resultado del plan, ejecuta

terraform apply

En la actualidad, Terraform no admite la eliminación de recursos de App Engine. aunque Terraform mostrará que el recurso se destruyó, no se borrar la aplicación de App Engine. Sin embargo, el flujo de trabajo de App Engine aplicación ya no será administrada por Terraform.

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. Las bases de datos en modo Datastore aprovisionados y desvinculados de App Engine de forma predeterminada. Además, todas las bases de datos, tanto existentes como recién creados, ahora tienen los siguientes requisitos:

  • Para administrar tu base de datos desde la consola de Google Cloud y gcloud CLI, se debe habilitar la API de Firestore en el proyecto. Esto es obligatorio tanto para Firestore en Bases de datos de modo nativo y Firestore en modo Datastore.
  • Cuando se ejecuta desde la consola de Google Cloud o gcloud CLI, las operaciones administrativas que aparecen a continuación requerirán los siguientes permisos de IAM:

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

Si no habilitaste la API de Firestore, verás lo siguiente: en las páginas de Datastore de la consola de 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 IAM para garantizar el acceso al base de datos no se ve afectada.

Verifica que las cuentas que acceden a la base de datos a través de la consola de Google Cloud tener los permisos necesarios que se mencionaron anteriormente.

Roles predefinidos, como Usuario de Datastore y Visualizador de Datastore incluyen los permisos necesarios. Si roles personalizados de IAM, deberás actualizarlos para que incluyan permisos anteriores.

Si ya definiste un rol personalizado para Datastore, es posible que no tenga el permiso datastore.databases.getMetadata. Garantice la continuidad si actualizas tus roles personalizados con datastore.databases.getMetadata o con un rol predefinido

Habilita la API con Terraform

Si lo deseas, 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 agregar un la dependencia en el recurso google_project_service para garantizar 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]
}