Automatize a criação de banco de dados do Cloud Firestore com este processo:
- Crie um novo projeto do Google Cloud. Cada projeto é limitado a um banco de dados do Cloud Firestore.
- Crie um aplicativo do App Engine. O Cloud Firestore depende do App Engine. É necessário ativar o App Engine para usar o Cloud Firestore.
- Crie um banco de dados do Cloud Firestore.
Nesta página, descrevemos como concluir esse processo usando as APIs REST, a ferramenta de linha de comando gcloud e a Terraform.
Criar um banco de dados com APIs REST
É possível provisionar um banco de dados do Cloud Firestore usando as APIs Resource Manager e App Engine Admin.
Autenticação e autorização
Para acessar as APIs Resource Manager e App Engine, autentique sua solicitação com um token de acesso. O token de acesso exige um escopo do OAuth 2.0 de:
https://www.googleapis.com/auth/cloud-platform
Para configurar a autenticação de um aplicativo, consulte Como configurar a autenticação em aplicativos de produção de servidor para servidor.
Ao desenvolver e testar o aplicativo, é possível obter um token de acesso usando:
gcloud auth application-default print-access-token
.
Autorização
A conta de usuário ou de serviço autenticada precisa da permissão resourcemanager.projects.create
para criar um novo projeto.
O papel "Criador de projetos" do IAM, por exemplo, concede essa permissão.
Para conceder esse papel, consulte Como conceder, alterar e revogar acesso a recursos.
Criar um novo projeto e banco de dados
- Use o método
projects.create
para iniciar uma operação de criação de projeto. No corpo da solicitação,
defina um recurso
Project
, por exemplo: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" }
em que:
access-token
é um token de acesso autenticado.project-id
é um ID do projeto exclusivo.
Se a solicitação for bem-sucedida, você verá um nome de operação:
200: { "name": "operations/cp.6311184959990822268" }
-
Use o nome da operação da etapa anterior e o método operations.get da Resource Manager para confirmar a criação do projeto:
HTTP
GET https://cloudresourcemanager.googleapis.com/v1/operations/operation-name HTTP/1.1 Authorization: Bearer access-token Accept: application/json
Quando a criação do projeto é bem-sucedida, a resposta inclui o seguinte campo:
"done": true,
-
Use o método apps.create da API Admin do App Engine para criar um aplicativo do App Engine e um banco de dados do Cloud Firestore. No corpo da solicitação, defina um recurso de aplicativo e inclua o campo
databaseType
, por exemplo: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" }
em que:
- project-id é o ID do projeto que você criou.
- location define o local do aplicativo do App Engine e do banco de dados do Cloud Firestore.
Não é possível mudar o local após defini-lo. Para ver uma lista completa de locais, consulte
Locais do App Engine.
O App Engine e o Cloud Firestore são compatíveis com os mesmos locais, mas as regiões do App Engine a seguir são mapeadas para multirregiões do Cloud Firestore:
us-central
(Iowa) cria um banco de dados do Cloud Firestore na multirregiãonam5
(Estados Unidos).europe-west
(Bélgica) cria um banco de dados do Cloud Firestore na multirregiãoeur3
(Europa).
A solicitação retorna um nome de operação:
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" } }
-
Use o nome da operação da etapa anterior e apps.operations.get para confirmar a criação do banco de dados:
HTTP
GET https://appengine.googleapis.com/v1/operation-name HTTP/1.1 Authorization: Bearer access-token Accept: application/json
Quando a operação for bem-sucedida, a resposta incluirá o campo a seguir:
"done": true,
Adicionar uma conta de faturamento e serviços do Firebase
Para associar programaticamente uma conta de faturamento ao projeto, use o método projects.updateBillingInfo.
Para ativar programaticamente os serviços do Firebase no projeto, consulte Configuração e gerenciamento de um projeto do Firebase usando a API REST Management.
Criar um banco de dados com a gcloud
É possível usar a ferramenta de linha de comando gcloud para automatizar a criação do banco de dados em um script do Bash ou do PowerShell. No script, conclua estas etapas:
Crie um novo projeto com
gcloud projects create
:gcloud projects create project-id
Ative o App Engine com
gcloud app create
:gcloud app create --region=region --project=project-id
em que region é o local do seu aplicativo do App Engine e do banco de dados do Cloud Firestore. Não é possível mudar o local após defini-lo. Para ver uma lista completa de locais compatíveis, consulte Locais do App Engine.
O App Engine e o Cloud Firestore são compatíveis com os mesmos locais, mas as regiões do App Engine a seguir são mapeadas para multirregiões do Cloud Firestore:
us-central
(Iowa) cria um banco de dados do Cloud Firestore na multirregiãonam5
(Estados Unidos).europe-west
(Bélgica) cria um banco de dados do Cloud Firestore na multirregiãoeur3
(Europa).
Ative a API Admin do App Engine com
gcloud services enable
:gcloud services enable appengine.googleapis.com --project=project-id
Crie um banco de dados do Cloud Firestore com
gcloud alpha firestore databases create
ougcloud alpha datastore databases create
:gcloud alpha firestore databases create --project=project-id --region=region
Para criar um banco de dados do Cloud Firestore no modo Datastore, use:
gcloud alpha datastore databases create --project=project-id --region=region
Para region, use o mesmo valor utilizado para ativar o App Engine.
Criar um banco de dados com o Terraform
Use o recurso google_firestore_database
para provisionar um banco de dados do Cloud Firestore com o Terraform.
Por exemplo, o seguinte arquivo de configuração do Terraform cria um novo projeto e provisiona um banco de dados do 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] }
em que:
- credentials-file é o caminho para o arquivo de chave da sua conta de serviço;
- project-id é o ID do projeto. Os ID do projeto precisam ser exclusivos.
- location é o local dos seus dois bancos de dados do Cloud Firestore. Não é possível mudar o local depois de configurar. Para ter acesso a uma lista completa de locais aceitos, consulte Locais do Cloud Firestore.
Para usar o App Engine, utilize o
recurso
google_app_engine_application
. Defina database_type
como CLOUD_FIRESTORE
ou
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) cria um banco de dados do Cloud Firestore na multirregiãonam5
(Estados Unidos).europe-west
(Bélgica) cria um banco de dados do Cloud Firestore na multirregiãoeur3
(Europa).
Além disso, o Cloud Firestore está disponível em algumas regiões onde o App Engine não está.