Os bancos de dados do modo Datastore agora são provisionados sem vinculação ao App Engine por padrão.
Se o banco de dados estiver vinculado a um app do App Engine, você poderá desvincular.
App Engine ativo
Um app ativo do App Engine significa que um app existe no mesmo projeto e não está desativado. Ele não exige que o app tenha uso. O app e o banco de dados vinculados precisam estar na mesma região.
Se você desativar seu app do App Engine, também vai desativar o acesso ao banco de dados do modo Datastore vinculado a ele.
Conferir o status da vinculação do App Engine
É possível verificar o estado de desvinculação do App Engine usando a 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, observe o valor de appEngineIntegrationMode
. Se o valor
for DISABLED
, seu banco de dados não estará vinculado a um app do App Engine.
Desvincular seu banco de dados do App Engine
É possível desvincular o banco de dados do modo Datastore do app do App Engine para remover o requisito ativo do App Engine. Ao desvincular seu banco de dados, você pode desativar o App Engine sem afetar o acesso a ele.A desvinculação é uma operação permanente.
Se você desvincular o banco de dados, não será possível usar o recurso Desativar gravações na página Datastore Admin. Se as gravações estiverem desativadas no momento, a desvinculação do banco de dados vai ativar as gravações.
Antes de desvincular o banco de dados do App Engine, ative a API Firestore e atualize as permissões do IAM.
Para desvincular o banco de dados, acesse a página Datastore Admin e clique em Desvincular banco de dados do app. A operação de desvinculação pode levar até cinco minutos para entrar em vigor.
Migrar recursos do Terraform App Engine
Se você já tiver gerenciado bancos de dados no modo Datastore usando o recurso do Terraform google_app_engine_application
, use o recurso google_firestore_database
.
Para instruções gerais sobre como gerenciar bancos de dados do modo Datastore pelo Terraform, consulte Como automatizar a criação de bancos de dados.
Criar um recurso google_firestore_database
No arquivo 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 Locais do Datastore para conferir a lista de locais disponíveis. Escolha o local correspondente ao seu banco de dados.
Importar o banco de dados do modo Datastore
Primeiro, verifique se a API Firestore está ativada.
Em seguida, importe o banco de dados do modo Datastore atual para o estado do Terraform:
terraform import google_firestore_database.database "(default)"
Depois execute:
terraform plan
Inspecione a saída para garantir que a importação foi concluída. Se a saída mostrar campos sendo alterados, verifique se essas mudanças são intencionais. Se a saída incluir uma linha semelhante a:
google_firestore_database.database must be replaced
Em seguida, inspecione o arquivo de configuração do Terraform para saber se houve
erros, principalmente nos campos project, location ou
name, e execute terraform plan
novamente. Todos os campos que
exigem que o Terraform substitua seu banco de dados serão marcados com
# forces replacement
na saída do plano.
Quando estiver satisfeito com a saída do plano do Terraform, execute:
terraform apply
Remoção do recurso google_app_engine_application
Se você tiver um recurso google_app_engine_application
no
arquivo de configuração do Terraform, remova-o dele agora.
Em seguida, execute novamente:
terraform plan
A resposta será semelhante a esta:
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 você estiver satisfeito com a saída do plano, execute
terraform apply
No momento, o Terraform não oferece suporte à exclusão de recursos do App Engine. Embora o Terraform mostre que o recurso está sendo destruído, ele não exclui o aplicativo do App Engine. No entanto, o aplicativo do App Engine não será mais gerenciado pelo Terraform.
Exigência da API Firestore
Antes, todos os bancos de dados do Firestore no modo Datastore estavam vinculados a um app do App Engine. Agora, os bancos de dados do modo Datastore são provisionados sem vinculação ao App Engine por padrão. Além disso, todos os bancos de dados, existentes e recém-criados, agora têm os seguintes requisitos:
- Para gerenciar seu banco de dados no console do Google Cloud e na CLI gcloud, a API Firestore precisa estar ativada no projeto. Isso é necessário para o Firestore no modo nativo e para o Firestore em bancos de dados no modo Datastore.
Quando executadas no console do Google Cloud ou na CLI gcloud, as operações administrativas abaixo exigem as seguintes permissões do IAM:
- Criar banco de dados:
datastore.databases.create
- Conferir metadados do banco de dados:
datastore.databases.getMetadata
- Editar metadados do banco de dados:
datastore.databases.update
- Criar banco de dados:
Se você não tiver ativado a API Firestore, vai aparecer um erro nas páginas do Datastore do console do Google Cloud que inclui a seguinte notificação:
A API Firestore é necessária para administrar seu banco de dados.
Esse erro também inclui um botão para ativar a API Firestore. Clique no botão para ativar a API.
Verifique também suas permissões do IAM para garantir que seu acesso ao banco de dados não seja afetado.
Verifique se as contas que acessam o banco de dados pelo console do Google Cloud têm as permissões necessárias listadas acima.
Papéis predefinidos, como Usuário do Datastore e Leitor do Datastore, incluem as permissões necessárias. Se você criou papéis personalizados do IAM, talvez seja necessário atualizá-los para incluir as permissões acima.
Se você já definiu um papel personalizado para o Datastore,
ele pode não ter a permissão datastore.databases.getMetadata
. Para garantir o acesso
contínuo, atualize as funções personalizadas com datastore.databases.getMetadata
ou
use uma função predefinida.
Como ativar a API usando o Terraform
Se quiser, você também pode ativar a API Firestore pelo Terraform:
resource "google_project_service" "firestore" { project = "project" service = "firestore.googleapis.com" }
Se você tiver um recurso google_firestore_database
, adicione uma dependência ao recurso google_project_service
para garantir que a API seja ativada antes que o Terraform tente criar o banco de dados:
resource "google_firestore_database" "database" { // ... depends_on = [google_project_service.firestore] }