Esporta e importa dati

Puoi utilizzare il servizio di esportazione e importazione gestito di Cloud Firestore per ripristinare i dati dopo l'eliminazione accidentale ed esportare i dati per l'elaborazione offline. Puoi esportare tutti i documenti o solo raccolte specifiche. Allo stesso modo, puoi importare tutti i dati da un'esportazione o solo raccolte specifiche. I dati esportati da un database Cloud Firestore possono essere importati in un altro database Cloud Firestore. Puoi anche caricare le esportazioni di Cloud Firestore in BigQuery .

Questa pagina descrive come esportare e importare documenti Cloud Firestore utilizzando il servizio di esportazione e importazione gestito e Cloud Storage . Il servizio di esportazione e importazione gestito da Cloud Firestore è disponibile tramite lo strumento a riga di comando gcloud e l'API Cloud Firestore ( REST , RPC ).

Prima di iniziare

Prima di poter utilizzare il servizio di esportazione e importazione gestito, è necessario completare le seguenti attività:

  1. Abilita la fatturazione per il tuo progetto Google Cloud. Solo i progetti Google Cloud con fatturazione abilitata possono utilizzare la funzionalità di esportazione e importazione.
  2. Crea un bucket Cloud Storage per il tuo progetto in una posizione vicino alla posizione del database Cloud Firestore . Non è possibile utilizzare un intervallo a carico del richiedente per le operazioni di esportazione e importazione.
  3. Assicurati che il tuo account disponga delle autorizzazioni necessarie per Cloud Firestore e Cloud Storage. Se sei il proprietario del progetto, il tuo account dispone delle autorizzazioni richieste. Altrimenti, i seguenti ruoli concedono le autorizzazioni necessarie per le operazioni di esportazione e importazione e per l'accesso a Cloud Storage:

Autorizzazioni dell'agente di servizio

Le operazioni di esportazione e importazione utilizzano un agente del servizio Cloud Firestore per autorizzare le operazioni di Cloud Storage. L'agente del servizio Cloud Firestore utilizza la seguente convenzione di denominazione:

Agente del servizio Cloud Firestore
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com

Per ulteriori informazioni sugli agenti di servizio, vedere Agenti di servizio .

L'agente del servizio Cloud Firestore richiede l'accesso al bucket Cloud Storage utilizzato in un'operazione di esportazione o importazione. Se il tuo bucket Cloud Storage si trova nello stesso progetto del tuo database Cloud Firestore, l'agente del servizio Cloud Firestore può accedere al bucket per impostazione predefinita .

Se il bucket Cloud Storage si trova in un altro progetto, devi concedere all'agente del servizio Cloud Firestore l'accesso al bucket Cloud Storage.

Assegnare ruoli all'agente di servizio

Puoi utilizzare lo strumento da riga di comando gsutil per assegnare uno dei ruoli seguenti. Ad esempio, per assegnare il ruolo di amministratore di archiviazione all'agente del servizio Cloud Firestore, esegui quanto segue:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

Sostituisci PROJECT_NUMBER con il numero del tuo progetto, utilizzato per nominare l'agente del servizio Cloud Firestore. Per visualizzare il nome dell'agente di servizio, vedere Visualizzare il nome dell'agente di servizio .

In alternativa, puoi assegnare questo ruolo utilizzando la console GCP .

Visualizza il nome dell'agente di servizio

Puoi visualizzare l'account utilizzato dalle operazioni di importazione ed esportazione per autorizzare le richieste dalla pagina Importa/Esporta nella console di Google Cloud Platform. Puoi anche visualizzare se il tuo database utilizza l'agente del servizio Cloud Firestore o l'account del servizio App Engine legacy.

  1. Visualizza l'account di autorizzazione accanto ai processi di importazione/esportazione eseguiti come etichetta.

L'agente di servizio necessita del ruolo Storage Admin per il bucket Cloud Storage da utilizzare per l'operazione di esportazione o importazione.

Configura gcloud per il tuo progetto

Puoi avviare operazioni di importazione ed esportazione tramite la console di Google Cloud Platform o lo strumento a riga di comando gcloud . Per utilizzare gcloud , configura lo strumento da riga di comando e connettiti al tuo progetto in uno dei seguenti modi:

Esporta dati

Un'operazione di esportazione copia i documenti nel tuo database in un set di file in un bucket Cloud Storage. Tieni presente che un'esportazione non è un'esatta istantanea del database acquisita all'ora di inizio dell'esportazione. Un'esportazione può includere modifiche apportate durante l'esecuzione dell'operazione.

Esporta tutti i documenti

Console Google Cloud

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fare clic su Importa/Esporta .

  4. Fare clic su Esporta .

  5. Fare clic sull'opzione Esporta l'intero database .

  6. Sotto Scegli destinazione , inserisci il nome di un bucket Cloud Storage o utilizza il pulsante Sfoglia per selezionare un bucket.

  7. Fare clic su Esporta .

La console ritorna alla pagina Importa/Esporta . Se l'operazione viene avviata correttamente, la pagina aggiunge una voce alla pagina delle importazioni ed esportazioni recenti. In caso di errore, la pagina visualizza un messaggio di errore.

gcloud

Utilizza il comando firestore export per esportare tutti i documenti nel tuo database, sostituendo [BUCKET_NAME] con il nome del tuo bucket Cloud Storage. Aggiungi il flag --async per impedire allo strumento gcloud di attendere il completamento dell'operazione.

  gcloud firestore export gs://[BUCKET_NAME] \
  --database=[DATABASE]

Sostituisci quanto segue:

  • BUCKET_NAME : organizza le tue esportazioni aggiungendo un prefisso file dopo il nome del bucket, ad esempio BUCKET_NAME/my-exports-folder/export-name . Se non fornisci un prefisso file, il servizio di esportazione gestito ne crea uno in base al timestamp corrente.

  • DATABASE : nome del database da cui si vogliono esportare i documenti. Per il database predefinito, utilizzare --database='(default)' .

Una volta avviata un'operazione di esportazione, la chiusura del terminale non annulla l'operazione, vedere annullare un'operazione .

Esporta raccolte specifiche

Console Google Cloud

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fare clic su Importa/Esporta .

  4. Fare clic su Esporta .

  5. Fare clic sull'opzione Esporta uno o più gruppi di raccolte . Utilizza il menu a discesa per selezionare uno o più gruppi di raccolte.

  6. Sotto Scegli destinazione , inserisci il nome di un bucket Cloud Storage o utilizza il pulsante Sfoglia per selezionare un bucket.

  7. Fare clic su Esporta .

La console ritorna alla pagina Importa/Esporta . Se l'operazione viene avviata correttamente, la pagina aggiunge una voce alla pagina delle importazioni ed esportazioni recenti. In caso di errore, la pagina visualizza un messaggio di errore.

gcloud

Per esportare gruppi di raccolte specifici, utilizza il flag --collection-ids . L'operazione esporta solo i gruppi di raccolta con gli ID di raccolta specificati. Il gruppo di raccolte include tutte le raccolte e le sottoraccolte (in qualsiasi percorso) con l'ID raccolta specificato.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
--database=[DATABASE]

Ad esempio, puoi progettare una raccolta restaurants nel database foo per includere più sottoraccolte, come ratings , reviews o outlets . Per esportare restaurants e reviews di raccolte specifiche, il comando ha il seguente aspetto:

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=restaurants,reviews \
--database='cymbal'

Esporta da un timestamp PITR

Puoi esportare il tuo database in Cloud Storage dai dati PITR utilizzando il comando gcloud firestore export . È possibile esportare i dati PITR in cui il timestamp è un timestamp di un minuto intero negli ultimi sette giorni, ma non prima di earliestVersionTime . Se i dati non esistono più al timestamp specificato, l'operazione di esportazione non riesce.

L'operazione di esportazione PITR supporta tutti i filtri, inclusa l'esportazione di tutti i documenti e l'esportazione di raccolte specifiche.

  1. Esportare il database, specificando il parametro snapshot-time nel timestamp di ripristino desiderato.

    gcloud

    Esegui il comando seguente per esportare il database nel tuo bucket.

    gcloud firestore export gs://[BUCKET_NAME_PATH] \
        --snapshot-time=[PITR_TIMESTAMP] \
        --collection-ids=[COLLECTION_IDS] \
        --namespace-ids=[NAMESPACE_IDS]
    

    Dove,

    • PITR_TIMESTAMP : un timestamp PITR con granularità al minuto, ad esempio 2023-05-26T10:20:00.00Z .

    Tieni presenti i seguenti punti prima di esportare i dati PITR:

    • Specificare il timestamp nel formato RFC 3339 . Ad esempio, 2020-09-01T23:59:30.234233Z .
    • Assicurati che il timestamp specificato sia un timestamp di un minuto intero degli ultimi sette giorni, ma non prima di earliestVersionTime . Se i dati non esistono più al timestamp specificato, viene generato un errore.
    • Non ti verrà addebitato alcun costo per un'esportazione PITR non riuscita.

Importa dati

Una volta esportati i file in Cloud Storage, puoi importare nuovamente i documenti in tali file nel tuo progetto o in un altro progetto. Tieni presente i seguenti punti relativi alle operazioni di importazione:

  • Quando importi i dati, gli indici richiesti vengono aggiornati utilizzando le definizioni di indice correnti del database. Un'esportazione non contiene definizioni di indice.

  • Le importazioni non assegnano nuovi ID documento. Le importazioni utilizzano gli ID acquisiti al momento dell'esportazione. Durante l'importazione di un documento, il suo ID viene riservato per evitare collisioni di ID. Se esiste già un documento con lo stesso ID, l'importazione sovrascrive il documento esistente.

  • Se un documento nel tuo database non è interessato da un'importazione, rimarrà nel tuo database dopo l'importazione.

  • Le operazioni di importazione non attivano Cloud Functions. Gli ascoltatori di snapshot ricevono aggiornamenti relativi alle operazioni di importazione.

  • Il nome del file .overall_export_metadata deve corrispondere al nome della cartella principale:

    gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/ PARENT_FOLDER_NAME / PARENT_FOLDER_NAME .overall_export_metadata

    Se sposti o copi i file di output di un'esportazione, mantieni lo stesso nome del file PARENT_FOLDER_NAME e .overall_export_metadata .

Importa tutti i documenti da un'esportazione

Console Google Cloud

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fare clic su Importa/Esporta .

  4. Fare clic su Importa .

  5. Nel campo Nome file , inserisci il nome file di un file .overall_export_metadata da un'operazione di esportazione completata. È possibile utilizzare il pulsante Sfoglia per facilitare la selezione del file.

  6. Fare clic su Importa .

La console ritorna alla pagina Importa/Esporta . Se l'operazione viene avviata correttamente, la pagina aggiunge una voce alla pagina delle importazioni ed esportazioni recenti. In caso di errore, la pagina visualizza un messaggio di errore.

gcloud

Utilizza il comando firestore import per importare documenti da un'operazione di esportazione precedente.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]

Sostituisci quanto segue:

  • BUCKET_NAME/EXPORT_PREFIX : posizione dei file di esportazione.

  • DATABASE : nome del database. Per il database predefinito, utilizzare --database='(default)' .

Per esempio:

gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'

Puoi confermare la posizione dei file di esportazione nel browser Cloud Storage nella console di Google Cloud Platform:

Apri il browser di archiviazione cloud

Una volta avviata un'operazione di importazione, la chiusura del terminale non annulla l'operazione, vedere annullare un'operazione .

Importa raccolte specifiche

Console Google Cloud

Non è possibile selezionare raccolte specifiche nella console. Utilizza invece gcloud .

gcloud

Per importare gruppi di raccolte specifici da una serie di file di esportazione, utilizzare il flag --collection-ids . L'operazione importa solo i gruppi di raccolta con gli ID di raccolta specificati. Il gruppo di raccolte include tutte le raccolte e le sottoraccolte (in qualsiasi percorso) con l'ID raccolta specificato. Specificare il nome del database utilizzando il flag --database . Per il database predefinito, utilizzare --database='(default)' .

Solo un'esportazione di gruppi di raccolta specifici supporta l'importazione di gruppi di raccolta specifici. Non è possibile importare raccolte specifiche da un'esportazione di tutti i documenti.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --database=[DATABASE]

Importa un'esportazione PITR

Utilizzare i passaggi in Importare tutti i documenti per importare il database esportato. Se qualche documento esiste già nel database, verrà sovrascritto.

Gestione delle operazioni di esportazione e importazione

Dopo aver avviato un'operazione di esportazione o importazione, Cloud Firestore assegna all'operazione un nome univoco. È possibile utilizzare il nome dell'operazione per eliminare, annullare o verificare lo stato dell'operazione.

I nomi delle operazioni hanno il prefisso projects/[PROJECT_ID]/databases/(default)/operations/ , ad esempio:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Tuttavia, puoi tralasciare il prefisso quando specifichi il nome di un'operazione per i describe , cancel e delete .

Elenca tutte le operazioni di esportazione e importazione

Console Google Cloud

Puoi visualizzare un elenco delle recenti operazioni di esportazione e importazione nella pagina Importa/Esporta della console di Google Cloud Platform.

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fare clic su Importa/Esporta .

gcloud

Utilizzare il comando operations list per visualizzare tutte le operazioni di esportazione e importazione in esecuzione e completate di recente:

gcloud firestore operations list

Controllare lo stato operativo

Console Google Cloud

Puoi visualizzare lo stato di un'operazione di esportazione o importazione recente nella pagina Importa/Esporta della console di Google Cloud Platform.

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fare clic su Importa/Esporta .

gcloud

Utilizzare il comando operations describe per mostrare lo stato di un'operazione di esportazione o importazione.

gcloud firestore operations describe [OPERATION_NAME]

Stimare il tempo di completamento

Una richiesta per lo stato di un'operazione di lunga durata restituisce le metriche workEstimated e workCompleted . Ciascuno di questi parametri viene restituito sia in numero di byte che in numero di entità:

  • workEstimated mostra il numero totale stimato di byte e documenti che un'operazione elaborerà. Cloud Firestore potrebbe omettere questa metrica se non è in grado di effettuare una stima.

  • workCompleted mostra il numero di byte e documenti elaborati finora. Al termine dell'operazione, il valore mostra il numero totale di byte e documenti effettivamente elaborati, che potrebbe essere maggiore del valore di workEstimated .

Dividere workCompleted per workEstimated per una stima approssimativa dello stato di avanzamento. Questa stima potrebbe essere imprecisa perché dipende dalla raccolta ritardata delle statistiche.

Annullare un'operazione

Console Google Cloud

Puoi annullare un'operazione di esportazione o importazione in corso nella pagina Importa/Esporta della console di Google Cloud Platform.

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fare clic su Importa/Esporta .

Nella tabella Importazioni ed esportazioni recenti , le operazioni attualmente in esecuzione includono un pulsante Annulla nella colonna Completato . Fare clic sul pulsante Annulla per interrompere l'operazione. Il pulsante cambia in un messaggio di annullamento e poi in Annullato quando l'operazione si interrompe completamente.

gcloud

Utilizzare il comando operations cancel per interrompere un'operazione in corso:

gcloud firestore operations cancel [OPERATION_NAME]

L'annullamento di un'operazione in corso non annulla l'operazione. Un'operazione di esportazione annullata lascerà i documenti già esportati in Cloud Storage, mentre un'operazione di importazione annullata lascerà sul posto gli aggiornamenti già apportati al database. Non è possibile importare un'esportazione parzialmente completata.

Elimina un'operazione

Utilizza il comando gcloud firestore operations delete per rimuovere un'operazione dall'elenco delle operazioni recenti. Questo comando non eliminerà i file di esportazione da Cloud Storage.

gcloud firestore operations delete [OPERATION_NAME]

Fatturazione e determinazione dei prezzi per le operazioni di esportazione e importazione

Devi abilitare la fatturazione per il tuo progetto Google Cloud prima di utilizzare il servizio di esportazione e importazione gestito.

Le operazioni di esportazione e importazione vengono addebitate per le letture e le scritture dei documenti alle tariffe indicate nei prezzi di Cloud Firestore . Le operazioni di esportazione comportano un'operazione di lettura per documento esportato. Le operazioni di importazione comportano un'operazione di scrittura per documento importato.

I file di output archiviati in Cloud Storage vengono conteggiati nei costi di archiviazione dei dati di Cloud Storage .

I costi delle operazioni di esportazione e importazione non contano ai fini del limite di spesa . Le operazioni di esportazione o importazione non attiveranno gli avvisi sul budget di Google Cloud finché non saranno completate. Allo stesso modo, le letture e le scritture eseguite durante un'operazione di esportazione o importazione vengono applicate alla quota giornaliera al termine dell'operazione. Le operazioni di esportazione e importazione non influiranno sull'utilizzo mostrato nella sezione utilizzo della console.

Visualizzazione dei costi di esportazione e importazione

Le operazioni di esportazione e importazione applicano l'etichetta goog-firestoremanaged:exportimport alle operazioni fatturate. Nella pagina dei report di fatturazione Cloud puoi utilizzare questa etichetta per visualizzare i costi relativi alle operazioni di importazione ed esportazione:

Accedi all'etichetta goog-firestoregestito dal menu dei filtri.

Esporta in BigQuery

Puoi caricare i dati da un'esportazione di Cloud Firestore in BigQuery, ma solo se hai specificato un filtro collection-ids . Consulta Caricamento di dati dalle esportazioni Cloud Firestore .

Limite delle colonne BigQuery

BigQuery impone un limite di 10.000 colonne per tabella. Le operazioni di esportazione di Cloud Firestore generano uno schema di tabella BigQuery per ogni gruppo di raccolta. In questo schema, ogni nome di campo univoco all'interno di un gruppo di raccolte diventa una colonna dello schema.

Se lo schema BigQuery di un gruppo di raccolta supera le 10.000 colonne, l'operazione di esportazione di Cloud Firestore tenta di rimanere sotto il limite di colonne trattando i campi della mappa come byte. Se questa conversione porta il numero di colonne al di sotto di 10.000, puoi caricare i dati in BigQuery, ma non puoi eseguire query sui sottocampi all'interno dei campi della mappa. Se il numero di colonne supera ancora 10.000, l'operazione di esportazione non genera uno schema BigQuery per il gruppo di raccolta e non puoi caricarne i dati in BigQuery.

Esporta file di formati e metadati

L'output di un'esportazione gestita utilizza il formato di registro LevelDB .

File di metadati

Un'operazione di esportazione crea un file di metadati per ogni gruppo di raccolta specificato. I file di metadati sono generalmente denominati ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata .

I file di metadati sono buffer di protocollo e puoi decodificarli con il compilatore di protocolli protoc . Ad esempio, puoi decodificare un file di metadati per determinare i gruppi di raccolta contenuti nei file di esportazione:

protoc --decode_raw < export0.export_metadata

Migrazione dell'agente di servizio

Cloud Firestore utilizza un agente di servizio Cloud Firestore per autorizzare le operazioni di importazione ed esportazione invece di utilizzare l'account di servizio App Engine. L'agente di servizio e l'account di servizio utilizzano le seguenti convenzioni di denominazione:

Agente del servizio Cloud Firestore
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com

Cloud Firestore in precedenza utilizzava l'account di servizio predefinito di App Engine anziché l'agente di servizio Cloud Firestore. Se il tuo database utilizza ancora l'account di servizio App Engine per importare o esportare dati, ti consigliamo di seguire le istruzioni in questa sezione per eseguire la migrazione all'utilizzo dell'agente del servizio Cloud Firestore.

Account di servizio App Engine
PROJECT_ID @appspot.gserviceaccount.com

L'agente del servizio Cloud Firestore è preferibile perché è specifico di Cloud Firestore. L'account del servizio App Engine è condiviso da più di un servizio.

Visualizza l'account di autorizzazione

Puoi visualizzare quale account utilizzano le tue operazioni di importazione ed esportazione per autorizzare le richieste dalla pagina Importa/Esporta nella console di Google Cloud Platform. Puoi anche verificare se il tuo database utilizza già l'agente del servizio Cloud Firestore.

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.
  3. Nel menu di navigazione, fare clic su Importa/Esporta .

  4. Visualizza l'account di autorizzazione accanto ai processi di importazione/esportazione eseguiti come etichetta.

Se il tuo progetto non utilizza l'agente del servizio Cloud Firestore, puoi eseguire la migrazione all'agente del servizio Cloud Firestore utilizzando una di queste tecniche:

La prima di queste tecniche è preferibile perché localizza l'ambito di effetto su un singolo progetto Cloud Firestore. La seconda tecnica non è preferibile perché non esegue la migrazione delle autorizzazioni del bucket Cloud Storage esistenti. Tuttavia, offre conformità di sicurezza a livello di organizzazione.

Esegui la migrazione controllando e aggiornando le autorizzazioni del bucket Cloud Storage

Il processo di migrazione prevede due passaggi:

  1. Aggiorna le autorizzazioni del bucket Cloud Storage. Per i dettagli vedere la sezione seguente.
  2. Conferma la migrazione all'agente del servizio Cloud Firestore.

Autorizzazioni per i bucket dell'agente di servizio

Per qualsiasi operazione di esportazione o importazione che utilizza un bucket Cloud Storage in un altro progetto, devi concedere le autorizzazioni dell'agente di servizio Cloud Firestore per quel bucket. Ad esempio, le operazioni che spostano i dati in un altro progetto devono accedere a un bucket nell'altro progetto. In caso contrario, queste operazioni falliranno dopo la migrazione all'agente del servizio Cloud Firestore.

I flussi di lavoro di importazione ed esportazione che rimangono all'interno dello stesso progetto non richiedono modifiche alle autorizzazioni. Per impostazione predefinita, l'agente del servizio Cloud Firestore può accedere ai bucket nello stesso progetto.

Aggiorna le autorizzazioni per i bucket Cloud Storage di altri progetti per concedere l'accesso all'agente di servizio service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com . Concedere all'agente di servizio il ruolo Firestore Service Agent .

Il ruolo Firestore Service Agent concede autorizzazioni di lettura e scrittura per un bucket Cloud Storage. Se devi concedere solo autorizzazioni di lettura o solo scrittura, utilizza un ruolo personalizzato .

Il processo di migrazione descritto nella sezione seguente ti aiuta a identificare i bucket Cloud Storage che potrebbero richiedere aggiornamenti delle autorizzazioni.

Migrare un progetto all'agente di servizio Firestore

Completa i seguenti passaggi per eseguire la migrazione dall'account del servizio App Engine all'agente del servizio Cloud Firestore. Una volta completata, la migrazione non può essere annullata.

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.
  3. Nel menu di navigazione, fare clic su Importa/Esporta .

  4. Se il tuo progetto non è ancora stato migrato all'agente del servizio Cloud Firestore, vedrai un banner che descrive la migrazione e un pulsante Controlla lo stato del bucket . Il passaggio successivo ti aiuta a identificare e correggere potenziali errori di autorizzazione.

    Fai clic su Controlla stato bucket .

    Viene visualizzato un menu con l'opzione per completare la migrazione e un elenco di bucket Cloud Storage. Potrebbero essere necessari alcuni minuti per completare il caricamento dell'elenco.

    Questo elenco include i bucket che sono stati utilizzati di recente nelle operazioni di importazione ed esportazione, ma che attualmente non concedono autorizzazioni di lettura e scrittura all'agente del servizio Cloud Firestore.

  5. Prendi nota del nome principale dell'agente del servizio Cloud Firestore del tuo progetto. Il nome dell'agente di servizio viene visualizzato sotto Agente di servizio per consentire l'accesso all'etichetta .
  6. Per qualsiasi bucket nell'elenco che utilizzerai per future operazioni di importazione o esportazione, completa i seguenti passaggi:

    1. Nella riga della tabella di questo bucket, fai clic su Correggi . Questo apre la pagina delle autorizzazioni del bucket in una nuova scheda.

    2. Fare clic su Aggiungi .
    3. Nel campo Nuove entità , inserisci il nome dell'agente del servizio Cloud Firestore.
    4. Nel campo Seleziona un ruolo , seleziona Agenti di servizio > Agente di servizio Firestore .
    5. Fare clic su Salva .
    6. Torna alla scheda con la pagina Importa/Esporta Cloud Firestore.
    7. Ripeti questi passaggi per gli altri bucket nell'elenco. Assicurati di visualizzare tutte le pagine dell'elenco.
  7. Fai clic su Migra all'agente di servizio Firestore . Se hai ancora bucket con controlli delle autorizzazioni non riusciti, devi confermare la migrazione facendo clic su Migra .

    Un avviso ti informa quando la migrazione viene completata. La migrazione non può essere annullata.

Visualizza lo stato della migrazione

Per verificare lo stato di migrazione del tuo progetto:

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.
  3. Nel menu di navigazione, fare clic su Importa/Esporta .

  4. Cerca l'entità accanto ai processi di importazione/esportazione eseguiti come etichetta.

    Se l'entità è service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com , il tuo progetto è già migrato all'agente del servizio Cloud Firestore. La migrazione non può essere annullata.

    Se il progetto non è stato migrato, nella parte superiore della pagina viene visualizzato un banner con il pulsante Controlla lo stato del bucket . Vedi Migrazione all'agente del servizio Firestore per completare la migrazione.

Aggiungere un vincolo di policy a livello di organizzazione

  • Imposta il seguente vincolo nella policy della tua organizzazione:

    Richiede l'agente di servizio Firestore per l'importazione/esportazione ( firestore.requireP4SAforImportExport ).

    Questo vincolo richiede operazioni di importazione ed esportazione per utilizzare l'agente del servizio Cloud Firestore per autorizzare le richieste. Per impostare questo vincolo, vedere Creazione e gestione delle policy dell'organizzazione .

L'applicazione di questo vincolo di criteri organizzativi non concede automaticamente le autorizzazioni appropriate del bucket Cloud Storage per l'agente del servizio Cloud Firestore.

Se il vincolo crea errori di autorizzazione per qualsiasi flusso di lavoro di importazione o esportazione, puoi disabilitarlo per tornare a utilizzare l'account di servizio predefinito. Dopo aver controllato e aggiornato le autorizzazioni del bucket Cloud Storage , puoi abilitare nuovamente il vincolo.