Puedes automatizar la creación de bases de datos en Cloud Firestore a través del siguiente proceso:
- Crea un proyecto de Google Cloud nuevo. Cada proyecto tiene un límite de una base de datos de Cloud Firestore.
- Crea una aplicación de App Engine. Cloud Firestore depende de App Engine. Debes activar App Engine para usar Cloud Firestore.
- Crea una base de datos de Cloud Firestore.
En esta página se describe cómo completar este proceso con las API de REST, la herramienta de línea de comandos de gcloud y Terraform.
Crea una base de datos con las API de REST
Puedes aprovisionar una base de datos de Cloud Firestore con la API de Resource Manager y la API de Administrador de App Engine.
Autenticación y autorización
Para acceder a las API de Resource Manager y de App Engine Admin, debes autenticar la solicitud con un token de acceso. El token de acceso requiere el siguiente permiso de OAuth 2.0:
https://www.googleapis.com/auth/cloud-platform
Si quieres configurar la autenticación de una app, consulta cómo configurar la autenticación para aplicaciones de producción de servidor a servidor.
Mientras desarrollas y pruebas tu aplicación, puedes obtener un token de acceso mediante el siguiente comando:
gcloud auth application-default print-access-token
Autorización
La cuenta de usuario o de servicio autenticada requiere el permiso resourcemanager.projects.create
para crear un proyecto nuevo.
Por ejemplo, la función de IAM Creador de proyectos otorga este permiso.
Para otorgar esta función, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.
Crea un proyecto y una base de datos nuevos
- Usa el método projects.create para iniciar una operación de creación de proyecto. En el cuerpo de la solicitud, define un recurso
Project
, por ejemplo:HTTP
POST https://cloudresourcemanager.googleapis.com/v1/projects HTTP/1.1 Authorization: Bearer access-token Accept: application/json Content-Type: application/json { "projectId": "project-id" }
En el código anterior, se ilustra lo siguiente:
access-token
es un token de acceso autenticado.project-id
es un ID de proyecto único.
Si se realiza correctamente, la solicitud muestra un nombre de operación:
200: { "name": "operations/cp.6311184959990822268" }
-
Usa el nombre de la operación del paso anterior y el método operations.get de Resource Manager para confirmar la creación del proyecto:
HTTP
GET https://cloudresourcemanager.googleapis.com/v1/operations/operation-name HTTP/1.1 Authorization: Bearer access-token Accept: application/json
Cuando se realiza correctamente la creación del proyecto, la respuesta incluye el siguiente campo:
"done": true,
-
Usa el método apps.create de la API de App Engine Admin para crear una aplicación de App Engine y una base de datos de Cloud Firestore. En el cuerpo de la solicitud, define un recurso de aplicación y, luego, incluye el campo
databaseType
, por ejemplo:HTTP
POST https://appengine.googleapis.com/v1/apps HTTP/1.1 Authorization: Bearer access_token Accept: application/json Content-Type: application/json { "databaseType": "CLOUD_FIRESTORE", "id": "project-id", "locationId": "location" }
En el ejemplo anterior, se ilustra lo siguiente:
- project-id es el ID del proyecto que creaste.
- location establece la ubicación de tu aplicación de App Engine y tu base de datos de Cloud Firestore.
Una vez que establezcas la ubicación, no podrás cambiarla. Para obtener una lista completa de las ubicaciones admitidas, consulta Ubicaciones de App Engine.
App Engine y Cloud Firestore admiten las mismas ubicaciones, pero las siguientes regiones de App Engine se mapean a multirregiones de Cloud Firestore:
us-central
(Iowa) crea una base de datos de Cloud Firestore en la multirregiónnam5
(Estados Unidos).europe-west
(Bélgica) crea una base de datos de Cloud Firestore en la multirregióneur3
(Europa).
La solicitud muestra un nombre de operación:
200: { "name": "apps/project-id/operations/8612e502-4aeb-4f12-9e41-bbac0a0b819c", "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "method": "google.appengine.v1.Applications.CreateApplication", "insertTime": "2020-06-05T23:34:32.587Z", "user": "username", "target": "apps/project-id" } }
-
Usa el nombre de la operación del paso anterior y apps.operations.get para confirmar la creación de la base de datos:
HTTP
GET https://appengine.googleapis.com/v1/operation-name HTTP/1.1 Authorization: Bearer access-token Accept: application/json
Cuando se realiza correctamente la operación, la respuesta incluye el siguiente campo:
"done": true,
Agrega una cuenta de facturación y los servicios de Firebase
Para asociar de manera programática una cuenta de facturación con tu proyecto, usa el método projects.updateBillingInfo.
Para habilitar de manera programática los servicios de Firebase en tu proyecto, consulta cómo configurar y administrar un proyecto de Firebase con la API de REST de administración.
Crea una base de datos con gcloud
Puedes usar la herramienta de línea de comandos de gcloud para automatizar la creación de bases de datos en una secuencia de comandos de Bash o PowerShell. En la secuencia de comandos, completa los siguientes pasos:
Crea un proyecto nuevo con
gcloud projects create
:gcloud projects create project-id
Activa App Engine con
gcloud app create
:gcloud app create --region=region --project=project-id
En este comando, region es la ubicación de tu aplicación de App Engine y tu base de datos de Cloud Firestore. Una vez que establezcas la ubicación, no podrás cambiarla. Para obtener una lista completa de las ubicaciones admitidas, consulta Ubicaciones de App Engine.
App Engine y Cloud Firestore admiten las mismas ubicaciones, pero las siguientes regiones de App Engine se asignan a multirregiones de Cloud Firestore:
us-central
(Iowa) crea una base de datos de Cloud Firestore en la multirregiónnam5
(Estados Unidos).europe-west
(Bélgica) crea una base de datos de Cloud Firestore en la multirregióneur3
(Europa).
Habilita la API de Administrador de App Engine con
gcloud services enable
:gcloud services enable appengine.googleapis.com --project=project-id
Crea una base de datos de Cloud Firestore con
gcloud alpha firestore databases create
ogcloud alpha datastore databases create
:gcloud alpha firestore databases create --project=project-id --region=region
Para crear una base de datos de Cloud Firestore en modo Datastore, usa el siguiente código:
gcloud alpha datastore databases create --project=project-id --region=region
Para region, debes utilizar el mismo valor que usaste para activar App Engine.
Crea una base de datos con Terraform
Para aprovisionar una base de datos de Cloud Firestore con Terraform,
usa el recurso google_firestore_database
.
Por ejemplo, con el siguiente archivo de configuración de Terraform se crea un proyecto nuevo y se aprovisiona una base de datos de Cloud Firestore.
firestore.tf
provider "google" { credentials = file("credentials-file") } resource "google_project" "my_project" { name = "My Project" project_id = "project-id" } resource "google_project_service" "firestore" { project = google_project.my_project.project_id service = "firestore.googleapis.com" } resource "google_firestore_database" "database" { project = google_project.my_project.project_id name = "(default)" location_id = "location" type = "FIRESTORE_NATIVE" depends_on = [google_project_service.firestore] }
En el código anterior, se ilustra lo siguiente:
- credentials-file es la ruta de acceso al archivo de claves de tu cuenta de servicio.
- project-id es el ID del proyecto. Los IDs de proyecto deben ser únicos.
- location es la ubicación de tus bases de datos de Cloud Firestore. Una vez que establezcas la ubicación, no podrás cambiarla. Para obtener una lista completa de las ubicaciones admitidas, consulta Ubicaciones de Cloud Firestore.
Si quieres usar App Engine, usa el recurso
google_app_engine_application
en su lugar. Configura database_type
como CLOUD_FIRESTORE
o
CLOUD_DATASTORE_COMPATIBILITY
.
provider "google" { credentials = file("credentials-file") } resource "google_project" "my_project" { name = "My Project" project_id = "project-id" } resource "google_app_engine_application" "app" { project = google_project.my_project.project_id location_id = "location" database_type = "CLOUD_FIRESTORE" }
us-central
(Iowa) crea una base de datos de Cloud Firestore en la multirregiónnam5
(Estados Unidos).europe-west
(Bélgica) crea una base de datos de Cloud Firestore en la multirregióneur3
(Europa).
Además, Cloud Firestore está disponible en algunas regiones en las que App Engine no lo está.