Esta página foi traduzida pela API Cloud Translation.
Switch to English

Como automatizar a criação do banco de dados

É possível automatizar a criação do banco de dados do Firestore com o seguinte processo:

  1. Crie um novo projeto do Google Cloud. Cada projeto é limitado a um banco de dados do Firestore.
  2. Crie um aplicativo do App Engine. O Firestore depende do App Engine. É necessário ativar o App Engine para usar o Firestore.
  3. Crie um banco de dados do 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 Firestore usando as APIs Resource Manager e App Engine Admin.

Autenticação e autorização

Para acessar as APIs de administração do Resource Manager e do 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 requer a 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

  1. 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:

    Se a solicitação for bem-sucedida, você verá um nome de operação:

    200:
    
    {
      "name": "operations/cp.6311184959990822268"
    }
        
  2. 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,
          
  3. Use o método apps.create da App Engine Admin API para criar um aplicativo do App Engine e um banco de dados do Firestore. No corpo da solicitação, defina um recurso Appplication 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"
    }
          

    onde:

    • project-id é o ID do projeto que você criou.
    • location define o local do aplicativo do App Engine e do banco de dados do Firestore. Depois de definido, não é possível alterar o local. Para ver uma lista completa de locais compatíveis, consulte Locais do App Engine.

      O App Engine e o Firestore são compatíveis com os mesmos locais, mas as seguintes regiões do App Engine são correlacionadas a várias regiões do Firestore:

      • us-central (Iowa) cria um banco de dados do Firestore multirregional nam5 (Estados Unidos).
      • europe-west (Bélgica) cria um banco de dados do Firestore multirregional eur3 (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"
      }
    }
            
  4. 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/apps/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:

  1. Crie um novo projeto com gcloud projects create:

    gcloud projects create project-id
  2. Ative o App Engine com gcloud app create:

    gcloud app create --region=region --project=project-id

    onde region é o local do aplicativo do App Engine e do banco de dados do Firestore. Depois de definido, não é possível alterar o local. Para ver uma lista completa de locais compatíveis, consulte Locais do App Engine.

    O App Engine e o Firestore são compatíveis com os mesmos locais, mas as seguintes regiões do App Engine são mapeadas para várias regiões do Firestore:

    • us-central (Iowa) cria um banco de dados do Firestore multirregional nam5 (Estados Unidos).
    • europe-west (Bélgica) cria um banco de dados do Firestore multirregional eur3 (Europa).
  3. Ative a API Admin do App Engine com gcloud services enable:

    gcloud services enable appengine.googleapis.com --project=project-id
  4. Crie um banco de dados do Firestore com gcloud alpha firestore databases create ou gcloud alpha datastore databases create:

    gcloud alpha firestore databases create --project=project-id --region=region

    Para criar um banco de dados do Firestore em modo Datastore, use:

    gcloud alpha datastore databases create --project=project-id --region=region

    Para region, use o mesmo valor usado para ativar o App Engine.

Criar um banco de dados com a Terraform

Para provisionar um banco de dados do Firestore com a Terraform, use o recurso google_app_engine_application. Defina database_type como CLOUD_FIRESTORE ou CLOUD_DATASTORE_COMPATIBILITY.

Por exemplo, o arquivo de configuração do Terraform a seguir cria um novo projeto e provisiona um banco de dados do Firestore:

firestore.tf

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"
}

onde:

  • 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 do aplicativo do App Engine e do banco de dados do Firestore. Não é possível mudar o local depois de defini-lo. Para ver uma lista completa de locais compatíveis, consulte Locais do App Engine.

    O App Engine e o Firestore são compatíveis com os mesmos locais, mas as seguintes regiões do App Engine são mapeadas para várias regiões do Firestore:

    • us-central (Iowa) cria um banco de dados do Firestore multirregional nam5 (Estados Unidos).
    • europe-west (Bélgica) cria um banco de dados do Firestore multirregional eur3 (Europa).