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.
Viene ora eseguito il provisioning dei database Firestore scollegati da App Engine per impostazione predefinita.
Se il database è collegato a un App Engine, puoi scollegarlo.
App Engine attivo
Un'app App Engine attiva significa 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 disabiliti l'app App Engine, disattivi anche l'accesso allo Database Firestore collegato all'app.
Visualizzare lo stato del collegamento ad App Engine
Puoi controllare lo stato di 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.
Scollega il tuo 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, viene visualizzata la pagina Dati Firestore in La console Google Cloud offre la possibilità di scollegare il database dal App Engine. Fai clic su Scollega database per iniziare la procedura.Puoi anche scollegare il database 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 disabilitare App Engine senza influire sull'accesso al tuo 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 hai gestito i database Firestore tramite
google_app_engine_application
risorsa Terraform, puoi utilizzare
google_firestore_database
risorsa Terraform.
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 località corrispondente del database esistente.
Importa il database Firestore esistente
Innanzitutto, assicurati che API Firestore sia abilitato.
Quindi, importa il database Firestore esistente in Terraform stato:
terraform import google_firestore_database.database "(default)"
Poi, esegui:
terraform plan
Controlla l'output per assicurarti che l'importazione sia 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.
Quando l'output del piano Terraform ti soddisfa, 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)
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. I database Firestore sono ora di cui è stato eseguito il provisioning scollegati 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 gcloud CLI, 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 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:
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
. Continua
all'accesso aggiornando i ruoli personalizzati con datastore.databases.getMetadata
oppure
mediante 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] }