Requisito do App Engine
Antes, todos os bancos de dados do Firestore eram vinculados a um aplicativo do App Engine. Quando vinculado, seu banco de dados exige um aplicativo ativo do App Engine no mesmo projeto. Sem o aplicativo ativo do App Engine, acesso de leitura e gravação ao banco de dados estiver desativado.
Os bancos de dados do Firestore agora são provisionados sem vínculo com o App Engine por padrão.
É possível desvincular seu banco de dados caso ele esteja vinculado ao App Engine.
App Engine ativo
Um aplicativo ativo do App Engine significa que existe um aplicativo no mesmo projeto e que este app não está desativado. O app não precisa ser usado. O app e o banco de dados vinculados precisam estar na mesma região.
Se você desativar seu aplicativo do App Engine, também desativará o acesso à banco de dados do Firestore vinculado a esse app.
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 está vinculado a um aplicativo do App Engine.
Desvincular seu banco de dados do App Engine
Se você desativar um aplicativo vinculado do App Engine, também desativará o acesso de leitura e gravação ao seu banco de dados. Se isso acontecer, a página Dados do Firestore no O console do Google Cloud apresenta a opção para desvincular seu banco de dados da App Engine. Clique em Desvincular banco de dados para iniciar o processo.Também é possível desvincular o banco de dados usando a 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 você desvincular seu banco de dados, você pode desativar o App Engine sem afetar o acesso ao seu banco de dados. A desvinculação é uma operação permanente. Pode levar até cinco minutos para que o de desvinculação tenha efeito.
Como migrar recursos do Terraform no App Engine
Se você já gerenciava bancos de dados do Firestore por meio do
google_app_engine_application
recurso do Terraform, é possível usar
google_firestore_database
recurso do Terraform.
Para instruções gerais sobre como gerenciar bancos de dados do Firestore por meio do Terraform, consulte Como automatizar a criação do banco de dados.
Criar um recurso google_firestore_database
No arquivo 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 Locais do Firestore para conferir a lista de locais disponíveis. Escolha o local correspondente do seu banco de dados atual.
Importar o banco de dados do Firestore
Primeiro, verifique se API Firestore está ativado.
Em seguida, importe o banco de dados do Firestore para o arquivo estado:
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 quaisquer campos alterados, verifique se essas alterações são intencionais. Se a saída inclui uma linha semelhante a:
google_firestore_database.database must be replaced
depois inspecionar o arquivo de configuração do Terraform para ver se há algum
em especial no project, location ou
name e, em seguida, execute terraform plan
novamente. Todos os campos que são
exigir que o Terraform substitua seu banco de dados será marcado com
# forces replacement
na saída do plano.
Quando a resposta ao plano do Terraform estiver satisfatória, execute:
terraform apply
Como remover o 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 estiver tudo certo 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 o recurso como sendo destruído, isso não excluir o aplicativo do App Engine. No entanto, o App Engine esse aplicativo não será mais gerenciado pelo Terraform.
Requisito da API Firestore
Antes, todos os bancos de dados do Firestore eram vinculados a um aplicativo do App Engine. Os bancos de dados do Firestore provisionados desvinculados do 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 o banco de dados usando o console do Google Cloud e o CLI gcloud, a API Firestore precisa estar ativada no projeto. Isso é necessário para o Firestore no Modo nativo e Firestore em bancos de dados no modo Datastore.
Quando a execução é feita pelo console do Google Cloud ou pela CLI gcloud, as operações administrativas abaixo exigem as seguintes permissões do IAM:
- Criar banco de dados:
datastore.databases.create
- Mostrar metadados do banco de dados:
datastore.databases.getMetadata
- Editar metadados do banco de dados:
datastore.databases.update
- Criar banco de dados:
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 acima.
Se você definiu um papel personalizado para o Datastore,
ele pode não ter a permissão datastore.databases.getMetadata
. Garantir a continuidade
o acesso atualizando seus papéis personalizados com datastore.databases.getMetadata
ou
usando um papel predefinido.
Ativar a API com 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
, poderá adicionar um
dependência do recurso google_project_service
para garantir que
a API é ativada antes que o Terraform tente criar o banco de dados:
resource "google_firestore_database" "database" { // ... depends_on = [google_project_service.firestore] }