আপনি Firebase CLI কমান্ড ব্যবহার করে অথবা আপনার ফাংশন সোর্স কোডে রানটাইম বিকল্প সেট করে ফাংশন স্থাপন, মুছে ফেলতে এবং পরিবর্তন করতে পারেন।
ফাংশন স্থাপন করুন
ফাংশন স্থাপন করতে, এই Firebase CLI কমান্ডটি চালান:
firebase deploy --only functions
ডিফল্টরূপে, Firebase CLI আপনার সোর্সের ভিতরে থাকা সমস্ত ফাংশন একই সময়ে স্থাপন করে। যদি আপনার প্রোজেক্টে ৫টির বেশি ফাংশন থাকে, তাহলে আমরা আপনাকে --only ফ্ল্যাগ ব্যবহার করে নির্দিষ্ট ফাংশনের নাম ব্যবহার করার পরামর্শ দিচ্ছি যাতে আপনি শুধুমাত্র আপনার সম্পাদনা করা ফাংশনগুলি স্থাপন করতে পারেন। এইভাবে নির্দিষ্ট ফাংশন স্থাপন করলে স্থাপন প্রক্রিয়া দ্রুত হয় এবং স্থাপনার কোটায় দৌড়ানো এড়াতে সাহায্য করে। উদাহরণস্বরূপ:
firebase deploy --only functions:addMessage,functions:makeUppercase
প্রচুর সংখ্যক ফাংশন স্থাপন করার সময়, আপনি স্ট্যান্ডার্ড কোটা অতিক্রম করতে পারেন এবং HTTP 429 বা 500 ত্রুটি বার্তা পেতে পারেন। এটি সমাধানের জন্য, 10 বা তার কম সংখ্যক গ্রুপে ফাংশন স্থাপন করুন।
উপলব্ধ কমান্ডের সম্পূর্ণ তালিকার জন্য Firebase CLI রেফারেন্স দেখুন।
ডিফল্টরূপে, Firebase CLI সোর্স কোডের জন্য functions/ ফোল্ডারে অনুসন্ধান করে। আপনি যদি চান, তাহলে আপনি কোডবেস বা একাধিক ফাইলের সেটে ফাংশনগুলি সংগঠিত করতে পারেন।
ফাংশন মুছে ফেলুন
আপনি পূর্বে স্থাপন করা ফাংশনগুলি এই উপায়ে মুছে ফেলতে পারেন:
- স্পষ্টভাবে Firebase CLI-তে
functions:deleteসহ - স্পষ্টভাবে Google Cloud কনসোলে ।
- স্থাপনের আগে উৎস থেকে ফাংশনটি সরিয়ে পরোক্ষভাবে ।
সমস্ত মুছে ফেলার ক্রিয়াকলাপ আপনাকে প্রোডাকশন থেকে ফাংশনটি সরানোর আগে নিশ্চিত করতে অনুরোধ করে।
Firebase CLI-তে স্পষ্ট ফাংশন মুছে ফেলা একাধিক আর্গুমেন্টের পাশাপাশি ফাংশন গ্রুপগুলিকে সমর্থন করে এবং আপনাকে একটি নির্দিষ্ট অঞ্চলে চলমান একটি ফাংশন নির্দিষ্ট করার অনুমতি দেয়। এছাড়াও, আপনি নিশ্চিতকরণ প্রম্পট ওভাররাইড করতে পারেন।
# Delete all functions that match the specified name in all regions. firebase functions:delete myFunction
# Delete a specified function running in a specific region. firebase functions:delete myFunction --region us-east-1
# Delete more than one function firebase functions:delete myFunction myOtherFunction
# Delete a specified functions group. firebase functions:delete groupA
# Bypass the confirmation prompt. firebase functions:delete myFunction --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
এখন দুটি অভিন্ন ফাংশন চলছে: us-central1 এ webhook চলছে, এবং asia-northeast1 এ webhookAsia চলছে।
তারপর, webhook মুছে ফেলুন:
firebase functions:delete webhook
এখন শুধুমাত্র একটি ফাংশন আছে - webhookAsia , যা asia-northeast1 তে চলছে।
একটি ফাংশনের ট্রিগারের ধরণ পরিবর্তন করুন
সময়ের সাথে সাথে Cloud Functions for Firebase তৈরি করার সময়, বিভিন্ন কারণে আপনাকে একটি ফাংশনের ট্রিগার টাইপ পরিবর্তন করতে হতে পারে। উদাহরণস্বরূপ, আপনি এক ধরণের Firebase Realtime Database বা Cloud Firestore ইভেন্ট থেকে অন্য ধরণের পরিবর্তন করতে চাইতে পারেন।
শুধুমাত্র সোর্স কোড পরিবর্তন করে এবং firebase deploy চালিয়ে কোনও ফাংশনের ইভেন্ট টাইপ পরিবর্তন করা সম্ভব নয়। ত্রুটি এড়াতে, এই পদ্ধতির মাধ্যমে একটি ফাংশনের ট্রিগার টাইপ পরিবর্তন করুন:
- পছন্দসই ট্রিগার টাইপ সহ একটি নতুন ফাংশন অন্তর্ভুক্ত করতে সোর্স কোডটি পরিবর্তন করুন।
- ফাংশনটি স্থাপন করুন, যার ফলে অস্থায়ীভাবে পুরানো এবং নতুন উভয় ফাংশনই চালু হবে।
- Firebase CLI ব্যবহার করে প্রোডাকশন থেকে পুরাতন ফাংশনটি স্পষ্টভাবে মুছে ফেলুন।
উদাহরণস্বরূপ, যদি আপনার Node.js ফাংশনটি objectChanged নামে থাকে যার লিগ্যাসি 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 console অথবা 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 18 (অবঞ্চিত)
Node.js এর এই সংস্করণগুলির জন্য চলমান সহায়তা সম্পর্কিত গুরুত্বপূর্ণ তথ্যের জন্য সহায়তা সময়সূচী দেখুন।
Node.js সংস্করণ সেট করতে:
আপনি package.json ফাইলের engines ফিল্ডে সংস্করণটি সেট করতে পারেন যা initialization এর সময় আপনার functions/ ডিরেক্টরিতে তৈরি করা হয়েছিল। উদাহরণস্বরূপ, শুধুমাত্র সংস্করণ 20 ব্যবহার করতে, package.json এ এই লাইনটি সম্পাদনা করুন:
"engines": {"node": "22"}
আপনি যদি Yarn প্যাকেজ ম্যানেজার ব্যবহার করেন অথবা engines ফিল্ডের জন্য অন্যান্য নির্দিষ্ট প্রয়োজনীয়তা থাকে, তাহলে আপনি firebase.json এ Firebase SDK for Cloud Functions এর রানটাইম সেট করতে পারেন:
{
"functions": {
"runtime": "nodejs22"
}
}
CLI package.json এ আলাদাভাবে সেট করা যেকোনো মান বা পরিসরের পরিবর্তে firebase.json এ সেট করা মান ব্যবহার করে।
আপনার Node.js রানটাইম আপগ্রেড করুন
আপনার Node.js রানটাইম আপগ্রেড করতে:
- নিশ্চিত করুন যে আপনার প্রকল্পটি ব্লেজ মূল্য পরিকল্পনায় রয়েছে।
- নিশ্চিত করুন যে আপনি Firebase CLI v11.18.0 বা তার পরবর্তী সংস্করণ ব্যবহার করছেন।
- আপনার
functions/ডিরেক্টরিতে ইনিশিয়ালাইজেশনের সময় তৈরি করাpackage.jsonফাইলেenginesমান পরিবর্তন করুন। উদাহরণস্বরূপ, যদি আপনি 16 সংস্করণ থেকে 18 সংস্করণে আপগ্রেড করেন, তাহলে এন্ট্রিটি এইরকম দেখাবে:"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 পদ্ধতি ব্যবহার করুন। এই পদ্ধতিটি RuntimeOptions ইন্টারফেসের সাথে সামঞ্জস্যপূর্ণ একটি JSON অবজেক্ট গ্রহণ করে, যা minInstances এর মান নির্ধারণ করে। উদাহরণস্বরূপ, এই ফাংশনটি উষ্ণ রাখার জন্য সর্বনিম্ন 5টি ইনস্ট্যান্স সেট করে:
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 এর জন্য মান নির্ধারণ করে। উদাহরণস্বরূপ, এই ফাংশনটি একটি কাল্পনিক লিগ্যাসি ডাটাবেসকে ওভারলেড না করার জন্য 100 টি ইনস্ট্যান্সের সীমা নির্ধারণ করে:
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 সীমা পর্যন্ত স্কেল করা হয়, তাহলে নতুন অনুরোধগুলি 30 সেকেন্ডের জন্য সারিবদ্ধ করা হয় এবং তারপর 429 Too Many Requests এর প্রতিক্রিয়া কোড দিয়ে প্রত্যাখ্যান করা হয় যদি ততক্ষণে কোনও উদাহরণ উপলব্ধ না থাকে।
সর্বাধিক ইন্সট্যান্স সেটিংস ব্যবহারের সর্বোত্তম অনুশীলন সম্পর্কে আরও জানতে, maxInstances ব্যবহারের জন্য এই সর্বোত্তম অনুশীলনগুলি দেখুন।
একটি পরিষেবা অ্যাকাউন্ট সেট করুন
প্রথম প্রজন্মের ফাংশনের জন্য ডিফল্ট পরিষেবা অ্যাকাউন্ট, PROJECT_ID @ appspot.gserviceaccount.com (যার নাম অ্যাপ ইঞ্জিন ডিফল্ট পরিষেবা অ্যাকাউন্ট ), এর বিভিন্ন ধরণের অনুমতি রয়েছে যা আপনাকে অন্যান্য Firebase এবং Google ক্লাউড পরিষেবার সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়।
আপনি হয়তো ডিফল্ট সার্ভিস অ্যাকাউন্ট ওভাররাইড করতে চাইবেন এবং একটি ফাংশনকে প্রয়োজনীয় রিসোর্সের মধ্যে সীমাবদ্ধ রাখতে চাইবেন। আপনি একটি কাস্টম সার্ভিস অ্যাকাউন্ট তৈরি করে এবং .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 এর মান নির্ধারণ করে। উদাহরণস্বরূপ, এই স্টোরেজ ফাংশনটি 1GB মেমরি ব্যবহার করে এবং 300 সেকেন্ড পরে টাইমআউট করে:
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 , অথবা 9 মিনিট। একটি ফাংশনে প্রদত্ত মেমোরির পরিমাণ ফাংশনের জন্য বরাদ্দকৃত CPU এর সাথে মিলে যায়, যেমনটি memory জন্য বৈধ মানের এই তালিকায় বিস্তারিতভাবে বর্ণনা করা হয়েছে:
-
128MB— ২০০ মেগাহার্টজ -
256MB— ৪০০ মেগাহার্টজ -
512MB— ৮০০ মেগাহার্টজ -
1GB— ১.৪ গিগাহার্টজ -
2GB— ২.৪ গিগাহার্টজ -
4GB— ৪.৮ গিগাহার্টজ -
8GB— ৪.৮ গিগাহার্টজ
Google Cloud কনসোলে মেমরি বরাদ্দ এবং সময়সীমা সেট করতে:
- গুগল Google Cloud কনসোলে বাম মেনু থেকে Cloud Functions নির্বাচন করুন।
- ফাংশন তালিকা থেকে একটি ফাংশনের নামের উপর ক্লিক করে সেটি নির্বাচন করুন।
- উপরের মেনুতে সম্পাদনা আইকনে ক্লিক করুন।
- মেমোরি অ্যালোকেশন লেবেলযুক্ত ড্রপ-ডাউন মেনু থেকে একটি মেমোরি অ্যালোকেশন নির্বাচন করুন।
- উন্নত বিকল্পগুলি প্রদর্শন করতে আরও ক্লিক করুন, এবং টাইমআউট টেক্সট বক্সে কয়েক সেকেন্ড লিখুন।
- ফাংশনটি আপডেট করতে সংরক্ষণ করুন এ ক্লিক করুন।