पैरामीटर, वह तरीका है जिसकी मदद से कोई उपयोगकर्ता, एक्सटेंशन के इंस्टॉल किए गए हर इंस्टेंस को पसंद के मुताबिक बना सकता है. पैरामीटर, किसी एक्सटेंशन के लिए एनवायरमेंट वैरिएबल की तरह होते हैं. पैरामीटर की वैल्यू, या तो अपने-आप भर सकती हैं (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 प्रोजेक्ट के लिए यूनीक आइडेंटिफ़ायर जिसमें एक्सटेंशन इंस्टॉल किया गया है |
सामान्य फ़ॉर्मैट:
वैल्यू का उदाहरण: |
DATABASE_URL |
Firebase प्रोजेक्ट के डिफ़ॉल्ट Realtime Database इंस्टेंस का यूआरएल |
सामान्य फ़ॉर्मैट:
वैल्यू का उदाहरण: |
DATABASE_INSTANCE |
Firebase प्रोजेक्ट के डिफ़ॉल्ट Realtime Database इंस्टेंस का नाम आम तौर पर, यह वैल्यू प्रोजेक्ट आईडी के जैसी होती है या
|
सामान्य फ़ॉर्मैट:
वैल्यू का उदाहरण: |
STORAGE_BUCKET |
Firebase प्रोजेक्ट के डिफ़ॉल्ट Cloud Storage बकेट का नाम |
सामान्य फ़ॉर्मैट:
वैल्यू का उदाहरण: |
| एक्सटेंशन इंस्टॉल करने के दौरान, डिफ़ॉल्ट वैल्यू वाला पैरामीटर | ||
EXT_INSTANCE_ID |
इंस्टॉल किए गए एक्सटेंशन इंस्टेंस के लिए यूनीक आइडेंटिफ़ायर यह वैल्यू,
|
पहले इंस्टॉल किए गए इंस्टेंस के लिए सामान्य फ़ॉर्मैट (Firebase इसे अपने-आप असाइन करता है. इंस्टॉल करने के दौरान, उपयोगकर्ता इसमें बदलाव नहीं कर सकता):
वैल्यू का उदाहरण: दूसरे और उसके बाद इंस्टॉल किए गए इंस्टेंस के लिए सामान्य फ़ॉर्मैट
(Firebase इसे अपने-आप असाइन करता है. उपयोगकर्ता इंस्टॉल करने के दौरान इसमें बदलाव कर सकता है):
वैल्यू का उदाहरण: |
उपयोगकर्ता के हिसाब से कॉन्फ़िगर किए गए पैरामीटर
अगर आपको किसी उपयोगकर्ता को एक्सटेंशन के इंस्टॉल किए गए हर इंस्टेंस को पसंद के मुताबिक बनाने की अनुमति देनी है, तो इंस्टॉल करने के दौरान, उपयोगकर्ता से पैरामीटर की वैल्यू तय करने के लिए कहा जा सकता है. इन वैल्यू का अनुरोध करने के लिए, अपनी 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(ज़रूरी नहीं) |
स्ट्रिंग |
इनपुट का तरीका, जिससे उपयोगकर्ता पैरामीटर की वैल्यू सेट करता है. उदाहरण के लिए, सीधे तौर पर टेक्स्ट डालना या ड्रॉपडाउन सूची से चुनना इन वैल्यू का इस्तेमाल किया जा सकता है:
अगर इस फ़ील्ड को खाली छोड़ा जाता है, तो पैरामीटर डिफ़ॉल्ट रूप से |
||||
options(ज़रूरी है, अगर पैरामीटर type
select या multiSelect है)
|
सूची |
वैल्यू की सूची, जिसमें से उपयोगकर्ता चुन सकता है
फ़ील्ड में,
|
||||
resourceType(ज़रूरी है, अगर पैरामीटर type
selectResource है)
|
स्ट्रिंग |
Firebase के उस रिसॉर्स का टाइप जिसे चुनने के लिए, उपयोगकर्ता को प्रॉम्प्ट करना है. फ़िलहाल, सिर्फ़ Cloud Storage बकेट, रिसॉर्स सिलेक्टर के साथ काम करती हैं:
Unknown |
||||
example(ज़रूरी नहीं) |
स्ट्रिंग |
पैरामीटर के लिए वैल्यू का उदाहरण |
||||
validationRegex(ज़रूरी नहीं) (यह सिर्फ़ तब लागू होता है, जब पैरामीटर type हो
string)
|
स्ट्रिंग |
पैरामीटर की उपयोगकर्ता के हिसाब से कॉन्फ़िगर की गई वैल्यू की पुष्टि करने के लिए, रेगुलर एक्सप्रेशन (रेगेक्स) स्ट्रिंग रेगेक्स को गो लाइब्रेरी: RE2 का इस्तेमाल करके कंपाइल किया जाता है पुष्टि करने के बारे में ज़्यादा जानकारी के लिए, नीचे पुष्टि करना और गड़बड़ी के मैसेज देखना लेख पढ़ें. |
||||
validationErrorMessage(ज़रूरी नहीं) |
स्ट्रिंग |
अगर
गड़बड़ी के मैसेज के बारे में ज़्यादा जानकारी के लिए, नीचे पुष्टि करना और गड़बड़ी के मैसेज देखना लेख पढ़ें. |
||||
default(ज़रूरी नहीं) |
स्ट्रिंग |
अगर उपयोगकर्ता, पैरामीटर की वैल्यू को खाली छोड़ देता है, तो पैरामीटर की डिफ़ॉल्ट वैल्यू अगर लागू हो, तो
अपने-आप भरने वाले पैरामीटर की वैल्यू
|
||||
required(ज़रूरी नहीं) |
बूलियन |
इससे तय होता है कि पैरामीटर की वैल्यू के लिए प्रॉम्प्ट मिलने पर, उपयोगकर्ता खाली स्ट्रिंग सबमिट कर सकता है या नहीं अगर |
||||
immutable(ज़रूरी नहीं) |
बूलियन |
अगर
ध्यान दें: अगर अपने एक्सटेंशन के डिप्लॉय किए गए फ़ंक्शन के लिए
"जगह"
पैरामीटर तय किया जाता है,
तो आपको इसके पैरामीटर ऑब्जेक्ट में, यह |
उपयोगकर्ता के हिसाब से कॉन्फ़िगर की गई वैल्यू की पुष्टि करना और गड़बड़ी के मैसेज दिखाना
जब string के type वाला कोई पैरामीटर सेट अप किया जाता है, तो आपको पैरामीटर के
validationRegex फ़ील्ड के ज़रिए, पुष्टि करने के लिए सही रेगुलर एक्सप्रेशन (रेगेक्स) तय करना होगा.
इसके अलावा, कई एक्सटेंशन के लिए, पैरामीटर वैल्यू का अनुरोध किया जाता है जो आम तौर पर डेटाबेस पाथ या Cloud Storage बकेट होती है. ध्यान दें कि इंस्टॉल करने, फिर से कॉन्फ़िगर करने या अपडेट करने के दौरान, Extensions सेवा, पैरामीटर वैल्यू डालते समय, इनकी पुष्टि नहीं करती है:
- उपयोगकर्ता के Firebase प्रोजेक्ट में, तय किया गया डेटाबेस या Cloud Storage बकेट सेट अप है या नहीं
- उपयोगकर्ता के डेटाबेस में, तय किया गया डेटाबेस पाथ मौजूद है या नहीं
हालांकि, जब एक्सटेंशन अपने रिसॉर्स को असल में डिप्लॉय कर रहा होता है, तब Firebase कंसोल या 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 | वीपीसी कनेक्टर से निकलने वाला ट्रैफ़िक | vpcConnectorEgressSettings |
वीपीसी कनेक्टर कॉन्फ़िगर होने पर, यह आउटगोइंग ट्रैफ़िक को कंट्रोल करता है |
| firebaseextensions.v1beta.function/vpcConnector | वीपीसी कनेक्टर | vpcConnector |
यह Cloud Functions को तय किए गए वीपीसी कनेक्टर से कनेक्ट करता है. |
| firebaseextensions.v1beta.function/minInstances | फ़ंक्शन के कम से कम इंस्टेंस | minInstances |
इस फ़ंक्शन के कम से कम कितने इंस्टेंस एक साथ रन किए जाने चाहिए |
| firebaseextensions.v1beta.function/maxInstances | फ़ंक्शन के ज़्यादा से ज़्यादा इंस्टेंस | maxInstances |
इस फ़ंक्शन के ज़्यादा से ज़्यादा कितने इंस्टेंस एक साथ रन किए जाने चाहिए |
| firebaseextensions.v1beta.function/ingressSettings | इन्ग्रेस सेटिंग | ingressSettings |
इससे कंट्रोल होता है कि इनकमिंग ट्रैफ़िक कहां से स्वीकार किया जाए |
| firebaseextensions.v1beta.function/labels | लेबल | labels |
एक्सटेंशन में मौजूद सभी रिसॉर्स पर लागू किए जाने वाले लेबल |