قم بإعداد المعلمات واستخدامها في ملحقك

المعلمات هي الآلية التي من خلالها يقوم المستخدم بتخصيص كل مثيل مثبت للامتداد. تشبه المعلمات متغيرات البيئة للامتداد. يمكن ملء قيم المعلمات تلقائيًا (يتم توفيرها بواسطة 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 الافتراضي لمشروع Firebase

عادة، هذه القيمة هي نفس معرف المشروع، أو تنتهي بـ -default-rtdb .

الصيغة المعممة:
project-id

قيمة المثال:
project-123

STORAGE_BUCKET الاسم الافتراضي لحاوية التخزين السحابي لمشروع 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
(خياري)
خيط

وصف تفصيلي للمعلمة

يتم عرضه للمستخدم عند مطالبته بقيمة المعلمة

يدعم تخفيض السعر

type
(خياري)
خيط

آلية الإدخال لكيفية قيام المستخدم بتعيين قيمة المعلمة (على سبيل المثال، إدخال النص مباشرة أو الاختيار من القائمة المنسدلة)

تتضمن القيم الصالحة ما يلي:

  • string : تسمح بإدخال نص حر (على النحو المحدود بواسطة validationRegex الخاص بك)
  • select : يسمح باختيار إدخال واحد من قائمة الخيارات المحددة مسبقًا. إذا قمت بتحديد هذه القيمة، فيجب عليك أيضًا تحديد حقل options .
  • multiSelect : يسمح باختيار إدخال واحد أو أكثر من قائمة الخيارات المحددة مسبقًا. إذا قمت بتحديد هذه القيمة، فيجب عليك أيضًا تحديد حقل options .
  • selectResource : يسمح باختيار نوع معين من موارد Firebase (مثل مجموعة التخزين السحابي) من مشروع المستخدم.

    عند تحديد معلمة من هذا النوع، سيحصل المستخدمون على أداة تحديد أكثر سهولة في الاستخدام في واجهة مستخدم التثبيت؛ لهذا السبب، استخدم معلمات 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 الذي يطلب من المستخدم تحديده. في الوقت الحالي، تدعم مجموعات التخزين السحابي فقط محددات الموارد:

نوع المورد معرف النوع
دلو التخزين السحابي storage.googleapis.com/Bucket

سيتم تجاهل قيم resourceType غير المعروفة وستعرض واجهة المستخدم المعلمة كحقل إدخال string حر.

example
(خياري)
خيط

قيمة المثال للمعلمة

validationRegex
(خياري)
(ينطبق فقط عندما يكون type المعلمة عبارة عن string )
خيط

سلسلة Regex للتحقق من صحة القيمة التي قام المستخدم بتكوينها

يتم تجميع Regex باستخدام مكتبة go: RE2

للحصول على تفاصيل حول التحقق من الصحة، راجع التحقق من الصحة ورسائل الخطأ أدناه.

validationErrorMessage
(خياري)
خيط

رسالة خطأ يتم عرضها في حالة فشل validationRegex

للحصول على تفاصيل حول رسائل الخطأ، راجع التحقق من الصحة ورسائل الخطأ أدناه.

default
(خياري)
خيط

القيمة الافتراضية للمعلمة إذا ترك المستخدم قيمة المعلمة فارغة

إذا أمكن، يمكنك تحديد قيمة معلمة يتم تعبئتها تلقائيًا للقيمة default (على سبيل المثال، راجع المعلمة IMG_BUCKET الخاصة بملحق Resize Images ).

required
(خياري)
منطقية

يحدد ما إذا كان يمكن للمستخدم إرسال سلسلة فارغة عند مطالبته بقيمة المعلمة

إذا تم حذف required ، فستكون هذه القيمة افتراضيًا true (أي معلمة مطلوبة).

immutable
(خياري)
منطقية

يحدد ما إذا كان يمكن للمستخدم تغيير قيمة المعلمة بعد التثبيت (على سبيل المثال، إذا أعاد تكوين الامتداد)

إذا تم حذف immutable ، فستكون هذه القيمة افتراضية false .

ملاحظة: إذا قمت بتحديد معلمة "موقع" للوظائف المنشورة لامتدادك ، فيجب عليك تضمين هذا الحقل immutable في الكائن المعلمي الخاص به.

التحقق من الصحة ورسائل الخطأ للقيم التي قام المستخدم بتكوينها

عندما تقوم بإعداد معلمة type string ، فإنك تحتاج إلى تحديد التحقق المناسب من صحة التعبير العادي عبر حقل validationRegex المعلمة.

أيضًا، بالنسبة للعديد من الملحقات، فإن قيمة المعلمة المطلوبة بشكل شائع هي مسار قاعدة البيانات أو مجموعة التخزين السحابي. انتبه إلى أنه أثناء التثبيت أو إعادة التكوين أو التحديث، لا تتحقق خدمة الملحقات من صحة ما يلي في وقت إدخال قيمة المعلمة:

  • ما إذا كان قد تم إعداد قاعدة البيانات المحددة أو مجموعة Cloud Storage ضمن مشروع Firebase الخاص بالمستخدم
  • ما إذا كان مسار قاعدة البيانات المحدد موجودًا داخل قاعدة بيانات المستخدم

ومع ذلك، عندما يقوم الامتداد بنشر موارده فعليًا، ستعرض وحدة تحكم Firebase أو واجهة سطر أوامر Firebase رسالة خطأ إذا لم يتم إعداد قاعدة البيانات المرجعية أو مجموعة التخزين السحابي في المشروع بعد.

نوصي بشدة بإعلام المستخدمين في ملف 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 التصنيفات التي سيتم تطبيقها على جميع الموارد في الامتداد