Requisito di App Engine
In precedenza, tutti i database Firestore erano collegati a un'app App Engine. Se collegato, il database richiede un'app App Engine attiva nella stessa progetto. Senza l'app App Engine attiva, puoi accedere in lettura e scrittura al il database è disabilitato.
Ora il provisioning dei database Firestore viene eseguito scollegato da App Engine per impostazione predefinita.
Se il database è collegato a un App Engine, puoi scollegarlo.
App Engine attivo
Un'app App Engine attiva indica che esiste un'app nello stesso progetto e che questa app non è disattivata. Non è necessario che l'app venga utilizzata. L'app e il database collegati devono trovarsi nella stessa regione.
Se disattivi l'app App Engine, viene disattivato anche l'accesso al database Firestore collegato all'app.
Visualizza lo stato del collegamento ad App Engine
Puoi controllare lo stato dello scollegamento di App Engine utilizzando l'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)"
Nella risposta, controlla il valore di appEngineIntegrationMode
. Se il valore
è DISABLED
, il database non è collegato a un'app App Engine.
Scollegare il database da App Engine
Se disabiliti un'app di App Engine collegata, disattivi anche l'accesso in lettura e scrittura al tuo database. In questo caso, nella pagina Dati Firestore della console Google Cloud viene visualizzata l'opzione per scollegare il database dall'app App Engine. Fai clic su Scollega database per avviare la procedura.Puoi scollegare il database anche utilizzando l'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 scolleghi il database, puoi disattivare App Engine senza influire sull'accesso al database. Lo scollegamento è un'operazione permanente. Potrebbero essere necessari fino a cinque minuti prima che che l'operazione di scollegamento abbia effetto.
Migrazione delle risorse Terraform App Engine
Se in precedenza gestivi i database Firestore tramite la risorsa Terraform google_app_engine_application
, puoi utilizzare la risorsa Terraform google_firestore_database
.
Per istruzioni generali sulla gestione dei database Firestore tramite Terraform: consulta Automazione della creazione dei database.
Crea una risorsa google_firestore_database
Nel file di configurazione Terraform, crea una nuova risorsa 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" }
Consulta: Sedi di Firestore per consultare l'elenco delle località disponibili. Scegli la posizione corrispondente a quella del tuo database esistente.
Importa il database Firestore esistente
Innanzitutto, assicurati che l'API Firestore sia abilitata.
Ora importa il database Firestore esistente nello stato Terraform:
terraform import google_firestore_database.database "(default)"
Poi, esegui:
terraform plan
Controlla l'output per assicurarti che l'importazione sia stata completata correttamente. Se l'output mostra eventuali modifiche dei campi, assicurati che le modifiche siano intenzionali. Se l'output include una riga simile a:
google_firestore_database.database must be replaced
quindi controlla il file di configurazione di Terraform per verificare se sono stati commessi errori, in particolare nei campi project, location o
name, quindi esegui di nuovo terraform plan
. Tutti i campi che richiedono a Terraform di sostituire il database verranno contrassegnati con # forces replacement
nell'output del piano.
Una volta che l'output del piano Terraform è soddisfacente, esegui:
terraform apply
Rimozione della risorsa google_app_engine_application
Se nel tuo file di configurazione Terraform è già presente una risorsa google_app_engine_application
, rimuovila subito da quel file.
Dopodiché, esegui di nuovo:
terraform plan
Dovresti vedere un output simile al seguente:
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 l'output del piano ti soddisfa, esegui
terraform apply
Al momento Terraform non supporta l'eliminazione delle risorse App Engine. Anche se Terraform mostra la risorsa come distrutta, non eliminerà effettivamente l'applicazione App Engine. Tuttavia, l'applicazione App Engine non sarà più gestita da Terraform.
Requisito dell'API Firestore
In precedenza, tutti i database Firestore erano collegati a un'app App Engine. Ora, per impostazione predefinita, i database Firestore vengono provisionati scollegati da App Engine. Inoltre, tutti i database, sia esistenti che appena creati, ora devono soddisfare i seguenti requisiti:
- Per gestire il tuo database dalla console Google Cloud e dalla CLI gcloud, l'API Firestore deve essere abilitata nel progetto. Questo campo è obbligatorio sia per Firestore in Modalità Native e Firestore nei database in modalità Datastore.
Se eseguite dalla console Google Cloud o dalla CLI gcloud, le operazioni amministrative riportate di seguito richiedono le seguenti autorizzazioni IAM:
- Crea database:
datastore.databases.create
- Visualizza i metadati del database:
datastore.databases.getMetadata
- Modifica metadati del database:
datastore.databases.update
- Crea database:
Ruoli predefiniti, ad esempio Utente datastore e Visualizzatore datastore includono le autorizzazioni richieste. Se hai creato ruoli IAM personalizzati, potresti doverli aggiornare per includere le autorizzazioni riportate sopra.
Se in precedenza hai definito un ruolo personalizzato per Datastore, potrebbe mancare l'autorizzazione datastore.databases.getMetadata
. Garantisci l'accesso continuativo aggiornando i ruoli personalizzati con datastore.databases.getMetadata
o utilizzando un ruolo predefinito.
Abilitazione dell'API tramite Terraform
Se vuoi, puoi anche abilitare l'API Firestore tramite Terraform:
resource "google_project_service" "firestore" { project = "project" service = "firestore.googleapis.com" }
Se hai una risorsa google_firestore_database
, puoi aggiungere una dipendenza alla risorsa google_firestore_database
per assicurarti che l'API sia abilitata prima che Terraform tenti di creare il database:
resource "google_firestore_database" "database" { // ... depends_on = [google_project_service.firestore] }