Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now

ফাংশন স্থাপনা এবং রানটাইম বিকল্পগুলি পরিচালনা করুন

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

ফাংশন স্থাপন করুন

ফাংশন মোতায়েন করতে, এই ফায়ারবেস সিএলআই কমান্ডটি চালান:

$ firebase deploy --only functions

ডিফল্টরূপে, index.js সিএলআই একই সময়ে index.js ভিতরে সমস্ত কার্য index.js করে। আপনার প্রকল্পের চেয়ে বেশি 5 ফাংশন রয়েছে, তাহলে আমরা সুপারিশ করছি যে আপনি ব্যবহার করতে --only আপনি সম্পাদনা করেছেন শুধুমাত্র ফাংশন স্থাপন নির্দিষ্ট ফাংশন নাম দিয়ে পতাকা। এইভাবে নির্দিষ্ট ফাংশন স্থাপন করা স্থাপনার প্রক্রিয়াটিকে ত্বরান্বিত করে এবং আপনাকে ডিপ্লোয়মেন্ট কোটায় চালানো এড়াতে সহায়তা করে। উদাহরণ স্বরূপ:

$ firebase deploy --only functions:addMessage,functions:makeUppercase

বিপুল সংখ্যক ফাংশন মোতায়েন করার সময় আপনি মানকৃত কোটাকে ছাড়িয়ে যেতে পারেন এবং HTTP 429 বা 500 ত্রুটি বার্তা পেতে পারেন receive এটি সমাধানের জন্য, 10 বা তারও কম গ্রুপে ফাংশন স্থাপন করুন।

উপলব্ধ কমান্ডগুলির সম্পূর্ণ তালিকার জন্য ফায়ারবেস সিএলআই রেফারেন্সটি দেখুন।

ডিফল্টরূপে, ফায়ারবেস সিএলআই উত্স কোডের জন্য functions/ ফোল্ডারে দেখায়। আপনি firebase.json নিম্নলিখিত লাইনগুলি যুক্ত করে অন্য ফোল্ডারটি নির্দিষ্ট করতে পারেন:

"functions": {
  "source": "another-folder"
}

ফাংশন মুছুন

আপনি পূর্বে মোতায়েন করা ফাংশনগুলি এই উপায়ে মুছতে পারেন:

  • functions:delete সহ স্পষ্টভাবে ফায়ারবেস সি এল এলিতে functions:delete
  • স্পষ্টভাবে ফায়ারবেস কনসোলের ফাংশন তালিকায় প্রসঙ্গ মেনু ব্যবহার করে
  • কার্যনির্বাহী index.js আগে index.js

সমস্ত মুছে ফেলা অপারেশনগুলি আপনাকে উত্পাদন থেকে ফাংশনটি সরিয়ে দেওয়ার আগে আপনাকে নিশ্চিত করতে অনুরোধ করে।

ফায়ারবেস সিএলআই-তে স্পষ্টভাবে ফাংশন মোছা একাধিক যুক্তি পাশাপাশি ফাংশন গ্রুপকে সমর্থন করে এবং আপনাকে কোনও নির্দিষ্ট অঞ্চলে চলমান একটি ফাংশন নির্দিষ্ট করতে দেয়। এছাড়াও, আপনি নিশ্চিতকরণ প্রম্পটকে ওভাররাইড করতে পারেন।

# 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

অন্তর্নিহিত ফাংশন মোছার সাথে, index.js firebase deploy এবং ফাইল থেকে সরানো কোনও ফাংশন উত্পাদন থেকে সরিয়ে দেয়।

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

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

একটি ফাংশনটির নতুন নাম দিন

কোনও ফাংশনটির নতুন নামকরণের জন্য, index.js এ ফাংশনের একটি নতুন নামকরণ সংস্করণ তৈরি করুন এবং তারপরে দুটি পৃথক ডিপ্লোয়মেন্ট কমান্ড চালান। প্রথম কমান্ড নতুন নামকৃত ফাংশন স্থাপন করে এবং দ্বিতীয় কমান্ড পূর্বের মোতায়েন করা সংস্করণটি সরিয়ে দেয়। উদাহরণস্বরূপ, যদি আপনি একটি ফাংশন বলা আছে যদি webhook আছে যাতে আপনি পরিবর্তন করতে চান webhookNew , কোড সংশোধন নিম্নরূপ:

// before
const functions = require('firebase-functions');

exports.webhook = functions.https.onRequest((req, res) => {
    res.send("Hello");
});

// after
const functions = require('firebase-functions');

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 1 এর ডিফল্ট ফাংশন অঞ্চলে রয়েছে এবং আপনি asia-northeast1 স্থানান্তর করতে চান তবে আপনাকে প্রথমে ফাংশনটির নাম পরিবর্তন করতে এবং অঞ্চলটি সংশোধন করতে আপনার উত্স কোডটি পরিবর্তন করতে হবে ।

// before
const functions = require('firebase-functions');

exports.webhook = functions
    .https.onRequest((req, res) => {
            res.send("Hello");
    });

// after
const functions = require('firebase-functions');

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 চলছে।

কোনও ফাংশনের ট্রিগার ধরণের পরিবর্তন করুন

সময়ের সাথে সাথে ফায়ারবেস মোতায়েনের জন্য আপনার ক্লাউড ফাংশনগুলি বিকাশ করার সাথে সাথে আপনাকে বিভিন্ন কারণে কোনও ফাংশনের ট্রিগার ধরণের পরিবর্তন করতে হতে পারে। উদাহরণস্বরূপ, আপনি এটি করতে চাইতে পারেন:

  • লিগ্যাসি স্টোরেজ থেকে onChange ইভেন্টটি onFinalize , onDelete , onArchive এবং onMetadataUpdate । (এটি সম্পর্কে v1 বা v2 আপগ্রেড গাইডে বিটাতে আরও জানুন)।
  • এক ধরণের ফায়ারবেস রিয়েলটাইম ডেটাবেস বা ক্লাউড ফায়ার onWrite ইভেন্ট থেকে অন্য একটিতে পরিবর্তন করুন, যেমন জেনেরিক onWrite ইভেন্টটি দানাদার onCreate ইভেন্টে পরিণত করুন।

কেবল উত্স কোড পরিবর্তন করে এবং firebase deploy চালিয়ে কোনও ফাংশনের ইভেন্টের ধরণের পরিবর্তন সম্ভব নয়। ত্রুটিগুলি এড়ানোর জন্য, এই পদ্ধতি দ্বারা কোনও ফাংশনের ট্রিগার প্রকারটি পরিবর্তন করুন:

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

উদাহরণস্বরূপ, যদি আপনার ফাংশন objectChanged যা onChange ইভেন্ট প্রকারের লিগ্যাসি রয়েছে এবং আপনি এটি onFinalize পরিবর্তন করতে চান তবে প্রথমে ফাংশনটির নাম পরিবর্তন করুন এবং onFinalize - onFinalize ইভেন্ট প্রকারের জন্য এটি সম্পাদনা করতে চান।

// before
const functions = require('firebase-functions');

exports.objectChanged = functions.storage.object().onChange((object) => {
    return console.log('File name is: ', object.name);
});

// after
const functions = require('firebase-functions');

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

রানটাইম বিকল্পগুলি সেট করুন

ফায়ারবেসের জন্য ক্লাউড ফাংশন আপনাকে রানটাইম বিকল্পগুলি যেমন নোড.জেএস রানটাইম সংস্করণ এবং প্রতি-ফাংশন টাইমআউট এবং মেমরি বরাদ্দকে বেছে নিতে দেয়।

নোড.জেএস সংস্করণ সেট করুন

ক্লাউড ফাংশনস ২.০.০ এবং এর চেয়ে বেশি জন্য ফায়ারবেস এসডিকে নোড.জেএস রানটাইম নির্বাচনের অনুমতি দেয়। এই সমর্থিত নোড.জেএস সংস্করণগুলির মধ্যে একটির সাথে সঙ্গতিপূর্ণ রানটাইম পরিবেশে আপনি একটি প্রকল্পের সমস্ত ফাংশন পরিচালনা করতে চয়ন করতে পারেন:

  • নোড.জেএস 14 (বিটা)
  • নোড.জেএস 12
  • নোড.জেএস 10
  • নোড.জেএস 8 (জুন 820, অবহিত) নোড.জেএস 8 রানটাইম ফাংশন স্থাপন 15 ফেব্রুয়ারী, 2020 এ ফায়ারবেস সিএলআইতে অক্ষম করা হয়েছিল already ইতিমধ্যে মোতায়েন করা ক্রিয়াকলাপগুলি ভবিষ্যতের কোনও পর্যায়ে থামবে; আপনি যদি নোড.জেএস 8 রানটাইমটিতে ফাংশন স্থাপন করেছেন তবে আমরা আপনাকে নোড.জেএস 12 রানটাইমে আপগ্রেড করার পরামর্শ দিচ্ছি

নোড.জেএস সংস্করণ সেট করতে:

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

  "engines": {"node": "12"}

engines ক্ষেত্র প্রয়োজন; আপনাকে কার্যবিবরণী স্থাপন ও পরিচালনা করার জন্য এটি অবশ্যই সমর্থিত নোড.জেএস সংস্করণগুলির একটি নির্দিষ্ট করতে হবে । বর্তমানে firebase init functions এই ক্ষেত্রটিকে 12 সেট করে।

আপনার নোড.জেএস রানটাইম আপগ্রেড করুন

আপনার নোড.জেএস রানটাইম আপগ্রেড করতে:

  1. আপনার প্রকল্পটি ব্লেজ দামের পরিকল্পনায় রয়েছে তা নিশ্চিত করুন।
  2. আপনি ফায়ারবেস সিএলআই v8.6.0 বা তার পরে ব্যবহার করছেন তা নিশ্চিত করুন।
  3. প্রারম্ভিক সময় আপনার functions/ ডিরেক্টরিতে তৈরি হওয়া package.json ফাইলটিতে engines মান পরিবর্তন করুন। উদাহরণস্বরূপ, আপনি যদি সংস্করণ 10 থেকে 12 সংস্করণে আপগ্রেড করছেন তবে এন্ট্রিটি দেখতে হবে: "engines": {"node": "12"}
  4. Ptionচ্ছিকভাবে , ফায়ারবেস লোকাল এমুলেটর স্যুট ব্যবহার করে আপনার পরিবর্তনগুলি পরীক্ষা করুন।
  5. ফায়ারবেস সিএলআই ভি 8.1.0 বা তার পরে ব্যবহার করে পুনরায় চালনা করুন।

সময়সীমা এবং মেমরি বরাদ্দ সেট করুন

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

ফাংশন উত্স কোডে মেমরি বরাদ্দ এবং সময়সীমা সেট করতে, ক্লাউড ফাংশনস 2.0.0 এর জন্য runWith এসডিকে প্রবর্তিত runWith পরামিতি ব্যবহার করুন। এই রানটাইম বিকল্পটি RuntimeOptions ইন্টারফেসের সাথে সঙ্গতিপূর্ণ একটি JSON অবজেক্ট গ্রহণ করে, যা timeoutSeconds এবং memory মান নির্ধারণ করে। উদাহরণস্বরূপ, এই স্টোরেজ ফাংশনটি 1 গিগাবাইট মেমরি ব্যবহার করে এবং 300 সেকেন্ড পরে টাইম আউট করে:

const runtimeOpts = {
  timeoutSeconds: 300,
  memory: '1GB'
}

exports.myStorageFunction = functions
  .runWith(runtimeOpts)
  .storage
  .object()
  .onFinalize((object) = > {
    // do some complicated things that take a lot of memory and time
  });

timeoutSeconds সর্বাধিক মান 540 বা 9 মিনিট। memory জন্য বৈধ মানগুলি হ'ল:

  • 128MB
  • 256MB
  • 512MB
  • 1GB
  • 2GB
  • 4GB
  • 8GB

গুগল ক্লাউড কনসোলে মেমরি বরাদ্দ এবং সময়সীমা সেট করতে:

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