Requisito do App Engine
Anteriormente, todas as bases de dados do Firestore 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 Firestore são agora aprovisionadas desassociadas do 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 Firestore associada a essa app.
Veja o estado da associação do App Engine
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.
Desassocie a sua base de dados do App Engine
Se desativar uma app do App Engine associada, também desativa o acesso de leitura e escrita à sua base de dados. Se isto acontecer, a página Dados do Firestore na Google Cloud consola apresenta a opção para desassociar a base de dados da app do App Engine. Clique em Desassociar base de dados para iniciar o processo.Também pode desassociar a base de dados através da API REST:
curl -X PATCH \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
--data '{"app_engine_integration_mode": "DISABLED"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=appEngineIntegrationMode"
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. A operação de desassociação pode demorar até cinco minutos a entrar em vigor.
Migrar recursos do App Engine do Terraform
Se geriu anteriormente bases de dados do Firestore através do recurso do Terraform, pode usar o recurso do Terraform em alternativa.google_app_engine_application
google_firestore_database
Para obter instruções gerais sobre a gestão de bases de dados do Firestore 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
:
firestore.tf
resource "google_firestore_database" "database" { project = "project" name = "(default)" location_id = "location" type = "database_type" // either "FIRESTORE_NATIVE" or "DATASTORE_MODE" app_engine_integration_mode = "DISABLED" // Optional, but recommended for safety delete_protection_state = "DELETE_PROTECTION_ENABLED" }
Consulte as localizações do Firestore 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 Firestore existente
Primeiro, certifique-se de que a API Firestore está ativada.
Em seguida, importe a base de dados do Firestore 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 base de dados são marcados com
# forces replacement
na saída 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 apresente 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 estavam associadas a uma app do App Engine. As bases de dados do Firestore 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
- Crie uma base de dados:
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] }