Migracja rozszerzeń w Firebase do zestawów funkcji

Z tego przewodnika dowiesz się, jak przenieść rozszerzenia z wycofanego środowiska Firebase Extensions do zestawu funkcji, który możesz zainstalować i wdrożyć we własnej bazie kodu Cloud Functions dla Firebase (2 generacji).

Firebase Extensions zarządzała wszystkimi aspektami tworzenia, aktualizowania i usuwania rozszerzeń. Zestawy funkcji pakują możliwości rozszerzeń jako typowe funkcje Cloud Functions for Firebase 2 generacji. Ponieważ pakiety funkcji są standardowymi Cloud Functions, możesz je tworzyć, aktualizować, usuwać i rozwiązywać związane z nimi problemy za pomocą interfejsu wiersza poleceń Firebase w projekcie Firebase. Ten przewodnik pomoże Ci zarządzać funkcjami i wdrażać aktualizacje, gdy tylko będą dostępne.

W tym przewodniku jako przykładu używamy rozszerzenia Stream Cloud Firestore to BigQuery (firestore-bigquery-export), aby pokazać polecenia i ich wyniki na każdym etapie migracji.

Określanie ścieżki migracji

Firebase zachęca wszystkich wydawców Firebase Extensions do tworzenia zamienników rozszerzeń w postaci zestawów funkcji opublikowanych w npm. Możesz sprawdzić, czy dla Twoich rozszerzeń jest dostępny zamiennik zestawu funkcji, na kilka sposobów:

  • Otwórz stronę Rozszerzenia w konsoli Firebase dla swojego projektu. Każde zainstalowane rozszerzenie wskazuje, czy jest dostępny zamiennik zestawu funkcji.
  • Aby sprawdzić, które z zainstalowanych rozszerzeń mają oficjalne zamienniki, uruchom firebase ext:list w projekcie Firebase w terminalu:

    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
    

Jeśli dla Twojego rozszerzenia jest dostępny oficjalny zamiennik zestawu funkcji, możesz go przenieść, korzystając z sekcji Migracja do zestawów funkcji w npm.

Jeśli nie możesz znaleźć opublikowanego zamiennika, możesz rozgałęzić kod rozszerzenia i utworzyć własny zamiennik, ponieważ wszystkie rozszerzenia są dostępne na zasadach open source. Aby to zrobić, postępuj zgodnie z przewodnikiem Migracja do samodzielnie utworzonego zestawu funkcji.

Wybierz ścieżkę migracji: Przejście na pakiety funkcji w npm Przejście na samodzielnie utworzony pakiet funkcji

Migracja do zestawów funkcji w npm

Sprawdzanie znanych ograniczeń migracji

Zanim zaczniesz migrację instancji rozszerzenia, sprawdź, czy Twoja konfiguracja korzysta z którejkolwiek z tych funkcji, które wymagają obejścia lub nie są jeszcze obsługiwane w zestawach funkcji:

  • Niestandardowe repozytoria Dockera i klucze KMS wymagają ręcznego obejścia Cloud Functions for Firebase nie obsługuje zastępczych parametrów systemowych do konfigurowania niestandardowego repozytorium Dockera ani klucza szyfrowania zarządzanego przez klienta (klucza KMS). Jeśli rozszerzenie konfiguruje którykolwiek z tych parametrów, zapoznaj się z obejściem problemu opisanym w najczęstszych pytaniach.

Zanim zaczniesz

Musisz skonfigurować interfejs wiersza poleceń Firebase i zainicjować projekt Firebase. Jeśli używasz interfejsu wiersza poleceń, upewnij się, że używasz wersji firebase-tools >= 15.32.0, która zawiera nowe polecenia migracji i zestawu funkcji.

Wymagane uprawnienia i role na koncie

W zależności od tego, co musi zostać utworzone i skonfigurowane przez interfejs wiersza poleceń Firebase podczas migracji, konto, którego używasz do uwierzytelniania w Firebase i Google Cloud, musi mieć te role:

  • roles/firebaseextensions.editor
  • roles/cloudbuild.builds.editor
  • roles/artifactregistry.writer
  • roles/run.developer
  • roles/iam.serviceAccountUser
  • roles/iam.serviceAccountCreator
  • roles/cloudfunctions.admin (jeśli musisz wykonać setIamPermissions w przypadku publicznych punktów końcowych)
  • roles/secretmanager.admin (jeśli używasz obiektów tajnych)
  • roles/serviceusage.serviceUsageAdmin (jeśli musisz włączyć nowe interfejsy API)

Zalecamy użycie konta, na którym wcześniej zainstalowano rozszerzenia i wdrożono funkcje, ponieważ większość tych uprawnień została już przyznana. Jeśli Twoje konto, które chcesz przenieść, potrzebuje więcej ról, postępuj zgodnie z Google Cloudinstrukcjami dotyczącymi uprawnień, aby je dodać.

Wybieranie przepływu pracy CLI

Aby przejść z instancji rozszerzenia na zestaw funkcji dostępny w npm, wybierz jedną z tych opcji:

  • (Zalecane) Przeprowadź migrację za pomocą polecenia interfejsu wiersza poleceń ext:migrate. To polecenie wdraża zamiennik zestawu funkcji przed odinstalowaniem rozszerzenia, które zastępuje.
  • Przeprowadź migrację za pomocą poleceń interfejsu wiersza poleceń zestawów funkcji. Możesz użyć osobnych poleceń, aby zaktualizować rozszerzenie, zainstalować zestaw funkcji, skonfigurować go tak jak rozszerzenie, wdrożyć zestaw i odinstalować rozszerzenie. Zapewnia to większą elastyczność podczas zmiany kolejności poleceń lub wykonywania dodatkowych czynności między krokami.

Migracja za pomocą ext:migrate

W przypadku każdej instancji rozszerzenia rozpocznij migrację, uruchamiając polecenie:

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

To polecenie przeprowadzi Cię przez te czynności:

  1. Wybierz rozszerzenie do migracji, które ma dostępny oficjalny zamiennik w postaci zestawu funkcji.
  2. wybrać konkretną instancję tego rozszerzenia,
  3. W razie potrzeby zaktualizuj rozszerzenie do najnowszej wersji.
  4. Zainstalowanie zestawu funkcji i skonfigurowanie instancji w taki sam sposób, jak skonfigurowana jest instancja rozszerzenia.
  5. Wdrażanie zestawu funkcji.
  6. Sprawdzanie, czy zestaw funkcji został wdrożony i czy wszystkie punkty zaczepienia cyklu życia (jeśli istnieją) zostały uruchomione.
  7. Odinstalowuję instancję rozszerzenia.

Jeśli znasz konkretne rozszerzenie lub instancję rozszerzenia, które chcesz przenieść, określ je za pomocą tych flag wiersza poleceń:

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

# or

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

Jeśli wiesz, na który pakiet chcesz przejść, zwłaszcza jeśli nie jest to oficjalny pakiet zastępczy wymieniony przez Google, określ go za pomocą flagi --package:

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

Weryfikowanie wdrożenia zestawu funkcji

Aby sprawdzić, czy podczas firebase deploy zestawu nie wystąpiły błędy, sprawdź logi wdrażania i zobacz, czy zostały aktywowane jakieś punkty zaczepienia cyklu życia. Popularne rozszerzenia, takie jak Stream Cloud Firestore to BigQuery, używają punktów zaczepienia cyklu życia. Oto przykład działania wywołanego punktu zaczepienia cyklu życia:

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

Te komunikaty logu potwierdzają, że:

  • Znaleziono i wykonano punkt zaczepienia cyklu życia.
  • Zadanie zostało dodane do kolejki zadań powiązanej z punktem zaczepienia cyklu życia.
  • Podany został link do Cloud Logging, dzięki któremu możesz sprawdzić, czy zadanie zostało wykonane bez błędów.

Kliknij link do logów, aby przejść do konsoli Google Cloud i sprawdzić, czy w logach nie ma błędów, a zdarzenie kolejki zadań zostało przetworzone. Jeśli zdarzenie cyklu życia nie zostało wykonane, możesz je ponownie wywołać, uruchamiając:

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

Jeśli wdrażasz instancję zestawu funkcji po raz pierwszy, uruchom:

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

Jeśli w dowolnym momencie podczas weryfikacji zdecydujesz, że chcesz zatrzymać lub cofnąć tę migrację, możesz odinstalować zestaw, postępując zgodnie z instrukcjami w sekcji Odinstalowywanie rozszerzenia.

Po sprawdzeniu, że początkowe wdrożenie zestawu funkcji zostało zakończone, musisz sprawdzić, czy funkcje zestawu działają zgodnie z oczekiwaniami. Ponieważ rozszerzenie nadal działa, musisz uważać, aby nie sprawdzać tylko tego, czy jedno z tych 2 rozwiązań zadziałało, ponieważ rozszerzenie działało i będzie działać dalej.

Jeśli przetwarzanie nie uległo zmianie i nie widzisz zduplikowanych wyników z rozszerzenia i zestawu, najlepiej jest bezpośrednio sprawdzić logi zestawu po uruchomieniu jego funkcji.

Przykładowe rozwiązanie: strumieniowe przesyłanie danych z Cloud Firestore do BigQuery

W przypadku rozszerzenia Stream Cloud Firestore to BigQuery zapisy zarówno w tabeli nieprzetworzonego dziennika zmian (*_raw_changelog), jak i w tabeli najnowszego widoku (*_raw_latest) będą deduplikowane, jeśli to samo zdarzenie zostanie dostarczone do zestawu i rozszerzenia. Nie możesz więc użyć obecności żadnych wierszy ani zduplikowanych wierszy w BigQuery, aby sprawdzić, czy zestaw działa.

Możesz wyświetlić logi funkcji wkrótce po zapisaniu danych w kolekcji Firestore za pomocą firebase functions:logs i poszukać wpisu logu, który wskazuje, że zapis został pomyślnie przetworzony. W przypadku tego zestawu z domyślnym identyfikatorem instancji firestore-bigquery-export będzie to wyglądać tak:

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

Jeśli masz dużo logów, możesz je przefiltrować, aby wyświetlić konkretną funkcję zestawu, używając tego polecenia:

firebase functions:log --only <function name>

Aby znaleźć konkretne nazwy funkcji dla instancji zestawu, możesz użyć tego polecenia:

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

W tym przykładzie:

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                                                     │

Przeglądanie pliku README zestawu funkcji

Niektóre zestawy mogą wymagać dodatkowych działań, które nie są wykonywane automatycznie przez zestawy funkcji. Zapoznaj się z README dotyczącym instalowanego zestawu i postępuj zgodnie z dodatkowymi instrukcjami.

Migracja za pomocą interfejsu wiersza poleceń zestawów funkcji

Zanim zaczniesz, znajdź i zapisz identyfikator instancji rozszerzenia, które chcesz przenieść do zestawu, oraz nazwę pakietu npm zestawu zastępczego. Obie te wartości znajdziesz w danych wyjściowych polecenia firebase ext:list. Przykład użycia ext:list znajdziesz w artykule Określanie ścieżki migracji.

1. Uaktualnianie instancji rozszerzenia do najnowszej wersji

Musisz zaktualizować rozszerzenie do najnowszej wersji, aby zminimalizować różnicę między instancją rozszerzenia a zestawem zastępczym. Jeśli nie uaktualnisz rozszerzenia, mogą wystąpić znaczne zmiany powodujące niezgodność między instancją rozszerzenia a jego zamiennikiem. Wyeksportowana konfiguracja może nie odpowiadać oczekiwaniom zestawu ze względu na zmiany parametrów w różnych wersjach.

Użyj jednej z tych opcji, aby zaktualizować rozszerzenie, w zależności od tego, gdzie zostało zainstalowane:

  • W konsoli Firebase
  • Z interfejsu wiersza poleceń Firebase za pomocą:
    • firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>

Jeśli pominiesz ten krok, interfejs wiersza poleceń poprosi Cię o uaktualnienie podczas eksportowania konfiguracji, jeśli rozszerzenie nie jest w najnowszej wersji.

2. Sprawdź i zainstaluj instancję zastępczego zestawu funkcji

Zestaw funkcji możesz zainstalować za pomocą tego polecenia interfejsu wiersza poleceń:

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

Gdy podczas instalacji wybierzesz identyfikator instancji zestawu, zapisz go, aby użyć go później w instrukcjach migracji.

Po zainstalowaniu zestawu w projekcie Firebase zostanie utworzony nowy katalog o lokalizacji takiej jak function-kits/<kit-name>/source, który zawiera pakiet npm z zestawem zastępującym rozszerzenie oraz podstawowy plik index.ts, który eksportuje te funkcje, aby umożliwić ich wdrożenie i ustawienie niestandardowej konfiguracji w Firebase.

Zapoznaj się z plikiem README zestawu i postępuj zgodnie z podanymi w nim dodatkowymi instrukcjami.

Jeśli masz kilka instancji zestawu w tym samym projekcie, możesz powtórzyć to polecenie, aby utworzyć nowe instancje tego samego zestawu. Możesz też wdrożyć pojedynczą instancję zestawu w 2 różnych projektach Firebase z różnymi konfiguracjami (np. w projekcie przejściowym i produkcyjnym). Więcej informacji o tych zaawansowanych konfiguracjach znajdziesz w artykule Migracje zaawansowane.

Przykład:

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

3. Skonfiguruj instancję zestawu funkcji tak samo jak rozszerzenie.

Musisz dostosować tę instancję zestawu, używając konfiguracji identycznej z konfiguracją zastępowanego rozszerzenia. Możesz wyeksportować konfigurację instancji rozszerzenia do pliku .env, który przechowuje dane konfiguracji parametrów, zmiennych środowiskowych i tajnych odwołań dla wszystkich Cloud Functions, w tym zestawów. Aby wyeksportować go bezpośrednio do pliku konfiguracji zestawu, uruchom:

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

Po wykonaniu tego kroku informacje o konfiguracji tej instancji zostaną zapisane w pliku .env powiązanym z projektem w katalogu konfiguracji instancji, na przykład: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>

4. Wdrażanie i weryfikowanie wymiany zestawu

Teraz, gdy zestaw jest zainstalowany i dostępny jako zestaw funkcji, możesz wdrożyć jego zamiennik. Zestawy funkcji działają jak standardowe funkcje, przy czym każda instancja zestawu działa jako osobna baza kodu do porządkowania funkcji. Możesz wdrożyć wszystkie funkcje lub tylko konkretną instancję zestawu. Podczas migracji pojedynczej instancji rozszerzenia wdrażaj tylko tę instancję zestawu.

Jeśli Twój zestaw korzysta z nowych parametrów, które nie były obecne w instancji rozszerzenia, z której została przeprowadzona migracja, interfejs wiersza poleceń Firebase poprosi o nie na początku procesu wdrażania. W tym przykładzie nie jest to oczekiwane, ponieważ używamy aktualnego rozszerzenia firestore-bigquery-export, ale wiele zestawów prosi o podanie nowego parametru dla każdego źródła aktywatora zdarzenia używanego przez zestaw. W ramach tej migracji zaktualizowane zestawy używają funkcji 2 generacji, podczas gdy rozszerzenia wcześniej używały funkcji 1 generacji. W drugiej generacji funkcje znajdują się w pobliżu źródeł zdarzeń i są dodawane jako dodatkowy parametr. Jeśli w przyszłych aktualizacjach zostaną dodane nowe parametry, interfejs wiersza poleceń wyświetli odpowiedni komunikat przy następnym wdrożeniu.

Przykład:

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

Dane wyjściowe:

=== 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!

Aby sprawdzić, czy podczas firebase deploy zestawu nie wystąpiły błędy, sprawdź logi wdrażania i zobacz, czy zostały aktywowane jakieś punkty zaczepienia cyklu życia. Popularne rozszerzenia, takie jak Stream Cloud Firestore to BigQuery, używają punktów zaczepienia cyklu życia. Oto przykład działania wywołanego punktu zaczepienia cyklu życia:

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

Te komunikaty logu potwierdzają, że:

  • Znaleziono i wykonano punkt zaczepienia cyklu życia.
  • Zadanie zostało dodane do kolejki zadań powiązanej z punktem zaczepienia cyklu życia.
  • Podany został link do Cloud Logging, dzięki któremu możesz sprawdzić, czy zadanie zostało wykonane bez błędów.

Kliknij link do logów, aby przejść do konsoli Google Cloud i sprawdzić, czy w logach nie ma błędów, a zdarzenie kolejki zadań zostało przetworzone. Jeśli zdarzenie cyklu życia nie zostało wykonane, możesz je ponownie wywołać, uruchamiając:

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

Jeśli wdrażasz instancję zestawu funkcji po raz pierwszy, uruchom:

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

Jeśli w dowolnym momencie podczas weryfikacji zdecydujesz, że chcesz zatrzymać lub cofnąć tę migrację, możesz odinstalować zestaw, postępując zgodnie z instrukcjami w sekcji Odinstalowywanie rozszerzenia.

Po sprawdzeniu, że początkowe wdrożenie zestawu funkcji zostało zakończone, musisz sprawdzić, czy funkcje zestawu działają zgodnie z oczekiwaniami. Ponieważ rozszerzenie nadal działa, musisz uważać, aby nie sprawdzać tylko tego, czy jedno z tych 2 rozwiązań zadziałało, ponieważ rozszerzenie działało i będzie działać nadal.

Jeśli przetwarzanie nie uległo zmianie i nie widzisz zduplikowanych wyników z rozszerzenia i zestawu, najlepiej jest bezpośrednio sprawdzić logi zestawu po uruchomieniu jego funkcji.

Przykładowe rozwiązanie: strumieniowe przesyłanie danych z Cloud Firestore do BigQuery

W przypadku rozszerzenia Stream Cloud Firestore to BigQuery zapisy zarówno w tabeli nieprzetworzonego dziennika zmian (*_raw_changelog), jak i w tabeli najnowszego widoku (*_raw_latest) będą deduplikowane, jeśli to samo zdarzenie zostanie dostarczone do zestawu i rozszerzenia. Nie możesz więc użyć obecności żadnych wierszy ani zduplikowanych wierszy w BigQuery, aby sprawdzić, czy zestaw działa.

Możesz wyświetlić logi funkcji wkrótce po zapisaniu danych w kolekcji Firestore za pomocą firebase functions:logs i poszukać wpisu logu, który wskazuje, że zapis został pomyślnie przetworzony. W przypadku tego zestawu z domyślnym identyfikatorem instancji firestore-bigquery-export będzie to wyglądać tak:

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

Jeśli masz dużo logów, możesz je przefiltrować, aby wyświetlić konkretną funkcję zestawu, używając tego polecenia:

firebase functions:log --only <function name>

Aby znaleźć konkretne nazwy funkcji dla instancji zestawu, możesz użyć tego polecenia:

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

W tym przykładzie:

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. Odinstalowywanie rozszerzenia

Po zweryfikowaniu wdrożonego zestawu funkcji możesz odinstalować rozszerzenie, aby nie powielać jego działania w zestawie i rozszerzeniu. Możesz odinstalować wszystkie rozszerzenia z interfejsu wiersza poleceń Firebase niezależnie od tego, jak zostały zainstalowane, jeśli przekażesz flagę --immediate:

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

Przykład:

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

Dane wyjściowe:

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

Migracje zaawansowane

Możesz mieć rozszerzenia w wielu projektach Firebase, którymi chcesz zarządzać za pomocą jednej bazy kodu. Jeśli na przykład wdrażasz tę samą infrastrukturę w środowisku testing i production, z których każde ma instancję documents Cloud Firestore eksportowaną do BigQuery, możesz mieć zainstalowane 2 instancje rozszerzenia firestore-bigquery-export:

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

Jeśli podczas pracy z interfejsem wiersza poleceń Firebase przeniesiesz te 2 instancje rozszerzenia do 2 instancji zestawu funkcji w jednej bazie kodu i wdrożysz je za pomocą poleceń firebase deploy --project testing i firebase deploy --project production, każde wdrożenie utworzy 2 instancje w środowiskach testing i production.

Zamiast tego zastąp 2 instancje rozszerzenia jedną instancją zestawu funkcji firestore-bigquery-export wdrożoną w kilku projektach, z których każdy ma własną konfigurację. Katalog konfiguracji instancji powinien wyglądać tak:

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

Każde wdrożenie w testing i production tworzy jedną instancję zestawu z odpowiednią konfiguracją. Istniejące polecenia interfejsu wiersza poleceń tworzą tę konfigurację, o ile przy każdym wywołaniu polecenia ext:migrate lub functions:kits:install przekazujesz flagę --project.

Przykład:

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

Masz teraz pojedynczą instancję zestawu skonfigurowaną do wdrażania w projektach testing i production z odpowiednimi konfiguracjami. Jeśli utworzysz instancję w projekcie testing i uruchomisz polecenie functions:kits:install dla tego samego pakietu w projekcie production, pojawi się opcja ponownego użycia instancji skonfigurowanej dla projektu testing lub zainstalowania drugiej instancji.