প্যারামিটার হলো এমন একটি ব্যবস্থা যার মাধ্যমে একজন ব্যবহারকারী কোনো এক্সটেনশনের ইনস্টল করা প্রতিটি ইনস্ট্যান্সকে নিজের মতো করে সাজিয়ে নিতে পারেন। প্যারামিটারগুলো একটি এক্সটেনশনের এনভায়রনমেন্ট ভেরিয়েবলের মতো। প্যারামিটারের মানগুলো হয় স্বয়ংক্রিয়ভাবে পূরণ হয়ে যেতে পারে (যা ইনস্টলেশনের পর ফায়ারবেস সরবরাহ করে) অথবা ব্যবহারকারী কর্তৃক কনফিগার করা যেতে পারে (যা ইনস্টলেশনের সময় ব্যবহারকারী নির্দিষ্ট করে দেন)।
এই প্যারামিটারগুলো আপনি আপনার এক্সটেনশনের ফাংশন সোর্স কোড, 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ফাইলের বিষয়বস্তু প্রদর্শন করে এবং ইনস্টল করা ইনস্ট্যান্সের প্রকৃত মান দিয়ে যেকোনো প্যারামিটার রেফারেন্স পূরণ করে।
স্বয়ংক্রিয়ভাবে পূরণ করা প্যারামিটার
একটি এক্সটেনশনের প্রতিটি ইনস্টল করা ইনস্ট্যান্স স্বয়ংক্রিয়ভাবে ফায়ারবেস দ্বারা প্রদত্ত বেশ কিছু ডিফল্ট প্যারামিটার অ্যাক্সেস করতে পারে (নীচের টেবিলটি দেখুন)। এই প্যারামিটার মানগুলি হয় ফায়ারবেস প্রকল্পের ডিফল্ট মান (যেমন ডিফল্ট স্টোরেজ বাকেট) অথবা এক্সটেনশন-নির্দিষ্ট (যেমন এক্সটেনশনটির ইনস্ট্যান্স আইডি)।
স্বয়ংক্রিয়ভাবে পূরণ হওয়া সমস্ত প্যারামিটার মান অপরিবর্তনীয়। এগুলি প্রজেক্ট তৈরি বা এক্সটেনশন ইনস্টল করার সময় সেট করা হয়।
যদিও ফায়ারবেস এক্সটেনশনের জন্য এই প্যারামিটার মানগুলি স্বয়ংক্রিয়ভাবে পূরণ করে, ইনস্টলেশনের সময় ফায়ারবেস ব্যবহারকারীর জন্য সংশ্লিষ্ট প্রোডাক্টগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করে না । এক্সটেনশন ইনস্টলকারী ব্যবহারকারীকে অবশ্যই ইনস্টলেশনের আগে তার প্রোজেক্টে সংশ্লিষ্ট এবং প্রযোজ্য প্রোডাক্ট(গুলি) সক্রিয় করতে হবে। উদাহরণস্বরূপ, যদি আপনার এক্সটেনশনে Cloud Firestore অন্তর্ভুক্ত থাকে, তবে ব্যবহারকারীকে তার প্রোজেক্টে Cloud Firestore সেট আপ করতে হবে। আমরা PREINSTALL.md ফাইলে আপনার ব্যবহারকারীদের এই প্রয়োজনীয়তাগুলি সম্পর্কে অবহিত করার পরামর্শ দিই।
| স্বয়ংক্রিয়ভাবে পূরণ হওয়া প্যারামিটারের জন্য রেফারেন্স | বর্ণনা | প্যারামিটার মান (ফায়ারবেস দ্বারা প্রদত্ত) |
|---|---|---|
| ফায়ারবেস প্রজেক্টের ডিফল্ট মান সহ প্যারামিটারসমূহ | ||
PROJECT_ID | যে ফায়ারবেস প্রজেক্টে এক্সটেনশনটি ইনস্টল করা হয়েছে তার অনন্য শনাক্তকারী। | সাধারণ বিন্যাস: উদাহরণ মান: |
DATABASE_URL | ফায়ারবেস প্রজেক্টের ডিফল্ট Realtime Database ইনস্ট্যান্স URL | সাধারণ বিন্যাস: উদাহরণ মান: |
DATABASE_INSTANCE | ফায়ারবেস প্রজেক্টের ডিফল্ট Realtime Database ইনস্ট্যান্সের নাম সাধারণত, এই মানটি প্রজেক্ট আইডির সমান হয়, অথবা এর শেষে | সাধারণ বিন্যাস: উদাহরণ মান: |
STORAGE_BUCKET | ফায়ারবেস প্রজেক্টের ডিফল্ট ক্লাউড স্টোরেজ বাকেটের নাম | সাধারণ বিন্যাস: উদাহরণ মান: |
| এক্সটেনশন ইনস্টলেশন থেকে ডিফল্ট মান সহ প্যারামিটার | ||
EXT_INSTANCE_ID | ইনস্টল করা এক্সটেনশন ইনস্ট্যান্সের জন্য অনন্য শনাক্তকারী এই মানটি | প্রথম ইনস্টল করা ইনস্ট্যান্সের জন্য সাধারণ ফরম্যাট (ফায়ারবেস দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারিত; ইনস্টলেশনের সময় ব্যবহারকারী এটি পরিবর্তন করতে পারেন না ): উদাহরণ মান: দ্বিতীয়বার ইনস্টল করা ইনস্ট্যান্স এবং তার পরবর্তী সংস্করণগুলোর জন্য সাধারণ ফরম্যাট (ফায়ারবেস দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারিত; ইনস্টলেশনের সময় ব্যবহারকারী এটি পরিবর্তন করতে পারেন ): উদাহরণ মান: |
ব্যবহারকারী-কনফিগার করা প্যারামিটার
ব্যবহারকারীকে এক্সটেনশনের প্রতিটি ইনস্টল করা সংস্করণ কাস্টমাইজ করার সুযোগ দিতে, আপনি ইনস্টলেশনের সময় তাকে প্যারামিটারের মান নির্দিষ্ট করতে বলতে পারেন। এই মানগুলো অনুরোধ করার জন্য, আপনাকে আপনার 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 হলে আবশ্যক) | স্ট্রিং | ব্যবহারকারীকে কোন ধরনের ফায়ারবেস রিসোর্স বেছে নিতে বলা হবে। বর্তমানে, শুধুমাত্র Cloud Storage বাকেটগুলোই রিসোর্স সিলেক্টর সমর্থন করে:
অজানা | ||||
example(ঐচ্ছিক) | স্ট্রিং | প্যারামিটারের জন্য উদাহরণ মান | ||||
validationRegex(ঐচ্ছিক) (শুধুমাত্র প্যারামিটারের type string হলেই প্রযোজ্য) | স্ট্রিং | প্যারামিটারের ব্যবহারকারী-নির্ধারিত মান যাচাই করার জন্য রেজেক্স স্ট্রিং। রেজেক্সটি গো লাইব্রেরি RE2 ব্যবহার করে কম্পাইল করা হয়েছে। ভ্যালিডেশন সম্পর্কে বিস্তারিত জানতে, নিচে দেওয়া ভ্যালিডেশন এবং এরর মেসেজিং অংশটি দেখুন। | ||||
validationErrorMessage(ঐচ্ছিক) | স্ট্রিং | ত্রুটি বার্তা সম্পর্কে বিস্তারিত জানতে, নিচে দেওয়া 'যাচাইকরণ এবং ত্রুটি বার্তা' অংশটি দেখুন। | ||||
default(ঐচ্ছিক) | স্ট্রিং | ব্যবহারকারী প্যারামিটারের মান খালি রাখলে, প্যারামিটারটির জন্য এটিই হবে ডিফল্ট মান। প্রযোজ্য ক্ষেত্রে, আপনি | ||||
required(ঐচ্ছিক) | বুলিয়ান | প্যারামিটারের মান জানতে চাওয়া হলে ব্যবহারকারী একটি খালি স্ট্রিং জমা দিতে পারবেন কিনা, তা এটি নির্ধারণ করে। যদি | ||||
immutable(ঐচ্ছিক) | বুলিয়ান | এটি নির্ধারণ করে যে ইনস্টলেশনের পরে ব্যবহারকারী প্যারামিটারটির মান পরিবর্তন করতে পারবে কিনা (উদাহরণস্বরূপ, যদি তারা এক্সটেনশনটি পুনরায় কনফিগার করে )। যদি দ্রষ্টব্য: যদি আপনি আপনার এক্সটেনশনের ডেপ্লয় করা ফাংশনগুলির জন্য একটি 'location' প্যারামিটার নির্ধারণ করেন, তাহলে আপনাকে এর param অবজেক্টে এই |
ব্যবহারকারী-কনফিগার করা মানগুলির জন্য যাচাইকরণ এবং ত্রুটি বার্তা
যখন আপনি string type কোনো প্যারামিটার সেট আপ করেন, তখন আপনাকে প্যারামিটারটির validationRegex ফিল্ডের মাধ্যমে উপযুক্ত রেজেক্স ভ্যালিডেশন সংজ্ঞায়িত করতে হবে।
এছাড়াও, অনেক এক্সটেনশনের জন্য, একটি সচরাচর অনুরোধ করা প্যারামিটার ভ্যালু হলো ডাটাবেস পাথ বা Cloud Storage বাকেট। মনে রাখবেন যে ইনস্টল, রিকনফিগার বা আপডেটের সময়, প্যারামিটার ভ্যালু এন্ট্রি করার মুহূর্তে Extensions সার্ভিস নিম্নলিখিত বিষয়গুলো যাচাই করে না :
- ব্যবহারকারীর ফায়ারবেস প্রোজেক্টের মধ্যে নির্দিষ্ট ডাটাবেস বা Cloud Storage বাকেটটি সেট আপ করা আছে কিনা।
- ব্যবহারকারীর ডাটাবেসের মধ্যে নির্দিষ্ট ডাটাবেস পাথটি বিদ্যমান আছে কিনা
তবে, এক্সটেনশনটি যখন তার রিসোর্সগুলো ডেপ্লয় করে, তখন যদি প্রজেক্টে উল্লেখিত ডাটাবেস বা 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.function/location | অবস্থান | location | ক্লাউড ফাংশনগুলো কোন অঞ্চলে স্থাপন করা উচিত? |
| firebaseextensions.v1beta.function/memory | ফাংশন মেমরি | memory | প্রতিটি ফাংশনের জন্য কত মেগাবাইট মেমরি বরাদ্দ করা উচিত? |
| firebaseextensions.v1beta.function/timeoutSeconds | ফাংশন টাইমআউট | timeout | ফাংশনগুলো টাইম আউট হওয়ার আগে কত সেকেন্ড ধরে চলতে পারে? |
| firebaseextensions.v1beta.function/vpcConnectorEgressSettings | ভিপিসি সংযোগকারী বহির্গমন | vpcConnectorEgressSettings | যখন একটি VPC কানেক্টর কনফিগার করা হয় তখন বহির্গামী ট্র্যাফিক নিয়ন্ত্রণ করে। |
| firebaseextensions.v1beta.function/vpcConnector | ভিপিসি সংযোগকারী | vpcConnector | ক্লাউড ফাংশনগুলোকে নির্দিষ্ট VPC কানেক্টরের সাথে সংযুক্ত করে। |
| firebaseextensions.v1beta.function/minInstances | ন্যূনতম ফাংশন ইনস্ট্যান্স | minInstances | একসাথে চালানোর জন্য এই ফাংশনের ন্যূনতম সংখ্যা |
| firebaseextensions.v1beta.function/maxInstances | সর্বাধিক ফাংশন ইনস্ট্যান্স | maxInstances | একসাথে চালানোর জন্য এই ফাংশনের সর্বাধিক সংখ্যক ইনস্ট্যান্স। |
| firebaseextensions.v1beta.function/ingressSettings | প্রবেশ সেটিংস | ingressSettings | আগত ট্র্যাফিক কোথা থেকে গ্রহণ করা হবে তা নিয়ন্ত্রণ করে। |
| firebaseextensions.v1beta.function/labels | লেবেল | labels | এক্সটেনশনের সমস্ত রিসোর্সে প্রয়োগ করার জন্য লেবেল |