Esegui la migrazione delle estensioni Firebase ai kit di funzioni

Questa guida mostra come eseguire la migrazione delle estensioni dall'ambiente Firebase Extensions deprecato a un kit di funzioni che puoi installare ed eseguire il deployment nel tuo codebase Cloud Functions per Firebase (2ª gen.).

Firebase Extensions gestiva tutti gli aspetti della creazione, dell'aggiornamento e della rimozione delle estensioni. I kit di funzioni pacchettizzano le funzionalità delle estensioni come tipici Cloud Functions for Firebase di 2ª gen. Poiché i kit di funzioni sono Cloud Functions standard, puoi crearli, aggiornarli, eliminarli e risolverne i problemi utilizzando l'interfaccia a riga di comando Firebase all'interno del tuo progetto Firebase. Questa guida ti prepara a gestire le tue funzioni ora e ad adottare gli aggiornamenti non appena diventano disponibili.

In questa guida, l'estensione Stream Cloud Firestore to BigQuery (firestore-bigquery-export) viene utilizzata come esempio per mostrare i comandi e l'output comando per ogni passaggio della migrazione.

Determina il percorso di migrazione

Firebase incoraggia tutti i publisher di Firebase Extensions a creare sostituzioni per le loro estensioni sotto forma di kit di funzioni pubblicati su npm. Puoi verificare se è disponibile un kit di funzioni sostitutivo per le tue estensioni in diversi modi:

  • Vai alla pagina Estensioni della console Firebase per il tuo progetto. Ogni estensione installata indica se è disponibile un kit di funzioni sostitutivo.
  • Esegui firebase ext:list all'interno del tuo progetto Firebase in un terminale per mostrare quali delle estensioni installate hanno sostituzioni ufficiali:

    firebase ext:list --project my-project
    
    i  extensions: ensuring required API firebaseextensions.googleapis.com is enabled...
    ✔  extensions: required API firebaseextensions.googleapis.com is enabled
    i  extensions: list of extensions installed in my-project:
    ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐
    │ Extension                          │ Publisher │ Instance ID                    │ State  │ Version │ Your last update    │ Replacement Kit                                   │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/firestore-bigquery-export │ firebase  │ firestore-bigquery-export-zbrp │ ACTIVE │ 0.3.2   │ 2026-06-10 18:35:03 │ @firebase-function-kits/firestore-bigquery-export │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/storage-resize-images     │ firebase  │ storage-resize-images          │ ACTIVE │ 0.3.6   │ 2026-06-03 17:41:24 │                                                   │
    └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘
    ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
    

Se per la tua estensione è disponibile un kit di funzioni sostitutivo ufficiale, puoi eseguirne la migrazione utilizzando la sezione Esegui la migrazione ai kit di funzioni su npm.

Se non riesci a trovare un sostituto pubblicato, puoi creare un fork del codice dell'estensione e creare il tuo sostituto, poiché tutte le estensioni sono open source. Per farlo, segui la guida Esegui la migrazione a un kit di funzioni creato autonomamente.

Seleziona il percorso di migrazione: Esegui la migrazione ai kit di funzioni su npm Esegui la migrazione a un kit di funzioni creato autonomamente

Esegui la migrazione ai kit di funzioni su npm

Controlla le limitazioni note della migrazione

Prima di iniziare la migrazione di un'istanza di estensione, verifica se la tua configurazione utilizza una delle seguenti funzionalità che richiedono una soluzione alternativa o non sono ancora supportate nei kit di funzioni:

  • I repository Docker personalizzati e le chiavi KMS richiedono una soluzione alternativa manuale Cloud Functions for Firebase non supporta i parametri di sistema sostitutivi per la configurazione di un repository Docker personalizzato o di una chiave di crittografia gestita dal cliente (chiave KMS). Se l'estensione configura uno di questi parametri, consulta la soluzione alternativa nelle domande frequenti.

Prima di iniziare

Devi configurare l'interfaccia a riga di comando Firebase e inizializzare un progetto Firebase. Quando utilizzi l'interfaccia a riga di comando, assicurati di utilizzare la versione >= 15.32.0 di firebase-tools, che contiene i nuovi comandi del kit di migrazione e delle funzioni.

Autorizzazioni e ruoli dell'account richiesti

A seconda di ciò che deve essere creato e configurato dall'interfaccia a riga di comando Firebase durante la migrazione, l'account che utilizzi per l'autenticazione con Firebase e Google Cloud deve avere i seguenti ruoli:

  • roles/firebaseextensions.editor
  • roles/cloudbuild.builds.editor
  • roles/artifactregistry.writer
  • roles/run.developer
  • roles/iam.serviceAccountUser
  • roles/iam.serviceAccountCreator
  • roles/cloudfunctions.admin (se devi eseguire setIamPermissions per gli endpoint pubblici)
  • roles/secretmanager.admin (se utilizzi i secret)
  • roles/serviceusage.serviceUsageAdmin (se devi abilitare nuove API)

Ti consigliamo di utilizzare un account che abbia già installato estensioni ed eseguito il deployment di funzioni, poiché la maggior parte di queste autorizzazioni sarà già stata concessa. Se l'account di cui stai eseguendo la migrazione richiede più ruoli, segui le istruzioni IAM di Google Cloud per aggiungerli.

Scegli un flusso di lavoro dell'interfaccia a riga di comando

Per eseguire la migrazione da un'istanza di estensione a un kit di funzioni disponibile su npm, scegli una delle seguenti opzioni:

  • (Consigliato) Esegui la migrazione utilizzando il comando dell'interfaccia a riga di comando ext:migrate. Questo comando esegue il deployment del kit di funzioni sostitutivo prima di disinstallare l'estensione che sostituisce.
  • Esegui la migrazione utilizzando i comandi dell'interfaccia a riga di comando dei kit di funzioni. Puoi utilizzare comandi separati per aggiornare l'estensione, installare un kit di funzioni, configurarlo come l'estensione, eseguire il deployment del kit e disinstallare l'estensione. In questo modo, hai una maggiore flessibilità per riordinare i comandi o eseguire ulteriori operazioni tra i passaggi.

Esegui la migrazione utilizzando ext:migrate

Una volta per istanza di estensione, avvia una migrazione eseguendo:

firebase ext:migrate --project <project-id>

Questo comando ti guida attraverso:

  1. Selezionare un'estensione di cui eseguire la migrazione per la quale è disponibile un kit di funzioni sostitutivo ufficiale.
  2. Selezionando un'istanza specifica dell'estensione.
  3. Aggiornare l'estensione all'ultima versione, se necessario.
  4. Installare il kit di funzioni, configurando un'istanza in modo identico a come è configurata l'istanza dell'estensione.
  5. Deployment del kit di funzioni.
  6. Verifica che il deployment del kit di funzioni sia andato a buon fine e che tutti gli hook del ciclo di vita, se presenti, siano stati eseguiti.
  7. Disinstallazione dell'istanza dell'estensione.

Se conosci l'estensione o l'istanza di estensione specifica di cui vuoi eseguire la migrazione, specificala utilizzando i seguenti flag della riga di comando:

firebase ext:migrate --extension firebase/firestore-bigquery-export --project <project-id>

# or

firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --project <project-id>

Se conosci il pacchetto specifico di cui vuoi eseguire la migrazione, soprattutto se non si tratta di un pacchetto sostitutivo ufficiale elencato da Google, specificalo utilizzando il flag --package:

firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --package @firebase-function-kits/firestore-bigquery-export --project <project-id>

Verifica il deployment di un kit di funzioni

Per verificare che l'operazione firebase deploy del kit non abbia generato errori, controlla i log di deployment per vedere se sono stati attivati hook del ciclo di vita. Le estensioni più utilizzate, come Stream Cloud Firestore to BigQuery, utilizzano gli hook del ciclo di vita. Di seguito è riportato un esempio di come appare un hook del ciclo di vita quando viene attivato:

i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i  functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project

Questi messaggi di log confermano quanto segue:

  • È stato trovato ed eseguito un hook del ciclo di vita.
  • È stata inserita un'attività nella coda di attività associata all'hook del ciclo di vita.
  • È stato fornito un link a Cloud Logging per consentirti di verificare che l'attività sia stata completata senza errori.

Segui il link dei log alla console Google Cloud per verificare che non ci siano errori nei log e che l'evento della coda di attività sia stato elaborato correttamente. Se l'evento del ciclo di vita non è stato eseguito correttamente, puoi attivarlo nuovamente eseguendo:

firebase functions:lifecycle:run <hook-name> <codebase>

Se stai eseguendo il deployment di un'istanza del kit di funzioni per la prima volta, esegui:

firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>

Se in qualsiasi momento durante la convalida decidi di interrompere o annullare questa migrazione, puoi disinstallare il kit seguendo le istruzioni riportate in Disinstalla l'estensione.

Dopo aver verificato che il deployment iniziale del kit di funzioni è stato completato correttamente, devi convalidare che la funzionalità del kit funzioni effettivamente come previsto. Poiché l'estensione stessa è ancora in esecuzione, devi assicurarti che ciò che stai controllando non sia solo che una delle due abbia funzionato, poiché l'estensione è stata e continuerà a funzionare.

Se l'elaborazione non viene modificata e non vedi risultati duplicati dall'estensione e dal kit, l'opzione migliore è esaminare direttamente i log del kit dopo aver attivato la funzionalità del kit.

Esempio elaborato: esegui lo streaming da Cloud Firestore a BigQuery

Con l'estensione Stream da Cloud Firestore a BigQuery, le scritture sia nella tabella Raw Changelog (*_raw_changelog) sia nella tabella della visualizzazione più recente (*_raw_latest) verranno deduplicate se lo stesso evento viene inviato al kit e all'estensione. Pertanto, non puoi utilizzare la presenza di righe o righe duplicate in BigQuery per verificare che il kit funzioni.

Puoi visualizzare i log delle funzioni poco dopo aver scritto nella raccolta Firestore utilizzando firebase functions:logs e cercare una voce di log che indichi che la scrittura è stata elaborata correttamente. Per questo kit con l'ID istanza predefinito di firestore-bigquery-export, l'aspetto sarà il seguente:

2026-09-25T19:52:46.328612Z I kit-firestore-bigquery-export-fsexportbigquery: Started execution of extension
2026-09-25T19:52:46.328644Z I kit-firestore-bigquery-export-fsexportbigquery: {"message":"Firestore event received by onDocumentWritten trigger","document_name":"projects/extensions-eventarc-testing/databases/(default)/documents/exported-messages/cmGP6XLyksqGdw2OgTOq","operation":0,"event_id":"9f59a2a4-1a5e-4c41-a32d-561e3c734502"}
2026-09-25T19:52:46.616064Z I kit-firestore-bigquery-export-fsexportbigquery: Completed execution of extension
2026-09-2

Se hai molti log, puoi filtrarli in base a una funzione specifica del kit utilizzando il seguente comando:

firebase functions:log --only <function name>

Per trovare i nomi delle funzioni specifiche per un'istanza del kit, puoi utilizzare il seguente comando:

firebase functions:list | grep kit-<kit instance id>

Per questo esempio:

firebase functions:list | grep kit-firestore-bigquery-export
│ kit-firestore-bigquery-export-fsexportbigquery  │ v2      │ google.cloud.firestore.document.v1.written                    │
│ kit-firestore-bigquery-export-initBigQuerySync  │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-setupBigQuerySync │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-syncBigQuery      │ v2      │ taskQueue                                                     │

Esamina il file README del kit di funzioni

Alcuni kit potrebbero richiedere un lavoro aggiuntivo rispetto a quello gestito automaticamente dai kit di funzioni. Consulta la README del kit che stai installando e segui le eventuali istruzioni aggiuntive.

Esegui la migrazione utilizzando l'interfaccia a riga di comando dei kit di funzioni

Prima di iniziare, identifica e annota l'ID istanza dell'estensione di cui vuoi eseguire la migrazione a un kit e il nome del pacchetto npm del kit sostitutivo. Puoi trovare entrambi utilizzando l'output di firebase ext:list. Consulta Determinazione del percorso di migrazione per un esempio di utilizzo di ext:list.

1. Esegui l'upgrade dell'istanza dell'estensione all'ultima versione

Devi aggiornare l'estensione all'ultima versione per ridurre al minimo la differenza tra l'istanza dell'estensione e il relativo kit di sostituzione. Se l'estensione non viene eseguito l'upgrade, potrebbero esserci modifiche significative che provocano un errore tra l'istanza dell'estensione e il kit sostitutivo. La configurazione esportata potrebbe non corrispondere a quella prevista dal kit a causa di modifiche ai parametri tra le versioni.

Utilizza una delle seguenti opzioni per aggiornare l'estensione, a seconda di dove è stata installata:

  • Dalla consoleFirebase
  • Dall'interfaccia a riga di comando Firebase utilizzando:
    • firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>

Se salti questo passaggio, l'interfaccia a riga di comando ti chiederà di eseguire l'upgrade durante l'esportazione della configurazione se l'estensione non è aggiornata all'ultima versione.

2. Esamina e installa l'istanza del kit di funzioni sostitutivo

Puoi installare il kit di funzioni utilizzando il seguente comando dell'interfaccia a riga di comando:

firebase functions:kits:install --template migration --no-configure --package <npm-package-name> --project <project-id>

Quando scegli un ID istanza per il tuo kit durante l'installazione, assicurati di annotarlo per utilizzarlo in un secondo momento nelle istruzioni di migrazione.

Una volta installato il kit, viene creata una nuova directory all'interno del tuo progetto Firebase con una posizione come function-kits/<kit-name>/source che contiene il pacchetto npm con il kit che sostituisce l'estensione e un file index.ts di base che esporta queste funzioni per consentire a Firebase di eseguire il deployment e impostare la configurazione personalizzata.

Consulta il file README del kit e segui le eventuali istruzioni aggiuntive riportate.

Se hai più istanze del kit nello stesso progetto, puoi ripetere questo comando per creare nuove istanze dello stesso kit. Puoi anche eseguire il deployment di una singola istanza del kit in due progetti Firebase diversi con configurazioni diverse (ad esempio, un progetto di gestione temporanea e un progetto di produzione). Per scoprire di più su queste configurazioni avanzate, consulta Migrazioni avanzate.

Esempio elaborato:

firebase functions:kits:install --template migration --no-configure --package @firebase-function-kits/firestore-bigquery-export --project my-project

3. Configura l'istanza del kit di funzioni in modo identico all'estensione

Devi personalizzare questa istanza del kit con una configurazione identica a quella dell'estensione che sta sostituendo. Puoi esportare la configurazione dell'istanza dell'estensione in un file .env, che memorizza i dati di configurazione dei parametri, delle variabili di ambiente e dei riferimenti ai secret per tutti i Cloud Functions, inclusi i kit. Per esportarlo direttamente nel file di configurazione del kit, esegui:

firebase ext:export --mode functions --instance <extension-instance-id> --kit-instance <kit-instance-id> --project <project-id>

Al termine di questo passaggio, le informazioni di configurazione per questa istanza vengono archiviate in un file .env specifico del progetto nella directory di configurazione dell'istanza, ad esempio: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>

4. Esegui il deployment e verifica la sostituzione del kit

Ora che il kit è installato e disponibile come insieme di funzioni, puoi eseguire il deployment della sostituzione del kit. I kit di funzioni funzionano come le funzioni standard, in cui ogni istanza del kit funge da codebase separata per organizzare le funzioni. Puoi scegliere di eseguire il deployment di tutte le funzioni o solo di un'istanza del kit specifica. Durante la migrazione di una singola istanza di estensione, esegui il deployment solo di quell'istanza del kit.

Se il kit utilizza nuovi parametri che non erano presenti nell'istanza dell'estensione da cui hai eseguito la migrazione, l'interfaccia a riga di comando Firebase li richiede all'inizio del processo di deployment. Questo non è previsto in questo esempio pratico di un'estensione firestore-bigquery-export aggiornata, ma molti kit richiedono un nuovo parametro per qualsiasi origine di trigger di eventi utilizzata dal kit. Nell'ambito di questa migrazione, i kit aggiornati utilizzano funzioni di 2ª gen. dove in precedenza le estensioni utilizzavano funzioni di 1ª gen. Nella 2ª gen., le funzioni si trovano vicino alle origini eventi e vengono aggiunte come parametro aggiuntivo. Negli aggiornamenti futuri, se vengono aggiunti nuovi parametri, l'interfaccia a riga di comando ti chiederà di eseguire il deployment successivo.

Esempio elaborato:

firebase deploy --only functions:firestore-bigquery-export --project my-project

Output:

=== Deploying to 'my-project'...
i  deploying functions
i  functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
i  functions: ensuring required API bigquery.googleapis.com is enabled...
i  functions: ensuring required API cloudtasks.googleapis.com is enabled...
✔  functions: required APIs are enabled
i  functions: granting declarative IAM roles to managed service account:
   - BigQuery Data Editor
   - BigQuery User
   - Cloud Datastore User
   - Eventarc Event Receiver
   - roles/run.invoker
✔  functions: successfully granted IAM roles
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-fsexportbigquery(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-initBigQuerySync(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-setupBigQuerySync(us-central1)...
✔  functions[kit-firestore-bigquery-export-fsexportbigquery(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-initBigQuerySync(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-setupBigQuerySync(us-central1)] Successful create operation.
i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/us-central1/queues/kit-firestore-bigquery-export-initBigQuerySync.
✔  Deploy complete!

Per verificare che l'operazione firebase deploy del kit non abbia generato errori, controlla i log di deployment per vedere se sono stati attivati hook del ciclo di vita. Le estensioni più utilizzate, come Stream Cloud Firestore to BigQuery, utilizzano gli hook del ciclo di vita. Di seguito è riportato un esempio di come appare un hook del ciclo di vita quando viene attivato:

i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i  functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project

Questi messaggi di log confermano quanto segue:

  • È stato trovato ed eseguito un hook del ciclo di vita.
  • È stata inserita un'attività nella coda di attività associata all'hook del ciclo di vita.
  • È stato fornito un link a Cloud Logging per consentirti di verificare che l'attività sia stata completata senza errori.

Segui il link dei log alla console Google Cloud per verificare che non ci siano errori nei log e che l'evento della coda di attività sia stato elaborato correttamente. Se l'evento del ciclo di vita non è stato eseguito correttamente, puoi attivarlo nuovamente eseguendo:

firebase functions:lifecycle:run <hook-name> <codebase>

Se stai eseguendo il deployment di un'istanza del kit di funzioni per la prima volta, esegui:

firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>

Se in qualsiasi momento durante la convalida decidi di interrompere o annullare questa migrazione, puoi disinstallare il kit seguendo le istruzioni riportate in Disinstalla l'estensione.

Dopo aver verificato che il deployment iniziale del kit di funzioni è stato completato correttamente, devi convalidare che la funzionalità del kit funzioni effettivamente come previsto. Poiché l'estensione stessa è ancora in esecuzione, devi assicurarti che ciò che stai controllando non sia solo che una delle due abbia funzionato, poiché l'estensione è stata e continuerà a funzionare.

Se l'elaborazione non viene modificata e non vedi risultati duplicati dall'estensione e dal kit, l'opzione migliore è esaminare direttamente i log del kit dopo aver attivato la funzionalità del kit.

Esempio elaborato: esegui lo streaming da Cloud Firestore a BigQuery

Con l'estensione Stream da Cloud Firestore a BigQuery, le scritture sia nella tabella Raw Changelog (*_raw_changelog) sia nella tabella della visualizzazione più recente (*_raw_latest) verranno deduplicate se lo stesso evento viene inviato al kit e all'estensione. Pertanto, non puoi utilizzare la presenza di righe o righe duplicate in BigQuery per verificare che il kit funzioni.

Puoi visualizzare i log delle funzioni poco dopo aver scritto nella raccolta Firestore utilizzando firebase functions:logs e cercare una voce di log che indichi che la scrittura è stata elaborata correttamente. Per questo kit con l'ID istanza predefinito di firestore-bigquery-export, l'aspetto sarà il seguente:

2026-09-25T19:52:46.328612Z I kit-firestore-bigquery-export-fsexportbigquery: Started execution of extension
2026-09-25T19:52:46.328644Z I kit-firestore-bigquery-export-fsexportbigquery: {"message":"Firestore event received by onDocumentWritten trigger","document_name":"projects/extensions-eventarc-testing/databases/(default)/documents/exported-messages/cmGP6XLyksqGdw2OgTOq","operation":0,"event_id":"9f59a2a4-1a5e-4c41-a32d-561e3c734502"}
2026-09-25T19:52:46.616064Z I kit-firestore-bigquery-export-fsexportbigquery: Completed execution of extension
2026-09-2

Se hai molti log, puoi filtrarli in base a una funzione specifica del kit utilizzando il seguente comando:

firebase functions:log --only <function name>

Per trovare i nomi delle funzioni specifiche per un'istanza del kit, puoi utilizzare il seguente comando:

firebase functions:list | grep kit-<kit instance id>

Per questo esempio:

firebase functions:list | grep kit-firestore-bigquery-export
│ kit-firestore-bigquery-export-fsexportbigquery  │ v2      │ google.cloud.firestore.document.v1.written                    │
│ kit-firestore-bigquery-export-initBigQuerySync  │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-setupBigQuerySync │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-syncBigQuery      │ v2      │ taskQueue                                                     │

5. Disinstalla l'estensione

Dopo aver verificato il kit di funzioni di cui hai eseguito il deployment, puoi disinstallare l'estensione in modo da non duplicarne il comportamento una volta per il kit e una volta per l'estensione. Puoi disinstallare tutte le estensioni dall'interfaccia a riga di comando Firebase, indipendentemente da come le hai installate, se passi il flag --immediate:

firebase ext:uninstall <extension-instance-id> --project <project-id> --immediate

Esempio elaborato:

firebase ext:uninstall firestore-bigquery-export --project my-project --immediate

Output:

i  extensions: uninstalling firestore-bigquery-export...
i  extensions: deleting extension instance resources in project my-project...
✔  extensions: successfully uninstalled firestore-bigquery-export

Migrazioni avanzate

Puoi avere estensioni in più progetti Firebase che vuoi gestire con un unico codebase. Ad esempio, se esegui il deployment della stessa infrastruttura in un ambiente testing e in un ambiente production, ognuno dei quali ha un'istanza Cloud Firestore documents che esporti in BigQuery, potresti avere due istanze dell'estensione firestore-bigquery-export installate:

  • export-documents-testing
  • export-documents-production

Se hai eseguito la migrazione di queste due istanze di estensione a due istanze di Function Kit in un'unica codebase quando lavori con l'interfaccia a riga di comando Firebase e hai eseguito il deployment utilizzando firebase deploy --project testing e firebase deploy --project production, ogni deployment creerebbe due istanze negli ambienti testing e production.

Sostituisci invece le due istanze di estensione con un'istanza del kit di funzioni di firestore-bigquery-export di cui è stato eseguito il deployment in più progetti, in cui ogni progetto ha la propria configurazione. La directory di configurazione dell'istanza dovrebbe essere simile alla seguente:

  • config-export-documents/
    • .env.testing
    • .env.production

Ogni deployment in testing e production crea un'istanza del tuo kit con la configurazione corrispondente. I comandi CLI esistenti creano questa configurazione, a condizione che tu passi il flag --project in ogni chiamata di ext:migrate o functions:kits:install.

Esempio elaborato:

firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project testing --no-configure --template migration
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? export-documents
✔  Wrote function-kits/firestore-bigquery-export/source/package.json
✔  Wrote function-kits/firestore-bigquery-export/source/tsconfig.json
✔  Wrote function-kits/firestore-bigquery-export/source/.gitignore
✔  Wrote function-kits/firestore-bigquery-export/source/src/index.ts
i  functions: Running npm install
✔  Wrote configuration info to firebase.json
✔  functions: Function kit firestore-bigquery-export successfully installed.
# This creates the export-documents instance with an empty .env.testing file
# for the testing project. Now populate it via export:
firebase ext:export --mode functions --instance export-documents-testing \
  --kit-instance export-documents --project testing

# Repeat the export for production into the same kit instance to create
# .env.production from the export-documents-prod instance:
firebase ext:export --mode functions --instance export-documents-prod \
  --kit-instance export-documents --project production

Ora hai un'unica istanza del kit configurata per il deployment nei tuoi progetti testing e production con le rispettive configurazioni. Se crei un'istanza nel progetto testing ed esegui il comando functions:kits:install per lo stesso pacchetto nel progetto production, ti viene chiesto se vuoi riutilizzare l'istanza configurata per testing o installare una seconda istanza.