अपने एक्सटेंशन में पैरामीटर सेट अप करें और उनका उपयोग करें

पैरामीटर वह तंत्र है जिसके माध्यम से उपयोगकर्ता किसी एक्सटेंशन के प्रत्येक स्थापित इंस्टेंस को अनुकूलित करता है। पैरामीटर किसी एक्सटेंशन के लिए पर्यावरण चर की तरह होते हैं। पैरामीटर के मान या तो ऑटो-पॉप्युलेट किए जा सकते हैं (इंस्टॉलेशन के बाद फायरबेस द्वारा प्रदान किए गए) या उपयोगकर्ता-कॉन्फ़िगर किए गए (इंस्टॉलेशन के दौरान उपयोगकर्ता द्वारा निर्दिष्ट)।

ये पैरामीटर आपके एक्सटेंशन के फ़ंक्शंस स्रोत कोड, आपकी extension.yaml फ़ाइल और आपकी POSTINSTALL.md फ़ाइल में संदर्भ के लिए उपलब्ध हैं। PARAMETER_NAME नामक पैरामीटर को संदर्भित करने का सिंटैक्स यहां दिया गया है:

  • अपने फ़ंक्शन स्रोत कोड के भीतर, params मॉड्यूल का उपयोग करें (उदाहरण के लिए, params.defineInt(" PARAMETER_NAME ") ) या process.env. PARAMETER_NAME

  • extension.yaml और POSTINSTALL.md के भीतर, ${param: PARAMETER_NAME } का उपयोग करें।

    इंस्टॉलेशन के बाद, फायरबेस कंसोल POSTINSTALL.md फ़ाइल की सामग्री प्रदर्शित करता है और इंस्टॉल किए गए उदाहरण के लिए वास्तविक मानों के साथ किसी भी पैरामीटर संदर्भ को पॉप्युलेट करता है।

स्वतः-पॉप्युलेटेड पैरामीटर

एक्सटेंशन के प्रत्येक इंस्टॉल किए गए इंस्टेंस के पास स्वचालित रूप से फायरबेस द्वारा प्रदान किए गए कई डिफ़ॉल्ट ऑटो-पॉप्युलेटेड पैरामीटर तक पहुंच होती है (नीचे दी गई तालिका देखें)। ये पैरामीटर मान या तो फ़ायरबेस प्रोजेक्ट के लिए डिफ़ॉल्ट मान हैं ( डिफ़ॉल्ट स्टोरेज बकेट की तरह) या वे एक्सटेंशन-विशिष्ट हैं (एक्सटेंशन की इंस्टेंस आईडी की तरह)।

सभी ऑटो-पॉप्युलेटेड पैरामीटर मान अपरिवर्तनीय हैं। वे प्रोजेक्ट निर्माण या एक्सटेंशन इंस्टॉलेशन के समय सेट किए जाते हैं।

भले ही फ़ायरबेस एक्सटेंशन के लिए इन पैरामीटर मानों को स्वतः-पॉप्युलेट करता है, फ़ायरबेस इंस्टॉलेशन के दौरान उपयोगकर्ता के लिए संबंधित उत्पादों को स्वतः-प्रावधान नहीं करता है। एक्सटेंशन इंस्टॉल करने वाले उपयोगकर्ता को इंस्टॉलेशन से पहले अपने प्रोजेक्ट में संबंधित और लागू उत्पाद को सक्षम करना होगा। उदाहरण के लिए, यदि आपके एक्सटेंशन में क्लाउड फायरस्टोर शामिल है, तो उपयोगकर्ता को अपने प्रोजेक्ट में क्लाउड फायरस्टोर स्थापित करना होगा। हम अनुशंसा करते हैं कि आप अपने उपयोगकर्ताओं को PREINSTALL.md फ़ाइल में इन आवश्यकताओं के बारे में सूचित करें।

ऑटो-पॉप्युलेटेड पैरामीटर के लिए संदर्भ विवरण पैरामीटर मान (फ़ायरबेस द्वारा प्रदान किया गया)
फ़ायरबेस प्रोजेक्ट से डिफ़ॉल्ट मान वाले पैरामीटर
PROJECT_ID फ़ायरबेस प्रोजेक्ट के लिए विशिष्ट पहचानकर्ता जिसमें एक्सटेंशन स्थापित है

सामान्यीकृत प्रारूप:
project-id

उदाहरण मान:
project-123

DATABASE_URL फायरबेस प्रोजेक्ट का डिफ़ॉल्ट रीयलटाइम डेटाबेस इंस्टेंस URL

सामान्यीकृत प्रारूप:
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

फायरबेस प्रोजेक्ट का डिफ़ॉल्ट रीयलटाइम डेटाबेस इंस्टेंस नाम

आमतौर पर, यह मान प्रोजेक्ट आईडी के समान होता है, या -default-rtdb पर समाप्त होता है।

सामान्यीकृत प्रारूप:
project-id

उदाहरण मान:
project-123

STORAGE_BUCKET फायरबेस प्रोजेक्ट का डिफ़ॉल्ट क्लाउड स्टोरेज बकेट नाम

सामान्यीकृत प्रारूप:
project-id .appspot.com

उदाहरण मान:
project-123.appspot.com

एक्सटेंशन इंस्टॉलेशन से डिफ़ॉल्ट मान वाला पैरामीटर
EXT_INSTANCE_ID

स्थापित एक्सटेंशन इंस्टेंस के लिए विशिष्ट पहचानकर्ता

यह मान extension.yaml फ़ाइल में निर्दिष्ट name फ़ील्ड से उत्पन्न होता है।

पहले स्थापित इंस्टेंस के लिए सामान्यीकृत प्रारूप (फ़ायरबेस द्वारा स्वचालित रूप से असाइन किया गया; इंस्टॉलेशन के दौरान उपयोगकर्ता द्वारा संशोधित नहीं किया जा सकता):
name-from-extension.yaml

उदाहरण मान:
my-awesome-extension


दूसरे-इंस्टॉल किए गए इंस्टेंस और उससे ऊपर के लिए सामान्यीकृत प्रारूप (फ़ायरबेस द्वारा स्वचालित रूप से असाइन किया गया; इंस्टॉलेशन के दौरान उपयोगकर्ता द्वारा संशोधित किया जा सकता है ):
name-from-extension.yaml - 4-digit-alphanumeric-hash

उदाहरण मान:
my-awesome-extension-6m31

उपयोगकर्ता द्वारा कॉन्फ़िगर किए गए पैरामीटर

किसी उपयोगकर्ता को एक्सटेंशन के प्रत्येक स्थापित इंस्टेंस को अनुकूलित करने में सक्षम बनाने के लिए, आप उपयोगकर्ता से इंस्टॉलेशन के दौरान पैरामीटर मान निर्दिष्ट करने के लिए कह सकते हैं। इन मानों का अनुरोध करने के लिए, आप अपनी extension.yaml फ़ाइल के params अनुभाग में संकेत सेट करते हैं।

यहां एक उदाहरण 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

अपनी extension.yaml फ़ाइल के params अनुभाग में, उपयोगकर्ता द्वारा कॉन्फ़िगर किए गए पैरामीटर को परिभाषित करने के लिए निम्नलिखित फ़ील्ड का उपयोग करें:

मैदान प्रकार विवरण
param
(आवश्यक)
डोरी पैरामीटर का नाम
label
(आवश्यक)
डोरी

पैरामीटर के लिए संक्षिप्त विवरण

पैरामीटर के मान के लिए संकेत मिलने पर उपयोगकर्ता को प्रदर्शित किया जाता है

description
(वैकल्पिक)
डोरी

पैरामीटर के लिए विस्तृत विवरण

पैरामीटर के मान के लिए संकेत मिलने पर उपयोगकर्ता को प्रदर्शित किया जाता है

मार्कडाउन का समर्थन करता है

type
(वैकल्पिक)
डोरी

उपयोगकर्ता पैरामीटर का मान कैसे सेट करता है इसके लिए इनपुट तंत्र (उदाहरण के लिए, सीधे टेक्स्ट दर्ज करें या ड्रॉपडाउन सूची से चयन करें)

मान्य मानों में निम्नलिखित शामिल हैं:

  • string : फ्री-फॉर्म टेक्स्ट प्रविष्टि की अनुमति देता है (जैसा कि आपके validationRegex द्वारा सीमित है)
  • select : विकल्पों की पूर्व-निर्धारित सूची में से एक प्रविष्टि के चयन की अनुमति देता है। यदि आप यह मान निर्दिष्ट करते हैं, तो आपको options फ़ील्ड को भी परिभाषित करना होगा।
  • multiSelect : विकल्पों की पूर्व-निर्धारित सूची से एक या अधिक प्रविष्टियों के चयन की अनुमति देता है। यदि आप यह मान निर्दिष्ट करते हैं, तो आपको options फ़ील्ड को भी परिभाषित करना होगा।
  • selectResource : उपयोगकर्ता के प्रोजेक्ट से एक विशिष्ट प्रकार के फायरबेस संसाधन (जैसे क्लाउड स्टोरेज बकेट) के चयन की अनुमति देता है।

    जब आप इस प्रकार का पैरामीटर निर्दिष्ट करते हैं, तो उपयोगकर्ताओं को इंस्टॉलेशन यूआई में अधिक उपयोगकर्ता-अनुकूल चयन विजेट मिलेगा; इस कारण से, जब भी संभव हो selectResource पैरामीटर का उपयोग करें।

    यदि आप यह मान निर्दिष्ट करते हैं, तो आपको resourceType फ़ील्ड को भी परिभाषित करना होगा।

  • secret : संवेदनशील स्ट्रिंग्स के भंडारण की अनुमति देता है, जैसे तृतीय-पक्ष सेवाओं के लिए एपीआई कुंजी। ये मान क्लाउड सीक्रेट मैनेजर में संग्रहीत किए जाएंगे।

    क्लाउड सीक्रेट मैनेजर एक सशुल्क सेवा है, जिसके उपयोग के परिणामस्वरूप आपका एक्सटेंशन इंस्टॉल करने वाले उपयोगकर्ताओं को शुल्क देना पड़ सकता है। यदि आप secret पैरामीटर प्रकार का उपयोग करते हैं, तो अपनी PREINSTALL फ़ाइल में दस्तावेज़ करना सुनिश्चित करें कि आपका एक्सटेंशन क्लाउड सीक्रेट मैनेजर का उपयोग करता है।

यदि यह फ़ील्ड छोड़ दिया जाता है, तो पैरामीटर string के type पर डिफ़ॉल्ट हो जाता है।

options
(यदि पैरामीटर type select या multiSelect है तो आवश्यक है)
सूची

उन मानों की सूची जिनमें से उपयोगकर्ता चयन कर सकता है

options फ़ील्ड में label और value फ़ील्ड शामिल करें:

  • label (स्ट्रिंग) : चयन योग्य विकल्प का संक्षिप्त विवरण
  • value (स्ट्रिंग) : चयन योग्य विकल्प का वास्तविक मूल्य

options फ़ील्ड के लिए value फ़ील्ड आवश्यक है.
यदि label हटा दिया जाता है, तो सूची विकल्प डिफ़ॉल्ट रूप से value प्रदर्शित करता है।

resourceType
(यदि पैरामीटर type selectResource है तो आवश्यक है)
डोरी

उपयोगकर्ता को चयन करने के लिए संकेत देने के लिए फायरबेस संसाधन का प्रकार। वर्तमान में, केवल क्लाउड स्टोरेज बकेट ही संसाधन चयनकर्ताओं का समर्थन करते हैं:

संसाधन प्रकार आईडी टाइप करें
क्लाउड स्टोरेज बकेट storage.googleapis.com/Bucket

अज्ञात resourceType मानों को नजरअंदाज कर दिया जाएगा और यूआई पैरामीटर को फ्री-फॉर्म string इनपुट फ़ील्ड के रूप में प्रस्तुत करेगा।

example
(वैकल्पिक)
डोरी

पैरामीटर के लिए उदाहरण मान

validationRegex
(वैकल्पिक)
(केवल तभी लागू होता है जब पैरामीटर type string हो)
डोरी

पैरामीटर के उपयोगकर्ता-कॉन्फ़िगर मान के सत्यापन के लिए रेगेक्स स्ट्रिंग

रेगेक्स को गो लाइब्रेरी का उपयोग करके संकलित किया गया है: RE2

सत्यापन के बारे में विवरण के लिए, नीचे सत्यापन और त्रुटि संदेश देखें।

validationErrorMessage
(वैकल्पिक)
डोरी

यदि validationRegex विफल रहता है तो प्रदर्शित होने वाला त्रुटि संदेश

त्रुटि संदेश के बारे में विवरण के लिए, नीचे सत्यापन और त्रुटि संदेश देखें।

default
(वैकल्पिक)
डोरी

यदि उपयोगकर्ता पैरामीटर का मान खाली छोड़ देता है तो पैरामीटर के लिए डिफ़ॉल्ट मान

यदि लागू हो, तो आप default मान के लिए एक ऑटो-पॉप्युलेटेड पैरामीटर मान निर्दिष्ट कर सकते हैं (उदाहरण के लिए, रिसाइज़ इमेजेज एक्सटेंशन के IMG_BUCKET पैरामीटर को देखें)।

required
(वैकल्पिक)
बूलियन

परिभाषित करता है कि पैरामीटर के मान के लिए संकेत मिलने पर उपयोगकर्ता एक खाली स्ट्रिंग सबमिट कर सकता है या नहीं

यदि required छोड़ दिया जाता है, तो यह मान डिफ़ॉल्ट रूप से true हो जाता है (अर्थात, एक आवश्यक पैरामीटर)।

immutable
(वैकल्पिक)
बूलियन

परिभाषित करता है कि क्या उपयोगकर्ता इंस्टॉलेशन के बाद पैरामीटर का मान बदल सकता है (उदाहरण के लिए, यदि वे एक्सटेंशन को पुन: कॉन्फ़िगर करते हैं )

यदि immutable को छोड़ दिया जाता है, तो यह मान डिफ़ॉल्ट रूप से false हो जाता है।

नोट: यदि आप अपने एक्सटेंशन के तैनात कार्यों के लिए "स्थान" पैरामीटर को परिभाषित करते हैं, तो आपको इस immutable फ़ील्ड को इसके परम ऑब्जेक्ट में शामिल करना चाहिए।

उपयोगकर्ता द्वारा कॉन्फ़िगर किए गए मानों के लिए सत्यापन और त्रुटि संदेश

जब आप string के type के साथ एक पैरामीटर सेट करते हैं, तो आपको पैरामीटर के validationRegex फ़ील्ड के माध्यम से उचित रेगेक्स सत्यापन को परिभाषित करने की आवश्यकता होती है।

साथ ही, कई एक्सटेंशन के लिए, आमतौर पर अनुरोधित पैरामीटर मान डेटाबेस पथ या क्लाउड स्टोरेज बकेट है। ध्यान रखें कि इंस्टॉल, पुन: कॉन्फ़िगर या अपडेट के दौरान, एक्सटेंशन सेवा पैरामीटर मान प्रविष्टि के समय निम्नलिखित को मान्य नहीं करती है:

  • क्या निर्दिष्ट डेटाबेस या क्लाउड स्टोरेज बकेट उपयोगकर्ता के फायरबेस प्रोजेक्ट के भीतर स्थापित किया गया है
  • क्या निर्दिष्ट डेटाबेस पथ उपयोगकर्ता के डेटाबेस में मौजूद है

हालाँकि, जब एक्सटेंशन वास्तव में अपने संसाधनों को तैनात कर रहा होता है, तो यदि संदर्भित डेटाबेस या क्लाउड स्टोरेज बकेट अभी तक प्रोजेक्ट में सेट नहीं किया गया है, तो फायरबेस कंसोल या फायरबेस सीएलआई एक त्रुटि संदेश प्रदर्शित करेगा।

हम दृढ़तापूर्वक अनुशंसा करते हैं कि आप इन आवश्यकताओं के बारे में 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 वीपीसी कनेक्टर निकास vpcConnectorEgressSettings वीपीसी कनेक्टर कॉन्फ़िगर होने पर आउटगोइंग ट्रैफ़िक को नियंत्रित करता है
firebaseextensions.v1beta.function/vpcConnector वीपीसी कनेक्टर vpcConnector क्लाउड फ़ंक्शंस को निर्दिष्ट वीपीसी कनेक्टर से जोड़ता है।
firebaseextensions.v1beta.function/minInstances न्यूनतम फ़ंक्शन उदाहरण minInstances एक बार में चलने के लिए इस फ़ंक्शन के इंस्टेंस की न्यूनतम संख्या
firebaseextensions.v1beta.function/maxInstances अधिकतम फ़ंक्शन उदाहरण maxInstances एक बार में चलने के लिए इस फ़ंक्शन के इंस्टेंस की अधिकतम संख्या
firebaseextensions.v1beta.function/ingressSettings प्रवेश सेटिंग्स ingressSettings नियंत्रित करता है कि आने वाला ट्रैफ़िक कहाँ से स्वीकार किया जाता है
firebaseextensions.v1beta.function/labels लेबल labels एक्सटेंशन में सभी संसाधनों पर लागू होने वाले लेबल