আপনি Firebase CLI কমান্ড ব্যবহার করে অথবা আপনার ফাংশন সোর্স কোডে রানটাইম বিকল্প সেট করে ফাংশন ডিপ্লয়, মুছে এবং পরিবর্তন করতে পারেন।
ফাংশন ডিপ্লয় করুন
ফাংশন ডিপ্লয় করতে, এই Firebase CLI কমান্ড রান করুন:
firebase deploy --only functions
ডিফল্ট হিসেবে, Firebase CLI আপনার সোর্সের মধ্যে থাকা সব ফাংশন
একই সময়ে ডিপ্লয় করে। আপনার প্রোজেক্টে ৫টির বেশি ফাংশন থাকলে,
আমরা সাজেস্ট করি যে আপনি নির্দিষ্ট ফাংশনের নামের সাথে --only ফ্ল্যাগ ব্যবহার করুন
যাতে শুধুমাত্র আপনার এডিট করা ফাংশনগুলিই
ডিপ্লয় করা যায়। এইভাবে নির্দিষ্ট ফাংশন ডিপ্লয় করলে
ডিপ্লয়মেন্ট প্রসেস দ্রুত হয় এবং ডিপ্লয়মেন্ট কোটা সংক্রান্ত সমস্যা
এড়ানো যায়। যেমন:
firebase deploy --only functions:addMessage,functions:makeUppercase
অনেক বেশি সংখ্যক ফাংশন ডিপ্লয় করার সময়, আপনি স্ট্যান্ডার্ড কোটা অতিক্রম করে যেতে পারেন এবং HTTP 429 বা 500 ত্রুটি মেসেজ পেতে পারেন। এই সমস্যার সমাধান করতে, ১০টি বা তার কম ফাংশন গ্রুপে ডিপ্লয় করুন।
উপলভ্য কমান্ডের সম্পূর্ণ তালিকা দেখতে Firebase CLI রেফারেন্স দেখুন।
ডিফল্ট হিসেবে, Firebase CLI, functions/ ফোল্ডারে সোর্স কোড
খোঁজে। আপনি চাইলে, কোডবেস বা একাধিক ফাইলের সেটে
ফাংশন সাজাতে পারেন।
ফাংশন মুছুন
আপনি এইসব উপায়ে আগে ডিপ্লয় করা ফাংশন মুছে ফেলতে পারবেন:
- Firebase CLI-তে
functions:delete-এর সাথে স্পষ্টভাবে - Google Cloud কনসোলে স্পষ্টভাবে।
- ডিপ্লয় করার আগে সোর্স থেকে ফাংশন সরিয়ে দেওয়ার মাধ্যমে ইমপ্লিসিটভাবে।
প্রোডাকশন থেকে ফাংশন সরানোর আগে মুছে ফেলার সব অপারেশন আপনাকে কনফার্ম করতে বলে।
Firebase CLI-তে এক্সপ্লিসিট ফাংশন মুছে দেওয়ার সুবিধা একাধিক আর্গুমেন্ট এবং ফাংশন গ্রুপকে সাপোর্ট করে এবং আপনাকে নির্দিষ্ট অঞ্চলে চলা ফাংশন উল্লেখ করার অনুমতি দেয়। এছাড়াও, আপনি কনফার্মেশন প্রম্পট ওভাররাইড করতে পারবেন।
সব অঞ্চলে নির্দিষ্ট নামের সাথে মেলে এমন সব ফাংশন মুছে দেয়:
firebase functions:delete FUNCTION-1_NAME
ডিফল্ট নয় এমন অঞ্চলে চলা নির্দিষ্ট ফাংশন মুছে দেয়:
firebase functions:delete FUNCTION-1_NAME --region REGION_NAME
একাধিক ফাংশন মুছে দেয়:
firebase functions:delete FUNCTION-1_NAME FUNCTION-2_NAME
নির্দিষ্ট ফাংশন গ্রুপ মুছে দেয়:
firebase functions:delete GROUP_NAME
কনফার্মেশন প্রম্পট বাইপাস করে:
firebase functions:delete FUNCTION-1_NAME --force
ইমপ্লিসিট ফাংশন মুছে দেওয়ার মাধ্যমে, firebase deploy আপনার সোর্স পার্স করে এবং
ফাইল থেকে মুছে দেওয়া হয়েছে এমন যেকোনও ফাংশন প্রোডাকশন থেকে সরিয়ে দেয়।
কোনও ফাংশনের নাম, অঞ্চল বা ট্রিগার পরিবর্তন করা
আপনি যদি প্রোডাকশন ট্রাফিক ম্যানেজ করে এমন ফাংশনের জন্য অঞ্চল বা ট্রিগারের নাম পরিবর্তন করেন বা পরিবর্তন করেন, তাহলে পরিবর্তন করার সময় ইভেন্ট হারানো এড়াতে এই বিভাগের ধাপগুলি অনুসরণ করুন। এইসব ধাপ অনুসরণ করার আগে, প্রথমে নিশ্চিত করুন যে আপনার ফাংশনটি আইডেমপোটেন্ট, কারণ পরিবর্তন করার সময় আপনার ফাংশনের নতুন ও পুরনো ভার্সন একই সাথে চলবে।
ফাংশনের নাম পরিবর্তন করা
কোনও ফাংশনের নাম পরিবর্তন করতে, আপনার সোর্সে ফাংশনের নাম পরিবর্তন করা নতুন ভার্সন তৈরি করুন
এবং তারপর দুটি আলাদা ডিপ্লয়মেন্ট কমান্ড রান করুন। প্রথম কমান্ডটি নতুন নামযুক্ত ফাংশনটি ডিপ্লয় করে এবং দ্বিতীয় কমান্ডটি আগে ডিপ্লয় করা
ভার্সনটি সরিয়ে দেয়। যেমন, আপনার যদি webhook নামের Node.js ফাংশন থাকে
যেটি আপনি webhookNew-এ পরিবর্তন করতে চান,
তাহলে কোডটি এইভাবে সংশোধন করুন:
// before
const functions = require('firebase-functions/v1');
exports.webhook = functions.https.onRequest((req, res) => {
res.send("Hello");
});
// after
const functions = require('firebase-functions/v1');
exports.webhookNew = functions.https.onRequest((req, res) => {
res.send("Hello");
});
তারপর নতুন ফাংশন ডিপ্লয় করতে এই কমান্ডগুলি রান করুন:
# Deploy new function called webhookNew firebase deploy --only functions:webhookNew # Wait until deployment is done; now both webhookNew and webhook are running # Delete webhook firebase functions:delete webhook
কোনও ফাংশনের অঞ্চল বা অঞ্চলগুলি পরিবর্তন করুন
আপনি যদি প্রোডাকশন ট্রাফিক ম্যানেজ করে এমন ফাংশনের জন্য নির্দিষ্ট অঞ্চল পরিবর্তন করেন, তাহলে আপনি এই ধাপগুলি ক্রমানুসারে সম্পাদন করে ইভেন্ট লস প্রতিরোধ করতে পারেন:
- ফাংশনের নাম পরিবর্তন করুন এবং আপনার পছন্দ অনুযায়ী অঞ্চল বা অঞ্চলগুলি পরিবর্তন করুন।
- নাম পরিবর্তন করা ফাংশন ডিপ্লয় করুন, যার ফলে সাময়িকভাবে দুটি অঞ্চলের সেটেই একই কোড রান করে।
- আগের ফাংশনটি মুছে দিন।
যেমন, আপনার যদি webhook নামে কোনও ফাংশন থাকে যা বর্তমানে us-central1-এ ডিপ্লয় করা আছে
এবং আপনি এটি asia-northeast1-এ মাইগ্রেট করতে চান, তাহলে আপনাকে
প্রথমে ফাংশনের নাম পরিবর্তন করতে এবং অঞ্চল সংশোধন করতে আপনার সোর্স কোড পরিবর্তন করতে হবে।
// before
const functions = require('firebase-functions/v1');
exports.webhook = functions
.https.onRequest((req, res) => {
res.send("Hello");
});
// after
const functions = require('firebase-functions/v1');
exports.webhookAsia = functions
.region('asia-northeast1')
.https.onRequest((req, res) => {
res.send("Hello");
});
তারপর এটি রান করে ডিপ্লয় করুন:
firebase deploy --only functions:webhookAsia
এখন দুটি অভিন্ন ফাংশন চলছে: webhook, us-central1-এ চলছে,
এবং webhookAsia, asia-northeast1-এ চলছে।
তারপর, webhook মুছুন:
firebase functions:delete webhook
এখন শুধু একটি ফাংশন আছে - webhookAsia, যা asia-northeast1-এ চলছে।
ফাংশনের ট্রিগারের ধরন পরিবর্তন করা
সময়ের সাথে সাথে আপনার Cloud Functions for Firebase ডিপ্লয়মেন্ট ডেভেলপ করার সময়, বিভিন্ন কারণে আপনাকে কোনও ফাংশনের ট্রিগার টাইপ পরিবর্তন করতে হতে পারে। যেমন, আপনি হয়ত এক ধরনের Firebase Realtime Database বা Cloud Firestore ইভেন্ট থেকে অন্য ধরনের ইভেন্টে পরিবর্তন করতে চান।
শুধু সোর্স কোড পরিবর্তন করে এবং firebase deploy রান করে কোনও ফাংশনের ইভেন্টের ধরন পরিবর্তন করা সম্ভব নয়। সমস্যা এড়াতে,
এই পদ্ধতি অনুসরণ করে ফাংশনের ট্রিগার টাইপ পরিবর্তন করুন:
- পছন্দসই ট্রিগার টাইপ সহ নতুন ফাংশন অন্তর্ভুক্ত করতে সোর্স কোড পরিবর্তন করুন।
- ফাংশনটি ডিপ্লয় করুন, যার ফলে পুরনো এবং নতুন উভয় ফাংশন সাময়িকভাবে রান করবে।
- Firebase CLI ব্যবহার করে প্রোডাকশন থেকে পুরনো ফাংশন স্পষ্টভাবে মুছে দিন।
যেমন, আপনার যদি objectChanged নামের Node.js ফাংশন থাকে যাতে লিগ্যাসি
onChange ইভেন্টের ধরন আছে এবং আপনি এটি onFinalize-এ পরিবর্তন করতে চান, তাহলে প্রথমে ফাংশনের নাম পরিবর্তন করুন
এবং onFinalize ইভেন্টের ধরন পেতে এটি এডিট করুন।
// before
const functions = require('firebase-functions/v1');
exports.objectChanged = functions.storage.object().onChange((object) => {
return console.log('File name is: ', object.name);
});
// after
const functions = require('firebase-functions/v1');
exports.objectFinalized = functions.storage.object().onFinalize((object) => {
return console.log('File name is: ', object.name);
});
তারপর পুরনো ফাংশন মুছে দেওয়ার আগে নতুন ফাংশন তৈরি করতে এই কমান্ডগুলি রান করুন:
# Create new function objectFinalized firebase deploy --only functions:objectFinalized # Wait until deployment is done; now both objectChanged and objectFinalized are running # Delete objectChanged firebase functions:delete objectChanged
রানটাইম সংক্রান্ত বিকল্প সেট করা
Cloud Functions for Firebase আপনাকে Node.js রানটাইম ভার্সন এবং প্রতি-ফাংশন টাইমআউট, মেমরি অ্যালোকেশন এবং সর্বনিম্ন/সর্বাধিক ফাংশন ইনস্ট্যান্সের মতো রানটাইম বিকল্প বেছে নিতে দেয়।
পেশাদার পদ্ধতি হিসেবে, এইসব বিকল্প (Node.js ভার্সন ছাড়া) ফাংশন কোডের মধ্যে
কনফিগারেশন অবজেক্টে সেট করা উচিত। এই
RuntimeOptions
অবজেক্ট হল আপনার ফাংশনের রানটাইম বিকল্পের সোর্স অফ ট্রুথ এবং এটি
অন্য কোনও পদ্ধতি (যেমন Google Cloud কনসোল বা gcloud CLI) ব্যবহার করে সেট করা বিকল্পকে
ওভাররাইড করবে।
আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোতে Google Cloud কনসোল বা gcloud CLI ব্যবহার করে ম্যানুয়ালি রানটাইম বিকল্প সেট করার প্রয়োজন হলে এবং আপনি প্রতিটি ডেপ্লয়মেন্টে এইসব ভ্যালু ওভাররাইড করতে না চাইলে, preserveExternalChanges বিকল্পটি true-এ সেট করুন। এই বিকল্প true-এ সেট করা থাকলে, Firebase আপনার কোডে সেট করা রানটাইম বিকল্পগুলি
আপনার ফাংশনের বর্তমানে-ডিপ্লয় করা ভার্সনের সেটিংসের সাথে নিম্নলিখিত অগ্রাধিকার সহ
মার্জ করে:
- ফাংশন কোডে বিকল্প সেট করা আছে: এক্সটার্নাল পরিবর্তন ওভাররাইড করুন।
- ফাংশন কোডে বিকল্পটি
RESET_VALUE-এ সেট করা আছে: ডিফল্ট ভ্যালু দিয়ে এক্সটার্নাল পরিবর্তন ওভাররাইড করুন। - ফাংশন কোডে বিকল্প সেট করা নেই, তবে বর্তমানে ডিপ্লয় করা ফাংশনে সেট করা আছে: ডিপ্লয় করা ফাংশনে নির্দিষ্ট করা বিকল্প ব্যবহার করুন।
বেশিরভাগ ক্ষেত্রে preserveExternalChanges: true বিকল্প ব্যবহার করার সাজেস্ট করা হয় না
কারণ আপনার ফাংশনের রানটাইম বিকল্পের জন্য
আপনার কোড আর সম্পূর্ণ সোর্স অফ ট্রুথ
হবে না। আপনি এটি ব্যবহার করলে, Google Cloud কনসোল চেক করুন অথবা কোনও ফাংশনের সম্পূর্ণ কনফিগারেশন দেখতে
gcloud CLI ব্যবহার করুন।
Node.js ভার্সন সেট করুন
Cloud Functions-এর জন্য Firebase SDK, Node.js রানটাইম বেছে নেওয়ার অনুমতি দেয়। আপনি কোনও প্রোজেক্টের সব ফাংশন রানটাইম এনভায়রনমেন্টে এক্সক্লুসিভভাবে চালানোর জন্য বেছে নিতে পারেন যা এইসব কাজ করে এমন Node.js ভার্সনের সাথে মানানসই:
- Node.js 22
- Node.js 20
- Node.js 18 (বন্ধ করা হয়েছে)
Node.js-এর এইসব ভার্সনের জন্য চলমান সহায়তা সংক্রান্ত গুরুত্বপূর্ণ তথ্যের জন্য সহায়তার শিডিউল দেখুন।
Node.js ভার্সন সেট করতে:
আপনি package.json ফাইলের engines ফিল্ডে ভার্সন সেট করতে পারবেন।
এই ফাইলটি আপনার functions/ ডিরেক্টরিতে ইনিশিয়ালাইজেশনের সময় তৈরি করা হয়েছে।
যেমন, শুধু ২০ ভার্সন ব্যবহার করতে,
package.json-এ এই লাইনটি এডিট করুন:
"engines": {"node": "22"}
আপনি যদি Yarn প্যাকেজ ম্যানেজার ব্যবহার করেন বা engines ফিল্ডের জন্য অন্য কোনও নির্দিষ্ট প্রয়োজনীয়তা থাকে, তাহলে আপনি Firebase SDK-এর জন্য রানটাইম Cloud Functions-এ সেট করতে পারেন
firebase.json-এর পরিবর্তে:
{
"functions": {
"runtime": "nodejs22"
}
}
CLI, firebase.json-এ সেট করা ভ্যালু ব্যবহার করে, যা package.json-এ আপনার আলাদাভাবে সেট করা যেকোনও ভ্যালু বা
রেঞ্জের চেয়ে বেশি পছন্দসই।
আপনার Node.js রানটাইম আপগ্রেড করুন
আপনার Node.js রানটাইম আপগ্রেড করতে:
- আপনার প্রোজেক্ট Blaze প্রাইসিং প্ল্যানে আছে কিনা তা ভাল করে দেখে নিন।
- আপনি Firebase CLI v11.18.0 বা তার পরবর্তী ভার্সন ব্যবহার করছেন কিনা তা দেখে নিন।
- আপনার
functions/ডিরেক্টরিতে ইনিশিয়ালাইজেশনের সময় তৈরি হওয়াpackage.jsonফাইলেenginesভ্যালু পরিবর্তন করুন। যেমন, আপনি যদি ১৬ ভার্সন থেকে ১৮ ভার্সনে আপগ্রেড করেন, তাহলে এন্ট্রিটি এইরকম দেখতে হবে:"engines": {"node": "18"} - ঐচ্ছিকভাবে, Firebase Local Emulator Suite ব্যবহার করে আপনার পরিবর্তনগুলি পরীক্ষা করুন।
- সব ফাংশন আবার ডিপ্লয় করুন।
Node.js মডিউল সিস্টেম বেছে নিন
Node.js-এ ডিফল্ট মডিউল সিস্টেম হল CommonJS (CJS), তবে বর্তমান Node.js ভার্সনে ECMAScript মডিউলও (ESM) কাজ করে। Cloud Functions-এ দুটিই কাজ করে।
ডিফল্ট হিসেবে, আপনার ফাংশন CommonJS ব্যবহার করে। এর অর্থ হল, ইমপোর্ট ও এক্সপোর্ট এইরকম দেখায়:
const functions = require("firebase-functions/v1");
exports.helloWorld = functions.https.onRequest(async (req, res) => res.send("Hello from Firebase!"));
পরিবর্তে ESM ব্যবহার করতে, আপনার package.json ফাইলে "type": "module" ফিল্ড সেট করুন
:
{
...
"type": "module",
...
}
আপনি এটি সেট করার পরে, ESM import এবং export সিনট্যাক্স ব্যবহার করুন:
import functions from "firebase-functions/v1";
export const helloWorld = functions.https.onRequest(async (req, res) => res.send("Hello from Firebase!"));
দুটি মডিউল সিস্টেমই সম্পূর্ণভাবে কাজ করে। আপনার প্রোজেক্টের জন্য যেটি সবচেয়ে উপযুক্ত সেটি বেছে নিতে পারেন। Node.js-এর মডিউল সংক্রান্ত ডকুমেন্টেশন থেকে আরও জানুন।
স্কেলিং আচরণ নিয়ন্ত্রণ করুন
ডিফল্ট হিসেবে, Cloud Functions for Firebase ইনকামিং অনুরোধের সংখ্যার উপর ভিত্তি করে চলমান ইনস্ট্যান্সের সংখ্যা স্কেল করে, ট্রাফিক কমে গেলে সম্ভাব্যভাবে শূন্য ইনস্ট্যান্সে স্কেল ডাউন করে। তবে, আপনার অ্যাপের লেটেন্সি কম করার প্রয়োজন হলে এবং আপনি কোল্ড স্টার্টের সংখ্যা সীমিত করতে চাইলে, কন্টেনার ইনস্ট্যান্সের ন্যূনতম সংখ্যা নির্দিষ্ট করে এই ডিফল্ট অ্যাকশন পরিবর্তন করতে পারবেন, যাতে সেগুলি ওয়ার্ম থাকে এবং অনুরোধের উত্তর দেওয়ার জন্য প্রস্তুত থাকে।
একইভাবে, ইনকামিং অনুরোধের উত্তরে ইনস্ট্যান্সের স্কেলিং সীমিত করতে আপনি সর্বাধিক সংখ্যা সেট করতে পারেন। আপনার খরচ নিয়ন্ত্রণ করতে অথবা ডেটাবেসের মতো কোনও ব্যাকিং পরিষেবায় কানেকশনের সংখ্যা সীমিত করতে এই সেটিং ব্যবহার করুন।
কোল্ড স্টার্টের সংখ্যা কমানো
সোর্স কোডে কোনও ফাংশনের জন্য ন্যূনতম ইনস্ট্যান্সের সংখ্যা সেট করতে,
runWith
পদ্ধতি ব্যবহার করুন। এই পদ্ধতিটি JSON অবজেক্ট গ্রহণ করে যা
RuntimeOptions
ইন্টারফেসের সাথে সামঞ্জস্যপূর্ণ, যা minInstances-এর মান নির্ধারণ করে। যেমন,
এই ফাংশনটি ওয়ার্ম রাখার জন্য ন্যূনতম ৫টি ইনস্ট্যান্স সেট করে:
exports.getAutocompleteResponse = functions
.runWith({
// Keep 5 instances warm for this latency-critical function
minInstances: 5,
})
.https.onCall((data, context) => {
// Autocomplete a user's search term
});
minInstances-এর জন্য ভ্যালু সেট করার সময় এইসব বিষয় বিবেচনা করতে হবে:
- Cloud Functions for Firebase যদি আপনার অ্যাপকে
minInstancesসেটিংয়ের উপরে স্কেল করে, তাহলে আপনি সেই থ্রেশহোল্ডের উপরে প্রতিটি ইনস্ট্যান্সের জন্য কোল্ড স্টার্টের অভিজ্ঞতা পাবেন। - কোল্ড স্টার্টের সবচেয়ে মারাত্মক প্রভাব পড়ে সেইসব অ্যাপের উপর যেগুলিতে ট্রাফিক স্পাইক হয়। আপনার
অ্যাপে ট্রাফিক স্পাইক থাকলে এবং আপনি
minInstancesভ্যালু যথেষ্ট বেশি সেট করলে, প্রতিটি ট্রাফিক বৃদ্ধির ক্ষেত্রে কোল্ড স্টার্ট কমে যাবে এবং আপনি উল্লেখযোগ্যভাবে কম লেটেন্সি দেখতে পাবেন। যেসব অ্যাপে ক্রমাগত ট্রাফিক আসে, সেগুলির ক্ষেত্রে কোল্ড স্টার্ট পারফর্ম্যান্সের উপর গুরুতর প্রভাব ফেলে না। প্রোডাকশন এনভায়রনমেন্টের জন্য ন্যূনতম ইনস্ট্যান্স সেট করা যুক্তিযুক্ত হতে পারে, তবে সাধারণত টেস্ট এনভায়রনমেন্টে এটি এড়ানো উচিত। আপনার টেস্ট প্রোজেক্টে স্কেল শূন্যে নামিয়ে আনতে, কিন্তু প্রোডাকশন প্রোজেক্টে কোল্ড স্টার্টের সংখ্যা কমাতে, আপনি
FIREBASE_CONFIGএনভায়রনমেন্ট ভেরিয়েবলের উপর ভিত্তি করেminInstancesসেট করতে পারেন:// Get Firebase project id from `FIREBASE_CONFIG` environment variable const envProjectId = JSON.parse(process.env.FIREBASE_CONFIG).projectId; exports.renderProfilePage = functions .runWith({ // Keep 5 instances warm for this latency-critical function // in production only. Default to 0 for test projects. minInstances: envProjectId === "my-production-project" ? 5 : 0, }) .https.onRequest((req, res) => { // render some html });
কোনও ফাংশনের জন্য ইনস্ট্যান্সের সর্বাধিক সংখ্যা সীমিত করুন
ফাংশন সোর্স কোডে সর্বাধিক ইনস্ট্যান্স সেট করতে,
runWith
পদ্ধতি ব্যবহার করুন। এই পদ্ধতিটি RuntimeOptions ইন্টারফেসের সাথে মানানসই একটি JSON অবজেক্ট গ্রহণ করে, যা maxInstances-এর জন্য মান নির্ধারণ করে। যেমন, এই ফাংশনটি ১০০টি ইনস্ট্যান্সের সীমা সেট করে
যাতে একটি কাল্পনিক লিগ্যাসি ডেটাবেসকে ওভারহোয়েল না করা যায়:
exports.mirrorOrdersToLegacyDatabase = functions
.runWith({
// Legacy database only supports 100 simultaneous connections
maxInstances: 100,
})
.firestore.document("orders/{orderId}")
.onWrite((change, context) => {
// Connect to legacy database
});
HTTP ফাংশন maxInstances সীমায় স্কেল আপ করা হলে, নতুন অনুরোধ ৩০ সেকেন্ডের জন্য
সারিতে রাখা হয় এবং তারপরেও কোনও ইনস্ট্যান্স উপলভ্য না হলে
429 Too Many Requests রেসপন্স কোড সহ বাতিল করা হয়।
সর্বাধিক ইনস্ট্যান্স সেটিংস ব্যবহার করার পেশাদার পদ্ধতি সম্পর্কে আরও জানতে,
maxInstances ব্যবহার করার পেশাদার পদ্ধতি
দেখুন।
পরিষেবা অ্যাকাউন্ট সেট করা
ফার্স্ট জেনারেশন ফাংশনের জন্য ডিফল্ট পরিষেবা অ্যাকাউন্ট,
PROJECT_ID@
আপনি ডিফল্ট পরিষেবা অ্যাকাউন্ট ওভাররাইড করতে এবং কোনও ফাংশনকে ঠিক প্রয়োজনীয় রিসোর্সে
সীমিত করতে চাইতে পারেন। আপনি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করে এবং .runWith() পদ্ধতি ব্যবহার করে উপযুক্ত ফাংশনে এটি অ্যাসাইন করার মাধ্যমে এটি করতে পারেন।
এই পদ্ধতিতে কনফিগারেশন বিকল্প সহ অবজেক্ট নেওয়া হয়, যার মধ্যে
serviceAccount প্রপার্টি অন্তর্ভুক্ত।
const functions = require("firebase-functions/v1");
exports.helloWorld = functions
.runWith({
// This function doesn't access other Firebase project resources, so it uses a limited service account.
serviceAccount:
"my-limited-access-sa@", // or prefer the full form: "my-limited-access-sa@my-project.iam.gserviceaccount.com"
})
.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
টাইমআউট ও মেমরি অ্যালোকেশন সেট করুন
কিছু ক্ষেত্রে, আপনার ফাংশনে দীর্ঘ টাইমআউট ভ্যালু বা মেমরির বড় অ্যালোকেশনের জন্য বিশেষ প্রয়োজনীয়তা থাকতে পারে। আপনি Google Cloud Console বা ফাংশন সোর্স কোডে (শুধু Firebase) এইসব ভ্যালু সেট করতে পারবেন।
ফাংশন সোর্স কোডে মেমরি অ্যালোকেশন ও টাইমআউট সেট করতে, Cloud Functions 2.0.0-এর জন্য Firebase SDK-তে চালু করা
runWith
প্যারামিটার ব্যবহার করুন। এই রানটাইম বিকল্পটি
RuntimeOptions
ইন্টারফেসের সাথে মানানসই JSON অবজেক্ট গ্রহণ করে, যা timeoutSeconds এবং memory-এর জন্য ভ্যালু নির্ধারণ করে।
যেমন, এই স্টোরেজ ফাংশন ১ জিবি মেমরি ব্যবহার করে এবং ৩০০ সেকেন্ড পরে টাইম-আউট হয়ে যায়:
exports.convertLargeFile = functions
.runWith({
// Ensure the function has enough memory and time
// to process large files
timeoutSeconds: 300,
memory: "1GB",
})
.storage.object()
.onFinalize((object) => {
// Do some complicated things that take a lot of memory and time
});
timeoutSeconds-এর জন্য সর্বাধিক ভ্যালু হল 540 বা ৯ মিনিট।
কোনও ফাংশনের জন্য বরাদ্দ করা মেমরির পরিমাণ, ফাংশনের জন্য বরাদ্দ করা CPU-এর সাথে সামঞ্জস্যপূর্ণ,
যেমন memory-এর জন্য সঠিক ভ্যালুর এই তালিকায় বিস্তারিতভাবে উল্লেখ করা হয়েছে:
128MB— ২০০MHz256MB— ৪০০MHz512MB— ৮০০MHz1GB— ১.৪ GHz2GB— ২.৪ GHz4GB— ৪.৮ GHz8GB— ৪.৮ GHz
Google Cloud কনসোলে মেমরি অ্যালোকেশন ও টাইমআউট সেট করতে:
- Google Cloud কনসোলের বাঁদিকের মেনু থেকে Cloud Functions বেছে নিন।
- ফাংশনের তালিকায় কোনও ফাংশনের নামের উপর ক্লিক করে সেটি বেছে নিন।
- উপরের মেনুতে এডিট করুন আইকনে ক্লিক করুন।
- মেমরি অ্যালোকেশন লেবেলযুক্ত ড্রপ-ডাউন মেনু থেকে মেমরি অ্যালোকেশন বেছে নিন।
- উন্নত বিকল্পগুলি দেখতে আরও বিকল্পে ক্লিক করুন এবং টাইমআউট টেক্সট বক্সে সেকেন্ডের সংখ্যা লিখুন।
- ফাংশন আপডেট করতে সেভ করুন বিকল্পে ক্লিক করুন।