Questa pagina descrive come pianificare le esportazioni dei dati di Firestore in modalità Datastore. Per eseguire le esportazioni in base a una pianificazione, ti consigliamo di utilizzare le funzioni Cloud Run e Cloud Scheduler. Crea una Cloud Function che avvia le esportazioni e utilizza Cloud Scheduler per eseguirla.
Prima di iniziare
Prima di pianificare le esportazioni dei dati, devi completare le seguenti attività:
- Abilita la fatturazione per il tuo progetto Google Cloud. Solo i progetti Google Cloud con la fatturazione abilitata possono utilizzare la funzionalità di esportazione e importazione.
- Crea un bucket Cloud Storage in una posizione vicina alla posizione del database in modalità Datastore. Le operazioni di esportazione richiedono un bucket Cloud Storage di destinazione. Non puoi utilizzare un bucket Chi paga richiedente per le operazioni di esportazione.
Creare una Cloud Function e un job Cloud Scheduler
Per creare una funzione Cloud Function che avvia le esportazioni di dati e un job Cloud Scheduler per chiamarla, segui questi passaggi:
Crea una Cloud Function datastore_export
-
Vai alla pagina Cloud Functions nella console Google Cloud:
- Fai clic su Crea funzione
- Inserisci un nome funzione, ad esempio
datastoreExport
- In Trigger, seleziona Cloud Pub/Sub. Cloud Scheduler utilizza il tuo argomento Pub/Sub per chiamare la funzione.
- Nel campo Argomento, seleziona Crea un argomento. Inserisci un nome per
l'argomento Pub/Sub, ad esempio
startDatastoreExport
. Prendi nota del nome dell'argomento, che ti servirà per creare il job Cloud Scheduler. - In Codice sorgente, seleziona Editor incorporato.
- Nel menu a discesa Runtime, seleziona Python 3.7.
- Inserisci il seguente codice per
main.py
: - In
requirements.txt
, aggiungi la seguente dipendenza: - In Punto di ingresso, inserisci
datastore_export
, il nome della funzione inmain.py
. - Fai clic su Esegui il deployment per eseguire il deployment della Cloud Function.
Configurare le autorizzazioni di accesso
Successivamente, concedi alla Cloud Function l'autorizzazione per avviare le operazioni di esportazione e scrivere nel bucket Cloud Storage.
Questa funzione Cloud utilizza l'account di servizio predefinito del progetto per autenticare e autorizzare le operazioni di esportazione. Quando crei un progetto, viene creato un account di servizio predefinito con il seguente nome:
project_id@appspot.gserviceaccount.com
Questo account di servizio deve disporre dell'autorizzazione per avviare le operazioni di esportazione e scrivere nel bucket Cloud Storage. Per concedere queste autorizzazioni, assegna i seguenti ruoli IAM all'account di servizio predefinito:
Cloud Datastore Import Export Admin
- Ruolo
Storage Object User
nel bucket
Puoi utilizzare Google Cloud CLI per assegnare questi ruoli. Puoi accedere a questo
strumento da Cloud Shell nella console Google Cloud:
Avvia Cloud Shell
-
Assegna il ruolo Cloud Datastore Import Export Admin. Sostituisci project_id ed esegui il seguente comando:
gcloud projects add-iam-policy-binding project_id \ --member serviceAccount:project_id@appspot.gserviceaccount.com \ --role roles/datastore.importExportAdmin
-
Assegna il ruolo Utente oggetto Storage al bucket. Sostituisci bucket_name e project_id ed esegui il seguente comando:
gcloud storage buckets add-iam-policy-binding gs://bucket_name \ --member=serviceAccount:project_id@appspot.gserviceaccount.com \ --role=roles/storage.objectUser
Crea un job Cloud Scheduler
A questo punto, crea un job Cloud Scheduler che chiami la Cloud Function datastore_export
:
Vai alla pagina Cloud Scheduler nella console Google Cloud:
Fai clic su Crea job.
Inserisci un Nome per il job, ad esempio
scheduledDatastoreExport
.Inserisci una frequenza nel formato unix-cron.
Seleziona un Fuso orario.
In Destinazione, seleziona Pub/Sub. Nel campo Topic, inserisci il nome dell'argomento Pub/Sub che hai definito insieme alla Cloud Function,
startDatastoreExport
nell'esempio precedente.Nel campo Payload, inserisci un oggetto JSON per configurare l'operazione di esportazione. La Cloud Function
datastore_export
richiede un valorebucket
. Se vuoi, puoi includere i valorikinds
onamespaceIDs
per impostare un filtro delle entità, ad esempio:Esporta tutte le entità
{ "bucket": "gs://bucket_name" }
Esportazione con filtro per entità
Esporta le entità di tipo
User
oTask
da tutti gli spazi dei nomi:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"] }
Esporta entità di tipo
User
oTask
dagli spazi dei nomi predefinito eTesters
. Utilizza una stringa vuota (""
) per specificare lo spazio dei nomi predefinito:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"], "namespaceIds": ["", "Testers"] }
Esporta entità di qualsiasi tipo dagli spazi dei nomi predefinito e
Testers
. Utilizza una stringa vuota (""
) per specificare lo spazio dei nomi predefinito:{ "bucket": "gs://bucket_name", "namespaceIds": ["", "Testers"] }
dove
bucket_name
è il nome del bucket Cloud Storage.Fai clic su Crea.
Testare le esportazioni pianificate
Per testare la Cloud Function e il job Cloud Scheduler, esegui il job Cloud Scheduler nella pagina Cloud Scheduler della console Google Cloud. Se l'operazione ha esito positivo, viene avviata un'operazione di esportazione effettiva.
Vai alla pagina Cloud Scheduler nella console Google Cloud.
Vai a Cloud SchedulerNella riga del nuovo job Cloud Scheduler, fai clic su Esegui ora.
Dopo alcuni secondi, fai clic su Aggiorna. Il job Cloud Scheduler dovrebbe actualizare la colonna dei risultati su Successo e Ultima esecuzione sull'ora corrente.
La pagina Cloud Scheduler conferma solo che il job ha inviato un messaggio all'argomento Pub/Sub. Per verificare se la richiesta di esportazione è andata a buon fine, visualizza i log della Cloud Function.
Visualizza i log di Cloud Functions
Per verificare se la Cloud Function ha avviato correttamente un'operazione di esportazione, consulta la pagina Esplora log nella console Google Cloud.
Il log della Cloud Function segnala gli errori e le iniziazioni di esportazione riuscite.
Visualizzare l'avanzamento dell'esportazione
Puoi utilizzare il comando gcloud datastore operations list
per visualizzare lo stato di avanzamento delle operazioni di esportazione. Consulta la sezione Elenco di tutte le operazioni a lunga esecuzione.
Al termine di un'operazione di esportazione, puoi visualizzare i file di output nel tuo bucket Cloud Storage. Il servizio di esportazione gestita utilizza un timestamp per organizzare le operazioni di esportazione: