پارامترها مکانیزمی هستند که از طریق آن کاربر هر نمونه نصب شده از یک افزونه را سفارشی میکند. پارامترها مانند متغیرهای محیطی برای یک افزونه هستند. مقادیر پارامترها میتوانند به صورت خودکار (توسط 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 هستند (مانند سطل ذخیرهسازی پیشفرض ) یا مختص افزونه هستند (مانند شناسه نمونه افزونه).
تمام مقادیر پارامترهایی که به صورت خودکار وارد میشوند، تغییرناپذیر هستند. آنها در زمان ایجاد پروژه یا نصب افزونه تنظیم میشوند.
اگرچه فایربیس به طور خودکار این مقادیر پارامتر را برای افزونه وارد میکند، اما فایربیس در حین نصب، محصولات مرتبط را به طور خودکار برای کاربر فراهم نمیکند . کاربری که افزونه را نصب میکند، باید قبل از نصب، محصول(های) مرتبط و قابل اجرا را در پروژه خود فعال کند. به عنوان مثال، اگر افزونه شما شامل Cloud Firestore است، کاربر باید Cloud Firestore در پروژه خود راهاندازی کند . توصیه میکنیم کاربران خود را در مورد این الزامات در فایل PREINSTALL.md مطلع کنید.
| مرجع پارامتر با قابلیت پر شدن خودکار | توضیحات | مقدار پارامتر (ارائه شده توسط Firebase) |
|---|---|---|
| پارامترهایی با مقادیر پیشفرض از پروژه Firebase | ||
PROJECT_ID | شناسه منحصر به فرد برای پروژه Firebase که افزونه در آن نصب شده است | قالب کلی: مقدار مثال: |
DATABASE_URL | آدرس اینترنتی پیشفرض Realtime Database پروژه Firebase | قالب کلی: مقدار مثال: |
DATABASE_INSTANCE | نام نمونه پیشفرض Realtime Database پروژه Firebase معمولاً این مقدار با شناسه پروژه یکسان است یا به | قالب کلی: مقدار مثال: |
STORAGE_BUCKET | نام پیشفرض فضای ذخیرهسازی ابری پروژه فایربیس | قالب کلی: مقدار مثال: |
| پارامتر با مقدار پیشفرض از نصب افزونه | ||
EXT_INSTANCE_ID | شناسه منحصر به فرد برای نمونه افزونه نصب شده این مقدار از فیلد | قالب کلی برای اولین نمونه نصب شده (به طور خودکار توسط Firebase اختصاص داده شده است؛ در حین نصب قابل تغییر توسط کاربر نیست ): مقدار مثال: قالب عمومی برای نمونه نصب شده دوم و بالاتر (به طور خودکار توسط Firebase اختصاص داده شده است؛ میتواند در حین نصب توسط کاربر تغییر داده شود): مقدار مثال: |
پارامترهای پیکربندی شده توسط کاربر
برای اینکه کاربر بتواند هر نمونه نصب شده از یک افزونه را سفارشی کند، میتوانید از کاربر بخواهید که در حین نصب، مقادیر پارامترها را مشخص کند. برای درخواست این مقادیر، باید دستورات را در بخش 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(اختیاری) | رشته | شرح مفصلی برای پارامتر وقتی از کاربر مقدار پارامتر خواسته میشود، به او نمایش داده میشود پشتیبانی از نشانهگذاری | ||||
type(اختیاری) | رشته | مکانیزم ورودی برای نحوه تنظیم مقدار پارامتر توسط کاربر (برای مثال، وارد کردن متن به طور مستقیم یا انتخاب از لیست کشویی) مقادیر معتبر شامل موارد زیر است:
اگر این فیلد حذف شود، پارامتر به طور پیشفرض از | ||||
options(در صورتی که type پارامتر select یا multiSelect باشد، الزامی است) | فهرست | فهرست مقادیری که کاربر میتواند از بین آنها انتخاب کند فیلدهای
فیلد | ||||
resourceType(در صورتی که type پارامتر selectResource باشد، الزامی است) | رشته | نوع منبع فایربیس که کاربر باید انتخاب کند. در حال حاضر، فقط مخازن Cloud Storage از انتخابگرهای منبع پشتیبانی میکنند:
مقادیر نامشخص | ||||
example(اختیاری) | رشته | مقدار مثال برای پارامتر | ||||
validationRegex(اختیاری) (فقط زمانی قابل اجرا است که type پارامتر string باشد) | رشته | رشتهی Regex برای اعتبارسنجی مقدار پیکربندیشده توسط کاربر برای پارامتر Regex با استفاده از کتابخانه go کامپایل میشود: RE2 برای جزئیات بیشتر در مورد اعتبارسنجی، به اعتبارسنجی و پیامرسانی خطا در زیر مراجعه کنید. | ||||
validationErrorMessage(اختیاری) | رشته | پیام خطایی که در صورت عدم موفقیت برای جزئیات بیشتر در مورد پیامهای خطا، به اعتبارسنجی و پیامهای خطا در زیر مراجعه کنید. | ||||
default(اختیاری) | رشته | مقدار پیشفرض برای پارامتر در صورتی که کاربر مقدار پارامتر را خالی بگذارد در صورت لزوم، میتوانید یک مقدار پارامتر با قابلیت پر شدن خودکار را برای مقدار | ||||
required(اختیاری) | بولی | تعریف میکند که آیا کاربر میتواند هنگام درخواست مقدار پارامتر، یک رشته خالی ارسال کند یا خیر. اگر | ||||
immutable(اختیاری) | بولی | تعریف میکند که آیا کاربر میتواند مقدار پارامتر را پس از نصب تغییر دهد یا خیر (برای مثال، اگر افزونه را دوباره پیکربندی کند ) اگر نکته: اگر برای توابع پیادهسازیشدهی افزونهی خود پارامتر "location" تعریف میکنید، باید این فیلد |
اعتبارسنجی و پیامرسانی خطا برای مقادیر پیکربندیشده توسط کاربر
وقتی پارامتری با type string تنظیم میکنید، باید اعتبارسنجی regex مناسب را از طریق فیلد validationRegex پارامتر تعریف کنید.
همچنین، برای بسیاری از افزونهها، یک مقدار پارامتر که معمولاً درخواست میشود، یک مسیر پایگاه داده یا مخزن Cloud Storage است. توجه داشته باشید که در طول نصب، پیکربندی مجدد یا بهروزرسانی، سرویس Extensions موارد زیر را در زمان ورود مقدار پارامتر اعتبارسنجی نمیکند :
- اینکه آیا پایگاه داده یا مخزن Cloud Storage مشخصشده در پروژه Firebase کاربر تنظیم شده است یا خیر.
- آیا مسیر پایگاه داده مشخص شده در پایگاه داده کاربر وجود دارد یا خیر
با این حال، هنگامی که افزونه در واقع منابع خود را مستقر میکند، اگر پایگاه داده یا مخزن Cloud Storage ارجاعشده هنوز در پروژه راهاندازی نشده باشد، کنسول Firebase یا Firebase CLI یک پیام خطا نمایش میدهند.
اکیداً توصیه میکنیم که در فایل 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 | مکان | location | توابع ابری باید در کدام منطقه مستقر شوند؟ |
| تابع/حافظهی firebaseextensions.v1beta | حافظه عملکرد | memory | به هر تابع چند مگابایت حافظه اختصاص داده شود؟ |
| تابع/timeoutSeconds در firebaseextensions.v1beta | زمان انقضای تابع | timeout | توابع قبل از اتمام زمانبندی، چند ثانیه باید اجرا شوند؟ |
| تنظیمات خروجی firebaseextensions.v1beta.function/vpcConnectorEgress | خروجی کانکتور VPC | vpcConnectorEgressSettings | کنترل ترافیک خروجی هنگام پیکربندی کانکتور VPC |
| firebaseextensions.v1beta.function/vpcConnector | کانکتور VPC | vpcConnector | توابع ابری را به کانکتور VPC مشخص شده متصل میکند. |
| تابع/minInstances در firebaseextensions.v1beta | حداقل نمونههای تابع | minInstances | حداقل تعداد نمونههای این تابع برای اجرا همزمان |
| firebaseextensions.v1beta.function/maxInstances | حداکثر نمونههای تابع | maxInstances | حداکثر تعداد نمونههایی از این تابع که میتوانند همزمان اجرا شوند |
| firebaseextensions.v1beta.function/ingressSettings | تنظیمات ورودی | ingressSettings | کنترل میکند که ترافیک ورودی از کجا پذیرفته میشود |
| تابع/برچسبهای firebaseextensions.v1beta | برچسبها | labels | برچسبهایی که باید روی همه منابع موجود در افزونه اعمال شوند |