העברת תוספים ל-Firebase לערכות פונקציות

במדריך הזה מוסבר איך להעביר את התוספים מהסביבה שהוצאה משימוש Firebase Extensions לערכת פונקציות שאפשר להתקין ולפרוס בבסיס הקוד של Cloud Functions ל-Firebase (דור שני).

Firebase Extensions ניהל את כל ההיבטים של יצירה, עדכון והסרה של תוספים. ערכות פונקציות אורזות את היכולות של התוספים כ-Cloud Functions for Firebase טיפוסי מדור שני. מכיוון שערכות הפונקציות הן Cloud Functions סטנדרטיות, אתם יוצרים, מעדכנים, מוחקים ופותרים בעיות באמצעות ה-CLI של Firebase בפרויקט Firebase. המדריך הזה יעזור לכם לנהל את הפונקציות שלכם עכשיו ולהטמיע עדכונים כשהם יהיו זמינים.

במדריך הזה, התוסף Stream Cloud Firestore to BigQuery (firestore-bigquery-export) משמש כדוגמה שמציגה את הפקודות ואת פלט הפקודות לכל שלב בהעברה.

בחירת נתיב ההעברה

‫Firebase מעודדת את כל בעלי התוכן הדיגיטלי ב-Firebase Extensions ליצור תחליפים לתוספים שלהם כערכות פונקציות שמתפרסמות ב-npm. יש כמה דרכים לבדוק אם יש ערכת פונקציות חלופית לתוספים שלכם:

  • נכנסים לדף Extensions במסוף Firebase בפרויקט. בכל תוסף שמותקן אצלכם מצוין אם יש לו ערכת פונקציות חלופית זמינה.
  • מריצים את הפקודה firebase ext:list בטרמינל בתוך הפרויקט ב-Firebase כדי לראות לאילו מהתוספים שהתקנתם יש תחליפים רשמיים:

    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
    

אם יש ערכת פונקציות רשמית חלופית לתוסף, אתם יכולים להעביר אותו באמצעות הקטע Migrate to function kits on npm.

אם אתם לא מוצאים תוסף חלופי שפורסם, אתם יכולים ליצור עותק של קוד התוסף וליצור תוסף חלופי משלכם, כי כל התוספים הם בקוד פתוח. כדי לעשות את זה, פועלים לפי ההוראות במדריך מעבר לערכת פונקציות שנוצרה באופן עצמאי.

בחירת מסלול העברה: מעבר לערכות פונקציות ב-npm מעבר לערכת פונקציות שנוצרה באופן עצמאי

מעבר לערכות פונקציות ב-npm

בדיקת מגבלות ידועות בהעברה

לפני שמתחילים להעביר מופע של תוסף, צריך לבדוק אם ההגדרה שלכם משתמשת באחת מהתכונות הבאות שדורשות פתרון עקיף או שעדיין לא נתמכות בערכות פונקציות:

  • מאגרי Docker מותאמים אישית ומפתחות KMS דורשים פתרון עקיף ידני ‫Cloud Functions for Firebase לא תומך בפרמטרים של מערכת חלופית להגדרת מאגר Docker מותאם אישית או מפתח הצפנה בניהול הלקוח (מפתח KMS). אם התוסף מגדיר את אחד מהפרמטרים האלה, עיינו בפתרון החלופי בשאלות הנפוצות.

לפני שמתחילים

צריך להגדיר את ה-CLI של Firebase ולהפעיל פרויקט ב-Firebase. כשמשתמשים ב-CLI, חשוב לוודא שמשתמשים בגרסה >= 15.32.0 של firebase-tools, שכוללת את הפקודות החדשות של ערכת הפונקציות וההעברה.

הרשאות ותפקידים נדרשים בחשבון

בהתאם למה שצריך ליצור ולהגדיר באמצעות ה-CLI של Firebase במהלך ההעברה, לחשבון שבו אתם משתמשים כדי לבצע אימות מול Firebase ו-Google Cloud צריכים להיות התפקידים הבאים:

  • roles/firebaseextensions.editor
  • roles/cloudbuild.builds.editor
  • roles/artifactregistry.writer
  • roles/run.developer
  • roles/iam.serviceAccountUser
  • roles/iam.serviceAccountCreator
  • ‫roles/cloudfunctions.admin (אם צריך לבצע setIamPermissions לנקודות קצה ציבוריות)
  • ‫roles/secretmanager.admin (אם משתמשים בסודות)
  • roles/serviceusage.serviceUsageAdmin (אם צריך להפעיל ממשקי API חדשים)

מומלץ להשתמש בחשבון שכבר הותקנו בו תוספים ונפרסו בו פונקציות, כי רוב ההרשאות האלה כבר ניתנו. אם החשבון שאתם מעבירים צריך עוד תפקידים, תוכלו להוסיף אותם לפי ההוראות של Google Cloud IAM.

בחירת תהליך עבודה של CLI

כדי להעביר מופע של תוסף לערכת פונקציות שזמינה ב-npm, בוחרים באחת מהאפשרויות הבאות:

  • (מומלץ) העברה באמצעות פקודת ה-CLI של ext:migrate. הפקודה הזו פורסת את ערכת הפונקציות החלופית לפני הסרת התוסף שהיא מחליפה.
  • מעבירים באמצעות פקודות CLI של ערכות פונקציות. אתם יכולים להשתמש בפקודות נפרדות כדי לעדכן את התוסף, להתקין ערכת פונקציות, להגדיר אותה כמו התוסף, לפרוס את הערכה ולהסיר את התוסף. כך יש יותר גמישות בשינוי הסדר של הפקודות או בביצוע פעולות נוספות בין השלבים.

העברה באמצעות ext:migrate

כדי להתחיל את ההעברה, מריצים את הפקודה הבאה פעם אחת לכל מופע של תוסף:

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

הפקודה הזו תנחה אתכם בתהליך:

  1. בחירת תוסף להעברה שיש לו ערכת פונקציות רשמית חלופית.
  2. בחירת מופע ספציפי של התוסף הזה.
  3. מעדכנים את התוסף לגרסה העדכנית, אם צריך.
  4. התקנת ערכת הפונקציות, הגדרת מכונה באופן זהה להגדרת המכונה של התוסף.
  5. פריסת ערכת הפונקציות.
  6. מוודאים שערכת הפונקציות נפרסה בהצלחה ושכל ה-lifecycle hooks, אם יש כאלה, הופעלו.
  7. הסרת המופע של התוסף.

אם אתם יודעים מהו התוסף הספציפי או מופע התוסף שאתם רוצים להעביר, ציינו אותו באמצעות הדגלים הבאים של שורת הפקודה:

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

# or

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

אם אתם יודעים מה החבילה הספציפית שאליה אתם רוצים לעבור, במיוחד אם היא לא חבילה חלופית רשמית שמופיעה ברשימה של Google, ציינו אותה באמצעות הדגל --package:

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

אימות הפריסה של ערכת הפונקציות

כדי לוודא שלא היו שגיאות ב-firebase deploy של הערכה, בודקים ביומני הפריסה אם הופעלו הוקים של מחזור חיים. תוספים פופולריים, כמו Stream Cloud Firestore to BigQuery, משתמשים ב-lifecycle hooks. כך נראה הוק של מחזור חיים כשהוא מופעל:

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

הודעות היומן האלה מאשרות את הדברים הבאים:

  • נמצא והופעל הוק של מחזור חיים.
  • משימה הועברה לתור המשימות שמשויך להוק (hook) של מחזור החיים.
  • קישור ל-Cloud Logging כדי שתוכלו לוודא שהמשימה הושלמה בלי שגיאות.

עוברים דרך הקישור ליומנים למסוף Google Cloud כדי לוודא שאין שגיאות ביומנים ושהאירוע של תור המשימות עבר עיבוד בהצלחה. אם אירוע מחזור החיים לא בוצע בהצלחה, אפשר להפעיל אותו מחדש באמצעות הפקודה:

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

אם אתם פורסים מכונה של ערכת פונקציות בפעם הראשונה, הריצו את הפקודה:

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

אם בשלב כלשהו במהלך האימות תחליטו שאתם רוצים להפסיק או לבטל את ההעברה, תוכלו להסיר את הערכה לפי ההוראות שמפורטות בקטע הסרת התוסף.

אחרי שמוודאים שהפריסה הראשונית של ערכת הפונקציות הושלמה בהצלחה, צריך לוודא שהפונקציונליות של הערכה פועלת כמו שצריך. מכיוון שהתוסף עצמו עדיין פועל, צריך לוודא שמה שבודקים הוא לא רק שאחד משני הדברים עבד, כי התוסף פעל וימשיך לפעול.

אם העיבוד לא השתנה ולא מופיעות תוצאות כפולות מהתוסף ומהערכה, האפשרות הכי טובה היא לבדוק ישירות את היומנים של הערכה אחרי שמפעילים את הפונקציונליות שלה.

דוגמה מעשית: העברה של Cloud Firestore אל BigQuery

כשמשתמשים בתוסף Stream Cloud Firestore to BigQuery, הכתיבה גם בטבלת יומן השינויים הגולמי (*_raw_changelog) וגם בטבלת התצוגה האחרונה (*_raw_latest) תבטל כפילויות אם אותו אירוע יועבר לערכה ולתוסף. לכן, אי אפשר להשתמש בנוכחות של שורות או שורות כפולות ב-BigQuery כדי לאמת שהערכה פועלת.

אפשר להציג את יומני הפונקציות זמן קצר אחרי הכתיבה לאוסף Firestore באמצעות firebase functions:logs, ולחפש רשומה ביומן שמציינת שהכתיבה עובדה בהצלחה. לערכה הזו עם מזהה המכונה שמוגדר כברירת מחדל, firestore-bigquery-export, תיראה כך:

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

אם יש לכם הרבה יומנים, אתם יכולים לסנן אותם לפי פונקציה ספציפית של ערכת הכלים באמצעות הפקודה הבאה:

firebase functions:log --only <function name>

כדי למצוא את שמות הפונקציות הספציפיות של מופע ערכה, אפשר להשתמש בפקודה הבאה:

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

בדוגמה הזו:

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                                                     │

עיון בקובץ ה-README של ערכת הפונקציות

יכול להיות שחלק מהערכות ידרשו עבודה נוספת מעבר למה שמטופל באופן אוטומטי על ידי ערכות הפונקציות. קוראים את README של הערכה שמתקינים ופועלים לפי ההוראות הנוספות.

העברה באמצעות ה-CLI של ערכות הפונקציות

לפני שמתחילים, צריך לזהות ולרשום את מזהה המכונה של התוסף שרוצים להעביר לערכה, ואת שם חבילת ה-npm של הערכה החלופית. אפשר למצוא את שניהם באמצעות הפלט של firebase ext:list. במאמר בחירת נתיב ההעברה מופיעה דוגמה לשימוש ב-ext:list.

1. שדרוג מופע התוסף לגרסה העדכנית

חובה לעדכן את התוסף לגרסה העדכנית כדי לצמצם את ההבדל בין מופע התוסף לבין ערכת ההחלפה שלו. אם לא תשדרגו את התוסף, יכול להיות שיהיו שינויים משמעותיים שעלולים לגרום לכשל בין המופע של התוסף לבין הערכה שמחליפה אותו. יכול להיות שההגדרות שיוצאו לא יתאימו למה שהערכה מצפה לו בגלל שינויים בפרמטרים בין הגרסאות.

כדי לעדכן את התוסף, משתמשים באחת מהאפשרויות הבאות, בהתאם למקום שבו הוא הותקן:

  • ממסוף Firebase
  • מ-CLI של Firebase באמצעות:
    • firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>

אם תדלגו על השלב הזה, ה-CLI יבקש מכם לשדרג כשאתם מייצאים את ההגדרות, אם התוסף שלכם לא בגרסה העדכנית.

2. בדיקה והתקנה של המופע החלופי של ערכת הפונקציות

כדי להתקין את ערכת הפונקציות, אפשר להשתמש בפקודת ה-CLI הבאה:

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

כשבוחרים מזהה מכונה לערכה במהלך ההתקנה, חשוב לרשום אותו כדי להשתמש בו בהמשך בהוראות ההעברה.

אחרי שמתקינים את הערכה, נוצרת ספרייה חדשה בפרויקט Firebase במיקום כמו function-kits/<kit-name>/source. הספרייה הזו מכילה את חבילת ה-npm עם הערכה שמחליפה את התוסף, וקובץ index.ts בסיסי שמייצא את הפונקציות האלה כדי ש-Firebase יפרוס אותן ויגדיר תצורה מותאמת אישית.

קוראים את קובץ ה-README של הערכה ופועלים לפי ההוראות הנוספות שמפורטות בו.

אם יש לכם כמה מופעים של הערכה באותו פרויקט, אתם יכולים לחזור על הפקודה הזו כדי ליצור מופעים חדשים של אותה ערכה. אפשר גם לפרוס מכונה אחת של ערכה בשני פרויקטים שונים ב-Firebase עם הגדרות שונות (לדוגמה, פרויקט בסביבת Staging ופרויקט בסביבת ייצור). מידע נוסף על ההגדרות המתקדמות האלה זמין במאמר העברות מתקדמות.

דוגמה:

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

3. מגדירים את המכונה של ערכת הפונקציות באופן זהה לתוסף

צריך להתאים אישית את המופע הזה של הערכה עם הגדרה זהה לזו של התוסף שהוא מחליף. אתם יכולים לייצא את ההגדרות של המופע של התוסף לקובץ .env, שבו מאוחסנים נתוני ההגדרות של הפרמטרים, משתני הסביבה וההפניות לסודות של כל Cloud Functions, כולל ערכות. כדי לייצא אותו ישירות לקובץ התצורה של הערכה, מריצים את הפקודה:

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

בסיום השלב הזה, פרטי ההגדרות של המכונה הזו מאוחסנים בקובץ .env ספציפי לפרויקט בספריית ההגדרות של המכונה, למשל: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>

4. פריסה ואימות של הערכה החלופית

עכשיו, כשהערכה מותקנת וזמינה כקבוצת פונקציות, אתם יכולים לפרוס את הערכה החלופית. ערכות פונקציות פועלות כמו פונקציות רגילות, וכל מופע של ערכה משמש כבסיס קוד נפרד לארגון הפונקציות. אתם יכולים לפרוס את כל הפונקציות או רק מופע ספציפי של ערכה. כשמעבירים מופע יחיד של תוסף, צריך לפרוס רק את המופע הזה של הערכה.

אם בערכה שלכם יש פרמטרים חדשים שלא היו קיימים במופע של התוסף שהעברתם, ה-CLI של Firebase יבקש מכם להזין אותם בתחילת תהליך הפריסה. זה לא אמור לקרות בדוגמה הזו, כי היא מבוססת על גרסה עדכנית של התוסף firestore-bigquery-export, אבל הרבה ערכות מבקשות פרמטר חדש לכל מקור של טריגר לאירוע שנעשה בו שימוש בערכה. כחלק מההעברה הזו, ערכות מעודכנות משתמשות בפונקציות מהדור השני, בעוד שבעבר תוספים השתמשו בפונקציות מהדור הראשון. בדור השני, הפונקציות נמצאות ליד מקורות האירועים שלהן ונוספות כפרמטר נוסף. בעדכונים עתידיים, אם יתווספו פרמטרים חדשים, ה-CLI יציג לכם בקשה בפריסה הבאה.

דוגמה:

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

פלט:

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

כדי לוודא שלא היו שגיאות ב-firebase deploy של הערכה, בודקים ביומני הפריסה אם הופעלו הוקים של מחזור חיים. תוספים פופולריים, כמו Stream Cloud Firestore to BigQuery, משתמשים ב-lifecycle hooks. כך נראה הוק של מחזור חיים כשהוא מופעל:

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

הודעות היומן האלה מאשרות את הדברים הבאים:

  • נמצא והופעל הוק של מחזור חיים.
  • משימה הועברה לתור המשימות שמשויך להוק (hook) של מחזור החיים.
  • קישור ל-Cloud Logging כדי שתוכלו לוודא שהמשימה הושלמה בלי שגיאות.

עוברים דרך הקישור ליומנים למסוף Google Cloud כדי לוודא שאין שגיאות ביומנים ושהאירוע של תור המשימות עבר עיבוד בהצלחה. אם אירוע מחזור החיים לא בוצע בהצלחה, אפשר להפעיל אותו מחדש באמצעות הפקודה:

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

אם אתם פורסים מכונה של ערכת פונקציות בפעם הראשונה, הריצו את הפקודה:

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

אם בשלב כלשהו במהלך האימות תחליטו שאתם רוצים להפסיק או לבטל את ההעברה, תוכלו להסיר את הערכה לפי ההוראות שמפורטות בקטע הסרת התוסף.

אחרי שמוודאים שהפריסה הראשונית של ערכת הפונקציות הושלמה בהצלחה, צריך לוודא שהפונקציונליות של הערכה פועלת כמו שצריך. מכיוון שהתוסף עצמו עדיין פועל, צריך לוודא שמה שבודקים הוא לא רק שאחד משני הדברים עבד, כי התוסף פעל וימשיך לפעול.

אם העיבוד לא השתנה ולא מופיעות תוצאות כפולות מהתוסף ומהערכה, האפשרות הכי טובה היא לבדוק ישירות את היומנים של הערכה אחרי שמפעילים את הפונקציונליות שלה.

דוגמה מעשית: העברה של Cloud Firestore אל BigQuery

כשמשתמשים בתוסף Stream Cloud Firestore to BigQuery, הכתיבה גם בטבלת יומן השינויים הגולמי (*_raw_changelog) וגם בטבלת התצוגה האחרונה (*_raw_latest) תבטל כפילויות אם אותו אירוע יועבר לערכה ולתוסף. לכן, אי אפשר להשתמש בנוכחות של שורות או שורות כפולות ב-BigQuery כדי לאמת שהערכה פועלת.

אפשר להציג את יומני הפונקציות זמן קצר אחרי הכתיבה לאוסף Firestore באמצעות firebase functions:logs, ולחפש רשומה ביומן שמציינת שהכתיבה עובדה בהצלחה. לערכה הזו עם מזהה המכונה שמוגדר כברירת מחדל, firestore-bigquery-export, תיראה כך:

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

אם יש לכם הרבה יומנים, אתם יכולים לסנן אותם לפי פונקציה ספציפית של ערכת הכלים באמצעות הפקודה הבאה:

firebase functions:log --only <function name>

כדי למצוא את שמות הפונקציות הספציפיות של מופע ערכה, אפשר להשתמש בפקודה הבאה:

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

בדוגמה הזו:

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. הסרת התוסף

אחרי שמוודאים שערכת הפונקציות נפרסה, אפשר להסיר את התוסף כדי לא לשכפל את ההתנהגות שלו – פעם אחת בערכה ופעם אחת בתוסף. אתם יכולים להסיר את כל התוספים מ-CLI של Firebase, לא משנה איך התקנתם אותם, אם תעבירו את הדגל --immediate:

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

דוגמה:

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

פלט:

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

העברות מתקדמות

יכול להיות שיהיו לכם תוספים בכמה פרויקטים ב-Firebase שתרצו לנהל באמצעות בסיס קוד אחד. לדוגמה, אם אתם פורסים את אותה תשתית בסביבת testing ובסביבת production, ובכל אחת מהן יש מכונה של documents Cloud Firestore שאתם מייצאים אל BigQuery, יכול להיות שיהיו לכם שתי מכונות של התוסף firestore-bigquery-export:

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

אם העברתם את שני המופעים האלה של התוספים לשני מופעים של ערכת פונקציות בבסיס קוד אחד כשעבדתם עם ה-CLI של Firebase, ופרסתם באמצעות firebase deploy --project testing ו-firebase deploy --project production, כל פריסה תיצור שני מופעים גם בסביבת testing וגם בסביבת production.

במקום זאת, מחליפים את שני המופעים של התוסף במופע אחד של ערכת הפונקציות firestore-bigquery-export שנפרס בכמה פרויקטים, כשלכל פרויקט יש הגדרה משלו. ספריית ההגדרות של המכונה אמורה להיראות כך:

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

כל פריסה ב-testing וב-production יוצרת מופע אחד של הערכה עם ההגדרות התואמות. הפקודות הקיימות ב-CLI יוצרות את ההגדרה הזו, כל עוד מעבירים את הדגל --project בכל הפעלה של ext:migrate או functions:kits:install.

דוגמה:

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

עכשיו יש לכם מופע יחיד של ערכה שמוגדר לפריסה בפרויקטים testing ו-production עם ההגדרות המתאימות שלהם. אם יוצרים מכונה בפרויקט testing ומריצים את הפקודה functions:kits:install לאותה חבילה בפרויקט production, מוצגת האפשרות להשתמש שוב במכונה שהוגדרה ל-testing או להתקין מכונה שנייה.