ফাংশন পরিচালনা করুন


আপনি Firebase CLI কমান্ড ব্যবহার করে বা আপনার ফাংশন সোর্স কোডে রানটাইম বিকল্প সেট করে ফাংশন স্থাপন, মুছে ফেলতে এবং সংশোধন করতে পারেন।

ফাংশন স্থাপন

ফাংশন স্থাপন করতে, এই Firebase CLI কমান্ডটি চালান:

firebase deploy --only functions

ডিফল্টরূপে, Firebase CLI একই সময়ে আপনার উত্সের ভিতরে সমস্ত ফাংশন স্থাপন করে। যদি আপনার প্রজেক্টে 5টির বেশি ফাংশন থাকে, আমরা সুপারিশ করি যে আপনি শুধুমাত্র আপনার সম্পাদনা করা ফাংশনগুলি স্থাপন করতে নির্দিষ্ট ফাংশনের নামের সাথে --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 আপনার সোর্স পার্স করে এবং ফাইল থেকে মুছে ফেলা যে কোনো ফাংশন প্রোডাকশন থেকে সরিয়ে দেয়।

একটি ফাংশনের নাম, অঞ্চল বা ট্রিগার পরিবর্তন করুন

আপনি যদি অঞ্চলগুলির পুনঃনামকরণ বা পরিবর্তন করেন বা উত্পাদন ট্র্যাফিক পরিচালনা করে এমন ফাংশনগুলির জন্য ট্রিগার করেন তবে পরিবর্তনের সময় ইভেন্টগুলি হারানো এড়াতে এই বিভাগে পদক্ষেপগুলি অনুসরণ করুন৷ আপনি এই পদক্ষেপগুলি অনুসরণ করার আগে, প্রথমে নিশ্চিত করুন যে আপনার ফাংশন idempotent , যেহেতু পরিবর্তনের সময় আপনার ফাংশনের নতুন সংস্করণ এবং পুরানো সংস্করণ উভয়ই একই সময়ে চলবে৷

একটি ফাংশন পুনঃনামকরণ করুন

একটি ফাংশন পুনঃনামকরণ করতে, আপনার উত্সে ফাংশনের একটি নতুন নামকরণকৃত সংস্করণ তৈরি করুন এবং তারপরে দুটি পৃথক স্থাপনার কমান্ড চালান। প্রথম কমান্ডটি নতুন নামযুক্ত ফাংশন স্থাপন করে এবং দ্বিতীয় কমান্ডটি পূর্বে স্থাপন করা সংস্করণটিকে সরিয়ে দেয়। উদাহরণস্বরূপ, যদি আপনার 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

একটি ফাংশনের অঞ্চল বা অঞ্চল পরিবর্তন করুন

আপনি যদি এমন একটি ফাংশনের জন্য নির্দিষ্ট অঞ্চলগুলি পরিবর্তন করেন যা উত্পাদন ট্র্যাফিক পরিচালনা করে, আপনি এই পদক্ষেপগুলি ক্রমানুসারে সম্পাদন করে ইভেন্ট ক্ষতি রোধ করতে পারেন:

  1. ফাংশন পুনঃনামকরণ করুন, এবং পছন্দ অনুযায়ী এর অঞ্চল বা অঞ্চল পরিবর্তন করুন।
  2. পুনঃনামকৃত ফাংশন স্থাপন করুন, যার ফলে উভয় অঞ্চলের সেটে সাময়িকভাবে একই কোড চালানো হয়।
  3. আগের ফাংশন মুছুন।

উদাহরণস্বরূপ, যদি আপনার কাছে 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 চালানোর মাধ্যমে একটি ফাংশনের ইভেন্টের ধরন পরিবর্তন করা সম্ভব নয়। ত্রুটিগুলি এড়াতে, এই পদ্ধতি দ্বারা একটি ফাংশনের ট্রিগার প্রকার পরিবর্তন করুন:

  1. পছন্দসই ট্রিগার প্রকারের সাথে একটি নতুন ফাংশন অন্তর্ভুক্ত করতে উত্স কোডটি পরিবর্তন করুন৷
  2. ফাংশনটি স্থাপন করুন, যার ফলে অস্থায়ীভাবে পুরানো এবং নতুন উভয় ফাংশন চালানো হয়।
  3. 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 ক্লাউড কনসোল বা gcloud CLI এর মাধ্যমে)।

যদি আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোতে Google ক্লাউড কনসোল বা gcloud CLI-এর মাধ্যমে রানটাইম বিকল্পগুলি ম্যানুয়ালি সেট করা জড়িত থাকে এবং আপনি প্রতিটি স্থাপনায় এই মানগুলিকে ওভাররাইড করতে না চান, তাহলে preserveExternalChanges বিকল্পটিকে true সেট করুন। এই বিকল্পটি true সেট করার সাথে, Firebase আপনার কোডে সেট করা রানটাইম বিকল্পগুলিকে নিম্নলিখিত অগ্রাধিকারের সাথে আপনার ফাংশনের বর্তমানে-নিয়োজিত সংস্করণের সেটিংসের সাথে মার্জ করে:

  1. বিকল্প ফাংশন কোডে সেট করা আছে: বহিরাগত পরিবর্তন ওভাররাইড করুন।
  2. ফাংশন কোডে বিকল্পটি RESET_VALUE এ সেট করা হয়েছে: ডিফল্ট মান সহ বহিরাগত পরিবর্তনগুলি ওভাররাইড করুন৷
  3. বিকল্প ফাংশন কোডে সেট করা নেই, কিন্তু বর্তমানে স্থাপন করা ফাংশনে সেট করা হয়েছে: স্থাপন করা ফাংশনে নির্দিষ্ট করা বিকল্পটি ব্যবহার করুন।

preserveExternalChanges: true বিকল্পটি বেশিরভাগ পরিস্থিতিতে সুপারিশ করা হয় না কারণ আপনার কোডটি আর আপনার ফাংশনের জন্য রানটাইম বিকল্পের জন্য সত্যের সম্পূর্ণ উৎস হবে না। আপনি যদি এটি ব্যবহার করেন তবে Google ক্লাউড কনসোল দেখুন বা একটি ফাংশনের সম্পূর্ণ কনফিগারেশন দেখতে gcloud CLI ব্যবহার করুন৷

Node.js সংস্করণ সেট করুন

Cloud Functions জন্য Firebase SDK Node.js রানটাইম নির্বাচন করার অনুমতি দেয়। আপনি এই সমর্থিত Node.js সংস্করণগুলির একটির সাথে সম্পর্কিত রানটাইম পরিবেশে একচেটিয়াভাবে একটি প্রকল্পে সমস্ত ফাংশন চালানোর জন্য চয়ন করতে পারেন:

  • Node.js 20 (প্রিভিউ)
  • Node.js 18
  • Node.js 16
  • Node.js 14

Node.js সংস্করণ সেট করতে:

আপনি package.json ফাইলের engines ফিল্ডে সংস্করণ সেট করতে পারেন যা শুরু করার সময় আপনার functions/ ডিরেক্টরিতে তৈরি হয়েছিল। উদাহরণস্বরূপ, শুধুমাত্র সংস্করণ 18 ব্যবহার করতে, package.json এ এই লাইনটি সম্পাদনা করুন:

  "engines": {"node": "18"}

আপনি যদি ইয়ার্ন প্যাকেজ ম্যানেজার ব্যবহার করেন বা engines ক্ষেত্রের জন্য আপনার অন্যান্য নির্দিষ্ট প্রয়োজনীয়তা থাকে, তাহলে আপনি পরিবর্তে firebase.jsonCloud Functions জন্য Firebase SDK-এর রানটাইম সেট করতে পারেন:

  {
    "functions": {
      "runtime": "nodejs18" // or nodejs14, nodejs16 or nodejs20
    }
  }

CLI firebase.json এ সেট করা মান ব্যবহার করে package.json .json-এ আপনি আলাদাভাবে সেট করা যেকোনো মান বা পরিসরের চেয়ে।

আপনার Node.js রানটাইম আপগ্রেড করুন

আপনার Node.js রানটাইম আপগ্রেড করতে:

  1. নিশ্চিত করুন যে আপনার প্রকল্পটি ব্লেজ প্রাইসিং প্ল্যানে রয়েছে।
  2. নিশ্চিত করুন যে আপনি Firebase CLI v11.18.0 বা তার পরবর্তী ব্যবহার করছেন।
  3. শুরু করার সময় আপনার functions/ ডিরেক্টরিতে তৈরি করা package.json ফাইলে engines মান পরিবর্তন করুন। উদাহরণস্বরূপ, আপনি যদি 16 সংস্করণ থেকে 18 সংস্করণে আপগ্রেড করছেন, তাহলে এন্ট্রিটি এইরকম হওয়া উচিত: "engines": {"node": "18"}
  4. ঐচ্ছিকভাবে, Firebase Local Emulator Suite ব্যবহার করে আপনার পরিবর্তনগুলি পরীক্ষা করুন।
  5. সমস্ত ফাংশন পুনরায় স্থাপন করুন।

স্কেলিং আচরণ নিয়ন্ত্রণ করুন

ডিফল্টরূপে, 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 ব্যবহার করার জন্য এই সেরা অনুশীলনগুলি দেখুন।

টাইমআউট এবং মেমরি বরাদ্দ সেট করুন

কিছু ক্ষেত্রে, আপনার ফাংশনগুলির একটি দীর্ঘ সময়সীমার মান বা মেমরির একটি বড় বরাদ্দের জন্য বিশেষ প্রয়োজনীয়তা থাকতে পারে। আপনি Google ক্লাউড কনসোলে বা ফাংশন সোর্স কোডে (শুধুমাত্র ফায়ারবেস) এই মানগুলি সেট করতে পারেন৷

ফাংশন সোর্স কোডে মেমরি বরাদ্দ এবং টাইমআউট সেট করতে, 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 — 200MHz
  • 256MB — 400MHz
  • 512MB — 800MHz
  • 1GB - 1.4 GHz
  • 2GB - 2.4 GHz
  • 4GB — 4.8 GHz
  • 8GB - 4.8 GHz

Google Cloud কনসোলে মেমরি বরাদ্দ এবং সময়সীমা সেট করতে:

  1. Google Google Cloud কনসোলে বাম মেনু থেকে ক্লাউড ফাংশন নির্বাচন করুন।
  2. ফাংশন তালিকায় তার নামের উপর ক্লিক করে একটি ফাংশন নির্বাচন করুন।
  3. উপরের মেনুতে সম্পাদনা আইকনে ক্লিক করুন।
  4. মেমরি বরাদ্দ লেবেলযুক্ত ড্রপ-ডাউন মেনু থেকে একটি মেমরি বরাদ্দ নির্বাচন করুন।
  5. উন্নত বিকল্পগুলি প্রদর্শন করতে আরও ক্লিক করুন, এবং টাইমআউট পাঠ্য বাক্সে কয়েক সেকেন্ড লিখুন।
  6. ফাংশন আপডেট করতে সংরক্ষণ করুন ক্লিক করুন.
,


আপনি Firebase CLI কমান্ড ব্যবহার করে বা আপনার ফাংশন সোর্স কোডে রানটাইম বিকল্প সেট করে ফাংশন স্থাপন, মুছে ফেলতে এবং সংশোধন করতে পারেন।

ফাংশন স্থাপন

ফাংশন স্থাপন করতে, এই Firebase CLI কমান্ডটি চালান:

firebase deploy --only functions

ডিফল্টরূপে, Firebase CLI একই সময়ে আপনার উত্সের ভিতরে সমস্ত ফাংশন স্থাপন করে। যদি আপনার প্রজেক্টে 5টির বেশি ফাংশন থাকে, আমরা সুপারিশ করি যে আপনি শুধুমাত্র আপনার সম্পাদনা করা ফাংশনগুলি স্থাপন করতে নির্দিষ্ট ফাংশনের নামের সাথে --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 আপনার সোর্স পার্স করে এবং ফাইল থেকে মুছে ফেলা যে কোনো ফাংশন প্রোডাকশন থেকে সরিয়ে দেয়।

একটি ফাংশনের নাম, অঞ্চল বা ট্রিগার পরিবর্তন করুন

আপনি যদি অঞ্চলগুলির পুনঃনামকরণ বা পরিবর্তন করেন বা উত্পাদন ট্র্যাফিক পরিচালনা করে এমন ফাংশনগুলির জন্য ট্রিগার করেন তবে পরিবর্তনের সময় ইভেন্টগুলি হারানো এড়াতে এই বিভাগে পদক্ষেপগুলি অনুসরণ করুন৷ আপনি এই পদক্ষেপগুলি অনুসরণ করার আগে, প্রথমে নিশ্চিত করুন যে আপনার ফাংশন idempotent , যেহেতু পরিবর্তনের সময় আপনার ফাংশনের নতুন সংস্করণ এবং পুরানো সংস্করণ উভয়ই একই সময়ে চলবে৷

একটি ফাংশন পুনঃনামকরণ করুন

একটি ফাংশন পুনঃনামকরণ করতে, আপনার উত্সে ফাংশনের একটি নতুন নামকরণকৃত সংস্করণ তৈরি করুন এবং তারপরে দুটি পৃথক স্থাপনার কমান্ড চালান। প্রথম কমান্ডটি নতুন নামযুক্ত ফাংশন স্থাপন করে এবং দ্বিতীয় কমান্ডটি পূর্বে স্থাপন করা সংস্করণটিকে সরিয়ে দেয়। উদাহরণস্বরূপ, যদি আপনার 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

একটি ফাংশনের অঞ্চল বা অঞ্চল পরিবর্তন করুন

আপনি যদি এমন একটি ফাংশনের জন্য নির্দিষ্ট অঞ্চলগুলি পরিবর্তন করেন যা উত্পাদন ট্র্যাফিক পরিচালনা করে, আপনি এই পদক্ষেপগুলি ক্রমানুসারে সম্পাদন করে ইভেন্ট ক্ষতি রোধ করতে পারেন:

  1. ফাংশন পুনঃনামকরণ করুন, এবং পছন্দ অনুযায়ী এর অঞ্চল বা অঞ্চল পরিবর্তন করুন।
  2. পুনঃনামকৃত ফাংশন স্থাপন করুন, যার ফলে উভয় অঞ্চলের সেটে সাময়িকভাবে একই কোড চালানো হয়।
  3. আগের ফাংশন মুছুন।

উদাহরণস্বরূপ, যদি আপনার কাছে 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 চালানোর মাধ্যমে একটি ফাংশনের ইভেন্টের ধরন পরিবর্তন করা সম্ভব নয়। ত্রুটিগুলি এড়াতে, এই পদ্ধতি দ্বারা একটি ফাংশনের ট্রিগার প্রকার পরিবর্তন করুন:

  1. পছন্দসই ট্রিগার প্রকারের সাথে একটি নতুন ফাংশন অন্তর্ভুক্ত করতে উত্স কোডটি পরিবর্তন করুন৷
  2. ফাংশনটি স্থাপন করুন, যার ফলে অস্থায়ীভাবে পুরানো এবং নতুন উভয় ফাংশন চালানো হয়।
  3. 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 ক্লাউড কনসোল বা gcloud CLI এর মাধ্যমে)।

যদি আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোতে Google ক্লাউড কনসোল বা gcloud CLI-এর মাধ্যমে রানটাইম বিকল্পগুলি ম্যানুয়ালি সেট করা জড়িত থাকে এবং আপনি প্রতিটি স্থাপনায় এই মানগুলিকে ওভাররাইড করতে না চান, তাহলে preserveExternalChanges বিকল্পটিকে true সেট করুন। এই বিকল্পটি true সেট করার সাথে, Firebase আপনার কোডে সেট করা রানটাইম বিকল্পগুলিকে নিম্নলিখিত অগ্রাধিকারের সাথে আপনার ফাংশনের বর্তমানে-নিয়োজিত সংস্করণের সেটিংসের সাথে মার্জ করে:

  1. বিকল্প ফাংশন কোডে সেট করা আছে: বহিরাগত পরিবর্তন ওভাররাইড করুন।
  2. ফাংশন কোডে বিকল্পটি RESET_VALUE এ সেট করা হয়েছে: ডিফল্ট মান সহ বহিরাগত পরিবর্তনগুলি ওভাররাইড করুন৷
  3. বিকল্প ফাংশন কোডে সেট করা নেই, কিন্তু বর্তমানে স্থাপন করা ফাংশনে সেট করা হয়েছে: স্থাপন করা ফাংশনে নির্দিষ্ট করা বিকল্পটি ব্যবহার করুন।

preserveExternalChanges: true বিকল্পটি বেশিরভাগ পরিস্থিতিতে সুপারিশ করা হয় না কারণ আপনার কোডটি আর আপনার ফাংশনের জন্য রানটাইম বিকল্পের জন্য সত্যের সম্পূর্ণ উৎস হবে না। আপনি যদি এটি ব্যবহার করেন তবে Google ক্লাউড কনসোল দেখুন বা একটি ফাংশনের সম্পূর্ণ কনফিগারেশন দেখতে gcloud CLI ব্যবহার করুন৷

Node.js সংস্করণ সেট করুন

Cloud Functions জন্য Firebase SDK Node.js রানটাইম নির্বাচন করার অনুমতি দেয়। আপনি এই সমর্থিত Node.js সংস্করণগুলির একটির সাথে সম্পর্কিত রানটাইম পরিবেশে একচেটিয়াভাবে একটি প্রকল্পে সমস্ত ফাংশন চালানোর জন্য চয়ন করতে পারেন:

  • Node.js 20 (প্রিভিউ)
  • Node.js 18
  • Node.js 16
  • Node.js 14

Node.js সংস্করণ সেট করতে:

আপনি package.json ফাইলের engines ফিল্ডে সংস্করণ সেট করতে পারেন যা শুরু করার সময় আপনার functions/ ডিরেক্টরিতে তৈরি হয়েছিল। উদাহরণস্বরূপ, শুধুমাত্র সংস্করণ 18 ব্যবহার করতে, package.json এ এই লাইনটি সম্পাদনা করুন:

  "engines": {"node": "18"}

আপনি যদি ইয়ার্ন প্যাকেজ ম্যানেজার ব্যবহার করেন বা engines ক্ষেত্রের জন্য আপনার অন্যান্য নির্দিষ্ট প্রয়োজনীয়তা থাকে, তাহলে আপনি পরিবর্তে firebase.jsonCloud Functions জন্য Firebase SDK-এর রানটাইম সেট করতে পারেন:

  {
    "functions": {
      "runtime": "nodejs18" // or nodejs14, nodejs16 or nodejs20
    }
  }

CLI firebase.json এ সেট করা মান ব্যবহার করে package.json .json-এ আপনি আলাদাভাবে সেট করা যেকোনো মান বা পরিসরের চেয়ে।

আপনার Node.js রানটাইম আপগ্রেড করুন

আপনার Node.js রানটাইম আপগ্রেড করতে:

  1. নিশ্চিত করুন যে আপনার প্রকল্পটি ব্লেজ প্রাইসিং প্ল্যানে রয়েছে।
  2. নিশ্চিত করুন যে আপনি Firebase CLI v11.18.0 বা তার পরবর্তী ব্যবহার করছেন।
  3. শুরু করার সময় আপনার functions/ ডিরেক্টরিতে তৈরি করা package.json ফাইলে engines মান পরিবর্তন করুন। উদাহরণস্বরূপ, আপনি যদি 16 সংস্করণ থেকে 18 সংস্করণে আপগ্রেড করছেন, তাহলে এন্ট্রিটি এইরকম হওয়া উচিত: "engines": {"node": "18"}
  4. ঐচ্ছিকভাবে, Firebase Local Emulator Suite ব্যবহার করে আপনার পরিবর্তনগুলি পরীক্ষা করুন।
  5. সমস্ত ফাংশন পুনরায় স্থাপন করুন।

স্কেলিং আচরণ নিয়ন্ত্রণ করুন

ডিফল্টরূপে, 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 ব্যবহার করার জন্য এই সেরা অনুশীলনগুলি দেখুন।

টাইমআউট এবং মেমরি বরাদ্দ সেট করুন

কিছু ক্ষেত্রে, আপনার ফাংশনগুলির একটি দীর্ঘ সময়সীমার মান বা মেমরির একটি বড় বরাদ্দের জন্য বিশেষ প্রয়োজনীয়তা থাকতে পারে। আপনি Google ক্লাউড কনসোলে বা ফাংশন সোর্স কোডে (শুধুমাত্র ফায়ারবেস) এই মানগুলি সেট করতে পারেন৷

ফাংশন সোর্স কোডে মেমরি বরাদ্দ এবং টাইমআউট সেট করতে, 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 — 200MHz
  • 256MB — 400MHz
  • 512MB — 800MHz
  • 1GB - 1.4 GHz
  • 2GB - 2.4 GHz
  • 4GB — 4.8 GHz
  • 8GB - 4.8 GHz

Google Cloud কনসোলে মেমরি বরাদ্দ এবং সময়সীমা সেট করতে:

  1. Google Google Cloud কনসোলে বাম মেনু থেকে ক্লাউড ফাংশন নির্বাচন করুন।
  2. ফাংশন তালিকায় তার নামের উপর ক্লিক করে একটি ফাংশন নির্বাচন করুন।
  3. উপরের মেনুতে সম্পাদনা আইকনে ক্লিক করুন।
  4. মেমরি বরাদ্দ লেবেলযুক্ত ড্রপ-ডাউন মেনু থেকে একটি মেমরি বরাদ্দ নির্বাচন করুন।
  5. উন্নত বিকল্পগুলি প্রদর্শন করতে আরও ক্লিক করুন, এবং টাইমআউট পাঠ্য বাক্সে কয়েক সেকেন্ড লিখুন।
  6. ফাংশন আপডেট করতে সংরক্ষণ করুন ক্লিক করুন.