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

פרמטרים הם המנגנון שדרכו משתמש מתאים אישית כל מופע מותקן של הרחבה. פרמטרים הם כמו משתני הסביבה עבור הרחבה. הערכים של פרמטרים יכולים להיות מאוכלסים אוטומטית (מסופק על ידי 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 מאכלסת אוטומטית את ערכי הפרמטרים האלה עבור התוסף, Firebase לא מספקת אוטומטית את המוצרים המשויכים למשתמש במהלך ההתקנה . המשתמש שמתקין את התוסף חייב להפעיל את המוצר/ים המשויכים והישימים בפרויקט שלו לפני ההתקנה. לדוגמה, אם התוסף שלך כולל את Cloud Firestore, המשתמש חייב להגדיר את Cloud Firestore בפרויקט שלו. אנו ממליצים ליידע את המשתמשים שלך על דרישות אלה בקובץ PREINSTALL.md .

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

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

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

DATABASE_URL ברירת המחדל של כתובת ה-URL של מופע מסד הנתונים בזמן אמת של פרויקט 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 שם דלי ברירת המחדל של פרויקט Firebase של Cloud Storage

פורמט כללי:
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 )
רשימה

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

כלול שדות label value בשדה options :

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

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

resourceType
(נדרש אם type הפרמטר הוא selectResource )
חוּט

סוג המשאב של Firebase שיבקש מהמשתמש לבחור. נכון לעכשיו, רק דליים של Cloud Storage תומכים בבוררי משאבים:

סוג משאב הקלד מזהה
דלי אחסון בענן storage.googleapis.com/Bucket

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

example
(אופציונאלי)
חוּט

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

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

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

Regex מורכב באמצעות ספריית go: RE2

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

validationErrorMessage
(אופציונאלי)
חוּט

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

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

default
(אופציונאלי)
חוּט

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

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

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

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

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

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

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

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

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

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

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

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

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

עם זאת, כאשר התוסף למעשה פורס את המשאבים שלו, קונסולת Firebase או Firebase CLI יציגו הודעת שגיאה אם ​​מסד הנתונים או דלי ה-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 לאיזה אזור יש לפרוס את פונקציות הענן?
firebaseextensions.v1beta.function/memory זיכרון פונקציה memory כמה מגה-בייט של זיכרון יש להקצות לכל פונקציה?
firebaseextensions.v1beta.function/timeoutSeconds פסק זמן של פונקציה timeout כמה שניות צריכות לפעול הפונקציות לפני תום הזמן?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings יציאת מחבר VPC vpcConnectorEgressSettings שולט על תעבורה יוצאת כאשר מחבר VPC מוגדר
firebaseextensions.v1beta.function/vpcConnector מחבר VPC vpcConnector מחבר את פונקציות הענן למחבר VPC שצוין.
firebaseextensions.v1beta.function/minInstances מינימום מופעי פונקציה minInstances המספר המינימלי של מופעים של פונקציה זו להפעלה בבת אחת
firebaseextensions.v1beta.function/maxInstances מקסימום מופעי פונקציה maxInstances המספר המרבי של מופעים של פונקציה זו להפעלה בבת אחת
firebaseextensions.v1beta.function/ingressSettings הגדרות כניסה ingressSettings שולט מהיכן התנועה הנכנסת מתקבלת
firebaseextensions.v1beta.function/labels תוויות labels תוויות להחלה על כל המשאבים בהרחבה