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.
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 base de dados 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_application
google_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
- Crie uma base de dados:
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] }