Per impostazione predefinita, ora il provisioning dei database in modalità Datastore viene eseguito scollegato da App Engine.
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 l'app non sia disabilitata. Non è necessario l'utilizzo dell'app. L'app e il database collegati devono trovarsi nella stessa regione.
Se disattivi l'app App Engine, viene disattivato anche l'accesso al database in modalità Datastore 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, osserva il valore di appEngineIntegrationMode
. Se il valore
è DISABLED
, il database non è collegato a un'app App Engine.
Scollegare il database da App Engine
Puoi scollegare il database in modalità Datastore dall'app App Engine per rimuovere il requisito di App Engine attivo. Quando scolleghi il database, puoi disabilitare App Engine senza influire sull'accesso al tuo database.Lo scollegamento è un'operazione permanente.
Se scolleghi il database, non puoi utilizzare la funzionalità Disabilita scritture nella pagina Amministratore Datastore. Se le operazioni di scrittura sono attualmente disabilitate, lo scollegamento il database abiliterà le scritture.
Prima di scollegare il database da App Engine, assicurati di abilitare l'API Firestore e aggiornare le autorizzazioni IAM.
Per scollegare il database, vai alla pagina Amministrazione Datastore e fai clic su Scollega database dall'app. L'operazione di scollegamento potrebbe richiedere fino a cinque minuti.
Vai ad Amministrazione Datastore
Migrazione delle risorse App Engine di Terraform
Se in precedenza gestivi i database in modalità Datastore tramite la risorsa Terraform
google_app_engine_application
, puoi utilizzare la risorsa Terraform
google_firestore_database
.
Per istruzioni generali sulla gestione dei database in modalità Datastore tramite Terraform, consulta Automatizzare la creazione del database.
Crea una risorsa google_firestore_database
Nel file di configurazione di Terraform, crea un nuovo
google_firestore_database
risorsa:
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" }
Consulta: Sedi del datastore per consultare l'elenco delle località disponibili. Scegli la località corrispondente del database esistente.
Importa il database in modalità Datastore esistente
Innanzitutto, assicurati che API Firestore sia abilitato.
Successivamente, importa il database esistente in modalità Datastore 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 Terraform per vedere se ce ne sono
di errore, soprattutto in project, location o
name campi ed esegui di nuovo terraform plan
. Tutti i campi che
la sostituzione del database da parte di Terraform sarà contrassegnata 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 hai già una risorsa google_app_engine_application
in
del file di configurazione Terraform, rimuovilo 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)
Una volta soddisfatti dell'output del piano, 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 in modalità Datastore erano collegati a un'app App Engine. I database in modalità Datastore sono ora sottoposte a provisioning scollegato da App Engine per impostazione predefinita. Inoltre, tutti i database, esistenti e di recente, ora hanno 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 è necessario sia per i database Firestore in modalità Native sia per i database Firestore in modalità Datastore.
Se eseguita dalla console Google Cloud o da gcloud CLI, le operazioni amministrative seguenti richiederanno 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:
Se non hai abilitato l'API Firestore, vedrai viene visualizzato un errore nelle pagine Datastore della console Google Cloud che include seguente avviso:
L'API Firestore è obbligatoria per amministrare il database.
Questo errore include anche un pulsante per abilitare l'API Firestore. Fai clic sul pulsante per abilitare l'API.
Dovresti anche verificare le autorizzazioni IAM per assicurarti che il tuo accesso al database non sia interessato.
Verifica che gli account che accedono al database tramite la console Google Cloud dispongono delle autorizzazioni richieste, elencate sopra.
Ruoli predefiniti, ad esempio Utente datastore e Visualizzatore datastore includono le autorizzazioni richieste. Se creato ruoli IAM personalizzati, potrebbe essere necessario aggiornarli per includere autorizzazioni qui sopra.
Se in precedenza hai definito
un ruolo personalizzato per Datastore,
potrebbe non disporre dell'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
alla risorsa google_project_service
per garantire che
l'API sia abilitata prima che Terraform tenti di creare il database:
resource "google_firestore_database" "database" { // ... depends_on = [google_project_service.firestore] }