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, é possível 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 os bancos de dados do Firestore no modo Datastore.
Quando executadas no console do Google Cloud ou na CLI gcloud, as operações administrativas abaixo exigem as seguintes permissões de 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 suas funções personalizadas com datastore.databases.getMetadata
ou
use uma função predefinida.
Como ativar a API pelo 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
, poderá adicionar 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] }