Requisito do App Engine

Anteriormente, todas as bases de dados do Firestore no modo Datastore estavam associadas a uma app do App Engine. Quando associada, a sua base de dados requer uma app do App Engine ativa no mesmo projeto. Sem a app do App Engine ativa, o acesso de leitura e escrita à base de dados é desativado.

As bases de dados do modo Datastore são agora aprovisionadas sem associação ao App Engine por predefinição.

Se a sua base de dados estiver associada a um App Engine, pode desassociá-la.

App Engine ativo

Uma app do App Engine ativa significa que existe uma app no mesmo projeto e que esta app não está desativada. Não requer que a app tenha qualquer utilização. A app e a base de dados associadas têm de existir na mesma região.

Se desativar a sua app do App Engine, também desativa o acesso à base de dados do modo Datastore associada a essa app.

Pode verificar o estado da desassociação do App Engine através da 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)"

Na resposta, examine o valor de appEngineIntegrationMode. Se o valor for DISABLED, a sua base de dados não está associada a uma app do App Engine.

Pode desassociar a base de dados do modo Datastore da app do App Engine para remover o requisito ativo do App Engine. Quando desassocia a base de dados, pode desativar o App Engine sem afetar o acesso à base de dados.

A desassociação é uma operação permanente.

Se desassociar a base de dados, não pode usar a funcionalidade Desativar escritas na página Administração do Datastore. Se as gravações estiverem atualmente desativadas, a desassociação da base de dados ativa as gravações.

Antes de desassociar a sua base de dados do App Engine, certifique-se de que ativa a API Firestore e atualiza as suas autorizações da IAM.

Para desassociar a base de dados, aceda à página Administração do Datastore e clique em Desassociar base de dados da app. A operação de desassociação pode demorar até cinco minutos a entrar em vigor.

Aceda à administração do Datastore

Migrar recursos do App Engine do Terraform

Se geriu anteriormente bases de dados do modo Datastore através do recurso do Terraform, pode usar o recurso do Terraform em alternativa.google_app_engine_applicationgoogle_firestore_database

Para obter instruções gerais sobre a gestão de bases de dados do modo Datastore através do Terraform, consulte o artigo Automatizar a criação de bases de dados.

Crie um recurso google_firestore_database

No ficheiro de configuração do Terraform, crie um novo 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"
}

Consulte as localizações do Datastore para ver a lista de localizações disponíveis. Escolha a localização correspondente à da sua base de dados existente.

Importe a base de dados do modo Datastore existente

Primeiro, certifique-se de que a API Firestore está ativada.

Em seguida, importe a base de dados do modo Datastore existente para o estado do Terraform:

terraform import google_firestore_database.database "(default)"

Em seguida, execute:

terraform plan

Inspeccione o resultado para garantir que a importação foi concluída com êxito. Se o resultado mostrar alterações a campos, certifique-se de que estas alterações são intencionais. Se o resultado incluir uma linha semelhante a:

google_firestore_database.database must be replaced

Em seguida, inspecione o ficheiro de configuração do Terraform para ver se existem erros, particularmente nos campos project, location ou name e, de seguida, execute terraform plan novamente. Todos os campos que exigem que o Terraform substitua a sua base de dados são marcados com # forces replacement no resultado do plano.

Quando estiver satisfeito com o resultado do plano do Terraform, execute o seguinte comando:

terraform apply

Remover o recurso google_app_engine_application

Se tiver um recurso google_app_engine_application no ficheiro de configuração do Terraform, remova-o desse ficheiro agora.

Depois, execute novamente:

terraform plan

Deverá ver uma saída semelhante à seguinte:

Terraform will perform the following actions:

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

Quando estiver satisfeito com o resultado do plano, execute o comando

terraform apply

Atualmente, o Terraform não suporta a eliminação de recursos do App Engine; embora o Terraform mostre o recurso como destruído, na verdade, não elimina a aplicação do App Engine. No entanto, a aplicação do App Engine vai deixar de ser gerida pelo Terraform.

Requisito da API Firestore

Anteriormente, todas as bases de dados do Firestore no modo Datastore estavam associadas a uma app do App Engine. As bases de dados do modo Datastore são agora aprovisionadas desassociadas do App Engine por predefinição. Além disso, todas as bases de dados, tanto as existentes como as recém-criadas, têm agora os seguintes requisitos:

  • Para gerir a sua base de dados a partir da Google Cloud consola e da CLI gcloud, a API Firestore tem de estar ativada no projeto. Isto é necessário para bases de dados do Firestore no modo nativo e do Firestore no modo Datastore.
  • Quando executadas a partir da Google Cloud consola ou da CLI gcloud, as operações administrativas abaixo requerem as seguintes autorizações do IAM:

    • Crie uma base de dados: datastore.databases.create
    • Ver metadados da base de dados: datastore.databases.getMetadata
    • Edite os metadados da base de dados: datastore.databases.update

Se não tiver ativado a API Firestore, é apresentado um erro nas páginas do Datastore da consola que inclui o seguinte aviso: Google Cloud

A API Firestore é necessária para administrar a sua base de dados.

Este erro também inclui um botão para ativar a API Firestore. Clique no botão para ativar a API.

Também deve validar as suas autorizações da IAM para garantir que o seu acesso à base de dados não é afetado.

Verifique se as contas que acedem à base de dados através da Google Cloud consola têm as autorizações necessárias, indicadas acima.

As funções predefinidas, como Utilizador do Datastore e Leitor do Datastore, incluem as autorizações necessárias. Se tiver criado funções de IAM personalizadas, pode ter de as atualizar para incluir as autorizações acima.

Se definiu anteriormente uma função personalizada para o Datastore, esta pode não ter a autorização datastore.databases.getMetadata. Garanta o acesso contínuo atualizando as suas funções personalizadas com datastore.databases.getMetadata ou usando uma função predefinida.

Ativar a API através do Terraform

Se quiser, também pode ativar a API Firestore através do Terraform:

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

Se tiver um recurso google_firestore_database, pode adicionar uma dependência no recurso google_project_service para garantir que a API está ativada antes de o Terraform tentar criar a base de dados:

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