הגדרה של פרמטרים בתוסף ושימוש בהם

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

אפשר להפנות לפרמטרים האלה בקוד המקור של הפונקציות של התוסף, בקובץ extension.yaml ובקובץ POSTINSTALL.md. זהו התחביר של הפניה לפרמטר שנקרא PARAMETER_NAME:

  • בקוד המקור של הפונקציות, משתמשים במודול params (לדוגמה, params.defineInt("PARAMETER_NAME")) או ב-process.env.PARAMETER_NAME.

  • ב-extension.yaml וב-POSTINSTALL.md, משתמשים ב-${param:PARAMETER_NAME}.

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

פרמטרים שמאוכלסים באופן אוטומטי

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

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

מערכת Firebase מאכלסת באופן אוטומטי את ערכי הפרמטרים האלה בתוסף, אבל היא לא מקצה באופן אוטומטי את המוצרים המשויכים למשתמש במהלך ההתקנה. המשתמש שמתקין את התוסף צריך להפעיל את המוצרים הרלוונטיים והמשויכים בפרויקט שלו לפני ההתקנה. לדוגמה, אם התוסף שלכם כולל את Cloud Firestore, המשתמש צריך להגדיר את Cloud Firestore בפרויקט שלו. מומלץ להודיע למשתמשים על הדרישות האלה בקובץ PREINSTALL.md.

הפנייה לפרמטרים שמאוכלסים באופן אוטומטי תיאור ערך הפרמטר (שסופק על ידי Firebase)
פרמטרים עם ערכי ברירת מחדל מהפרויקט ב-Firebase
PROJECT_ID המזהה הייחודי של פרויקט Firebase שבו מותקן התוסף

פורמט כללי:
project-id

ערך לדוגמה:
project-123

DATABASE_URL כתובת ה-URL של המכונה Realtime Database שמוגדרת כברירת מחדל בפרויקט Firebase

פורמט כללי:
https://project-id-default-rtdb.firebaseio.com
(מכונות בארה"ב)
או
https://project-id-default-rtdb.region-code.firebasedatabase.app
(מכונות מחוץ לארה"ב)

ערך לדוגמה:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

שם המכונה Realtime Database של פרויקט Firebase שמוגדר כברירת מחדל

בדרך כלל, הערך הזה זהה למזהה הפרויקט או מסתיים ב--default-rtdb.

פורמט כללי:
project-id

ערך לדוגמה:
project-123

STORAGE_BUCKET שם הקטגוריה ב-Cloud Storage שמוגדר כברירת מחדל בפרויקט Firebase

פורמט כללי:
project-id.appspot.com

ערך לדוגמה:
project-123.appspot.com

פרמטר עם ערך ברירת מחדל מהתקנת התוסף
EXT_INSTANCE_ID

מזהה ייחודי של מופע התוסף שהותקן

הערך הזה נוצר מהשדה name שצוין בקובץ extension.yaml.

פורמט כללי למכונה המותקנת הראשונה (הוקצה באופן אוטומטי על ידי Firebase, לא ניתן לשינוי על ידי משתמשים במהלך ההתקנה):
name-from-extension.yaml

ערך לדוגמה:
my-awesome-extension


פורמט כללי למכונה השנייה שהותקנה ומעלה (הוקצה באופן אוטומטי על ידי Firebase, המשתמשים יכולים לשנות אותו במהלך ההתקנה):
name-from-extension.yaml-4-digit-alphanumeric-hash

ערך לדוגמה:
my-awesome-extension-6m31

פרמטרים שהוגדרו על ידי משתמשים

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

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

# extension.yaml
...

# Parameters (environment variables) for which the user specifies values during installation
params:
  - param: DB_PATH
    label: Realtime Database path
    description: >-
      What is the Realtime Database path where you will write new text
      for sentiment analysis?
    type: string
    validationRegex: ^\S+$
    validationErrorMessage: Realtime Database path cannot contain spaces.
    example: path/to/posts
    required: true

  - param: TEXT_KEY
    label: Key for text
    description: What is the name of the key that will contain text to be analyzed?
    type: string
    default: textToAnalyze
    required: true

בקטע params בקובץ extension.yaml, משתמשים בשדות הבאים כדי להגדיר פרמטר שהמשתמש מגדיר:

שדה סוג תיאור
param
(חובה)
מחרוזת שם הפרמטר
label
(חובה)
מחרוזת

תיאור קצר של הפרמטר

מוצג למשתמש כשמוצגת לו בקשה להזין את הערך של הפרמטר

description
(אופציונלי)
מחרוזת

תיאור מפורט של הפרמטר

מוצג למשתמש כשמוצגת לו בקשה להזין את הערך של הפרמטר

תמיכה ב-Markdown

type
(אופציונלי)
מחרוזת

מנגנון הקלט שבו המשתמש מגדיר את ערך הפרמטר (לדוגמה, הזנת טקסט ישירות או בחירה מתוך רשימה נפתחת)

הערכים החוקיים כוללים את הערכים הבאים:

  • string: מאפשרת להזין טקסט בצורה חופשית (בכפוף למגבלות של validationRegex)
  • select: מאפשר לבחור רשומה אחת מתוך רשימה מוגדרת מראש של אפשרויות. אם מציינים את הערך הזה, צריך גם להגדיר את השדה options.
  • multiSelect: מאפשרת לבחור רשומה אחת או יותר מתוך רשימה מוגדרת מראש של אפשרויות. אם מציינים את הערך הזה, צריך גם להגדיר את השדה options.
  • selectResource: מאפשר לבחור סוג ספציפי של משאב Firebase (למשל קטגוריה Cloud Storage) מהפרויקט של המשתמש.

    כשמציינים פרמטר מהסוג הזה, המשתמשים מקבלים ווידג'ט בחירה ידידותי יותר למשתמש בממשק המשתמש של ההתקנה. לכן, מומלץ להשתמש בפרמטרים מסוג selectResource כשהדבר אפשרי.

    אם מציינים את הערך הזה, צריך גם להגדיר את השדה resourceType.

  • secret: מאפשרת לאחסן מחרוזות רגישות, כמו מפתחות API לשירותי צד שלישי. הערכים האלה יישמרו ב-Cloud Secret Manager.

    Cloud Secret Manager הוא שירות בתשלום, והשימוש בו עלול לגרום לחיוב של משתמשים שמתקינים את התוסף. אם משתמשים בסוג הפרמטר secret, חשוב לתעד בקובץ PREINSTALL שהתוסף משתמש ב-Cloud Secret Manager.

אם השדה הזה לא יצוין, הערך שמוגדר לפרמטר כברירת מחדל הוא type של string.

options
(חובה אם הפרמטר type הוא select או multiSelect)
list

רשימת ערכים שהמשתמש יכול לבחור מתוכה

צריך לכלול את השדות label ו-value בשדה options:

  • label (מחרוזת): תיאור קצר של האפשרות שניתן לבחור
  • value (string): הערך בפועל של האפשרות שניתן לבחור

השדה value נדרש לשדה options.
אם השמטתם את label, ברירת המחדל של האפשרות 'רשימת' תהיה להציג את value.

resourceType
(חובה אם הערך של הפרמטר type הוא selectResource)
מחרוזת

סוג המשאב ב-Firebase שהמשתמש יתבקש לבחור. בשלב זה, רק קטגוריות Cloud Storage תומכות בבוררי משאבים:

סוג משאב מזהה סוג
קטגוריה אחת (Cloud Storage) storage.googleapis.com/Bucket

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

example
(אופציונלי)
מחרוזת

ערך לדוגמה של הפרמטר

validationRegex
(אופציונלי)
(רלוונטי רק כשהפרמטר type הוא string)
מחרוזת

מחרוזת ביטוי רגולרי לאימות הערך שהוגדר על ידי המשתמש לפרמטר

הביטוי הרגולרי (regex) מקובץ באמצעות ספריית go: ‏ RE2

פרטים על האימות מופיעים בקטע אימות והודעות שגיאה בהמשך.

validationErrorMessage
(אופציונלי)
מחרוזת

הודעת השגיאה שמוצגת אם הפונקציה validationRegex נכשלת

פרטים על הודעות שגיאה מופיעים בקטע אימות והודעות שגיאה שבהמשך.

default
(אופציונלי)
מחרוזת

ערך ברירת המחדל של הפרמטר אם המשתמש משאיר את הערך של הפרמטר ריק

במקרים הרלוונטיים, אפשר לציין ערך של פרמטר שמאוכלס באופן אוטומטי עבור הערך default (לדוגמה, אפשר לעיין בפרמטר IMG_BUCKET של התוסף Resize Images).

required
(אופציונלי)
בוליאני

מגדיר אם המשתמש יכול לשלוח מחרוזת ריקה כשמתבקשים להזין את הערך של הפרמטר

אם לא מציינים את required, הערך הזה מוגדר כברירת מחדל כ-true (כלומר, פרמטר חובה).

immutable
(אופציונלי)
בוליאני

מגדיר אם המשתמש יכול לשנות את הערך של הפרמטר אחרי ההתקנה (לדוגמה, אם הוא מגדיר מחדש את התוסף).

אם השדה immutable לא יצוין, הערך הזה יהיה false כברירת מחדל.

הערה: אם מגדירים פרמטר 'location' לפונקציות הפרוסות של התוסף, צריך לכלול את השדה immutable באובייקט ה-param שלו.

אימות והודעות שגיאה לגבי ערכים שהוגדרו על ידי משתמשים

כשמגדירים פרמטר עם הערך type של string, צריך להגדיר אימות מתאים של ביטוי רגולרי דרך השדה validationRegex של הפרמטר.

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

  • האם מסד הנתונים או הקטגוריה Cloud Storage שצוינו מוגדרים בפרויקט Firebase של המשתמש
  • אם נתיב מסד הנתונים שצוין קיים במסד הנתונים של המשתמש

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

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

פרמטרים של המערכת

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

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

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

resources:
- name: high_memory_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function needs at least 1GB of memory!
  properties:
    httpsTrigger: {}
    runtime: nodejs18
    availableMemoryMb: 1024
- name: normal_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function has no special memory requirements. It will use the
    default value, or the value of `firebaseextension.v1beta.function/memory`
  properties:
    httpsTrigger: {}
    runtime: nodejs18

הפרמטרים הזמינים של המערכת הם:

שם תווית (למשתמשים) השדה התואם ב-properties תיאור
firebaseextensions.v1beta.function/location מיקום location באילו אזורים כדאי לפרוס את Cloud Functions?
firebaseextensions.v1beta.function/memory זיכרון הפונקציה memory כמה מגה-בייט של זיכרון צריך להקצות לכל פונקציה?
firebaseextensions.v1beta.function/timeoutSeconds זמן קצוב לתפוגה של פונקציה timeout למשך כמה שניות הפונקציות צריכות לפעול לפני שהן יפוג הזמן?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings תעבורת נתונים יוצאת (egress) של VPC Connector vpcConnectorEgressSettings בקרה על תעבורת נתונים יוצאת כשמחובר מחבר VPC
firebaseextensions.v1beta.function/vpcConnector מחבר VPC vpcConnector חיבור של Cloud Functions למחבר VPC שצוין.
firebaseextensions.v1beta.function/minInstances מספר המכונות המינימלי של הפונקציה minInstances המספר המינימלי של המופעים של הפונקציה הזו שפועלים בו-זמנית
firebaseextensions.v1beta.function/maxInstances מספר המופעים המקסימלי של פונקציות maxInstances מספר המופעים המקסימלי של הפונקציה הזו שיכולים לפעול בו-זמנית
firebaseextensions.v1beta.function/ingressSettings הגדרות תעבורת נתונים נכנסת (ingress) ingressSettings קובעת מאיפה תתקבל תנועה נכנסת
firebaseextensions.v1beta.function/labels תוויות labels תוויות שיוחלו על כל המשאבים בתוסף