Firebase এক্সটেনশনকে ফাংশন কিটে মাইগ্রেট করা

এই নির্দেশিকা আপনাকে দেখায় যে কীভাবে আপনার এক্সটেনশনগুলি বন্ধ হয়ে যাওয়া Firebase Extensions এনভায়রনমেন্ট থেকে একটি ফাংশন কিটে মাইগ্রেট করবেন যা আপনি Firebase (২য় প্রজন্ম) কোডবেসের জন্য আপনার নিজের Cloud Functions-এ ইনস্টল এবং ডিপ্লয় করতে পারেন।

Firebase Extensions এক্সটেনশন তৈরি, আপডেট ও সরানোর সব দিক ম্যানেজ করে। ফাংশন কিট এক্সটেনশনের ক্ষমতাকে সাধারণ ২য় জেনারেশন Cloud Functions for Firebase হিসেবে প্যাকেজ করে। ফাংশন কিট হল স্ট্যান্ডার্ড Cloud Functions, আপনি Firebase প্রোজেক্টের মধ্যে Firebase CLI ব্যবহার করে সেগুলি তৈরি, আপডেট, মুছে ফেলা এবং সমস্যার সমাধান করেন। এই নির্দেশিকা আপনাকে এখনই আপনার ফাংশন ম্যানেজ করতে এবং আপডেট উপলভ্য হলে তা গ্রহণ করতে প্রস্তুত করে।

এই গাইড জুড়ে, Stream Cloud Firestore to BigQuery এক্সটেনশন (firestore-bigquery-export) উদাহরণ হিসেবে ব্যবহার করা হয়েছে যা আপনাকে মাইগ্রেশনের প্রতিটি ধাপের জন্য কমান্ড ও কমান্ড আউটপুট দেখায়।

আপনার মাইগ্রেশন পাথ নির্ধারণ করা

Firebase সব Firebase Extensions প্রকাশকদের npm-এ প্রকাশিত ফাংশন কিট হিসেবে তাদের এক্সটেনশনের জন্য রিপ্লেসমেন্ট তৈরি করতে উৎসাহিত করে। আপনার এক্সটেনশনের জন্য ফাংশন কিট রিপ্লেসমেন্ট উপলভ্য কিনা তা আপনি কয়েকটি বিভিন্ন উপায়ে চেক করতে পারেন:

  • আপনার প্রোজেক্টের জন্য Firebase কনসোলের এক্সটেনশন পৃষ্ঠায় যান। আপনার ইনস্টল করা প্রতিটি এক্সটেনশন দেখায় যে সেটির ফাংশন কিট রিপ্লেসমেন্ট উপলভ্য আছে কিনা।
  • আপনার ইনস্টল করা কোন এক্সটেনশনের অফিসিয়াল রিপ্লেসমেন্ট আছে তা দেখতে টার্মিনালে আপনার Firebase প্রোজেক্টের মধ্যে firebase ext:list রান করুন:

    firebase ext:list --project my-project
    
    i  extensions: ensuring required API firebaseextensions.googleapis.com is enabled...
    ✔  extensions: required API firebaseextensions.googleapis.com is enabled
    i  extensions: list of extensions installed in my-project:
    ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐
    │ Extension                          │ Publisher │ Instance ID                    │ State  │ Version │ Your last update    │ Replacement Kit                                   │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/firestore-bigquery-export │ firebase  │ firestore-bigquery-export-zbrp │ ACTIVE │ 0.3.2   │ 2026-06-10 18:35:03 │ @firebase-function-kits/firestore-bigquery-export │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/storage-resize-images     │ firebase  │ storage-resize-images          │ ACTIVE │ 0.3.6   │ 2026-06-03 17:41:24 │                                                   │
    └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘
    ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
    

আপনার এক্সটেনশনের জন্য কোনও অফিসিয়াল ফাংশন কিট রিপ্লেসমেন্ট উপলভ্য থাকলে, আপনি npm-এ ফাংশন কিটে মাইগ্রেট করুন বিভাগ ব্যবহার করে এটি মাইগ্রেট করতে পারবেন।

আপনি যদি কোনও প্রকাশিত বিকল্প খুঁজে না পান, তাহলে আপনি এক্সটেনশন কোড ফর্ক করতে পারেন এবং আপনার নিজস্ব বিকল্প তৈরি করতে পারেন কারণ সব এক্সটেনশনই ওপেন সোর্স। এটি করতে, নিজেই তৈরি করা ফাংশন কিটে মাইগ্রেট করুন গাইড অনুসরণ করুন।

মাইগ্রেশন পাথ বেছে নিন: npm-এ ফাংশন কিটে মাইগ্রেট করুন নিজেই তৈরি করা ফাংশন কিটে মাইগ্রেট করুন

npm-এ ফাংশন কিটে মাইগ্রেট করুন

মাইগ্রেশন সংক্রান্ত পরিচিত সীমাবদ্ধতা চেক করা

এক্সটেনশন ইনস্ট্যান্স মাইগ্রেট করা শুরু করার আগে, আপনার সেট-আপে নিম্নলিখিত কোনও ফিচার ব্যবহার করা হয় কিনা তা চেক করুন, যেগুলির জন্য কোনও বিকল্প সমাধান প্রয়োজন বা যেগুলি এখনও ফাংশন কিটে কাজ করে না:

  • কাস্টম Docker রিপোজিটরি এবং KMS কী-এর জন্য ম্যানুয়াল সমাধান প্রয়োজন Cloud Functions for Firebase কাস্টম Docker রিপোজিটরি বা গ্রাহক-পরিচালিত এনক্রিপশন কী (KMS কী) কনফিগার করার জন্য রিপ্লেসমেন্ট সিস্টেম প্যারামিটার সমর্থন করে না। আপনার এক্সটেনশন যদি এই প্যারামিটারগুলির মধ্যে কোনও একটি কনফিগার করে, তাহলে FAQ সমাধান দেখুন।

শুরু করার আগে

আপনাকে Firebase CLI সেট-আপ করতে এবং Firebase প্রোজেক্ট ইনিশিয়ালাইজ করতে হবে। CLI ব্যবহার করার সময়, আপনি firebase-tools ভার্সন >= 15.32.0 ব্যবহার করছেন কিনা তা ভাল করে দেখে নিন, যেটিতে নতুন মাইগ্রেশন ও ফাংশন কিট কমান্ড আছে।

প্রয়োজনীয় অ্যাকাউন্ট সংক্রান্ত অনুমতি ও ভূমিকা

মাইগ্রেশনের সময় Firebase CLI-এর মাধ্যমে কী তৈরি ও কনফিগার করতে হবে তার উপর নির্ভর করে, Firebase ও Google Cloud-এর মাধ্যমে যাচাই করার জন্য আপনি যে অ্যাকাউন্ট ব্যবহার করছেন, সেটিতে নিম্নলিখিত ভূমিকা থাকতে হবে:

  • roles/firebaseextensions.editor
  • roles/cloudbuild.builds.editor
  • roles/artifactregistry.writer
  • roles/run.developer
  • roles/iam.serviceAccountUser
  • roles/iam.serviceAccountCreator
  • roles/cloudfunctions.admin (সর্বজনীন এন্ডপয়েন্টের জন্য আপনাকে setIamPermissions করতে হলে)
  • roles/secretmanager.admin (গোপন তথ্য ব্যবহার করলে)
  • roles/serviceusage.serviceUsageAdmin (আপনাকে নতুন API চালু করতে হলে)

আমরা এমন একটি অ্যাকাউন্ট ব্যবহার করার সাজেশন দিই যা আগে এক্সটেনশন ইনস্টল করেছে এবং ফাংশন ডিপ্লয় করেছে, কারণ এই অনুমতিগুলির বেশিরভাগই আগে থেকেই মঞ্জুর করা থাকবে। আপনার মাইগ্রেট করা অ্যাকাউন্টে আরও ভূমিকা যোগ করতে হলে, Google Cloud IAM নির্দেশাবলী অনুসরণ করুন।

CLI ওয়ার্কফ্লো বেছে নিন

এক্সটেনশন ইনস্ট্যান্স থেকে npm-এ উপলভ্য ফাংশন কিটে মাইগ্রেট করতে, নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বেছে নিন:

  • (সাজেস্ট করা) ext:migrate CLI কমান্ড ব্যবহার করে মাইগ্রেট করুন। এই কমান্ড এক্সটেনশনটি আনইনস্টল করার আগে আপনার ফাংশন কিট রিপ্লেসমেন্ট ডিপ্লয় করে।
  • ফাংশন কিট CLI কমান্ড ব্যবহার করে মাইগ্রেট করুন। আপনি এক্সটেনশন আপডেট, ফাংশন কিট ইনস্টল, এক্সটেনশনের মতো কনফিগার, কিট ডিপ্লয় ও এক্সটেনশন আনইনস্টল করার জন্য আলাদা আলাদা কমান্ড ব্যবহার করতে পারেন। এটি কমান্ডের ক্রম পরিবর্তন করা বা ধাপগুলির মধ্যে অতিরিক্ত কাজ করার জন্য আরও নমনীয়তা প্রদান করে।

ext:migrate ব্যবহার করে মাইগ্রেট করুন

প্রতিটি এক্সটেনশন ইনস্ট্যান্সের জন্য একবার, এটি রান করে মাইগ্রেশন শুরু করুন:

firebase ext:migrate --project <project-id>

এই কমান্ড আপনাকে এইসব ধাপের মধ্য দিয়ে নিয়ে যাবে:

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

আপনি যদি নির্দিষ্ট এক্সটেনশন বা এক্সটেনশন ইনস্ট্যান্স জানেন যা আপনি মাইগ্রেট করতে চান, নিম্নলিখিত কমান্ড-লাইন ফ্ল্যাগ ব্যবহার করে এটি নির্দিষ্ট করুন:

firebase ext:migrate --extension firebase/firestore-bigquery-export --project <project-id>

# or

firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --project <project-id>

আপনি যদি নির্দিষ্ট প্যাকেজটি জানেন যেখানে আপনি মাইগ্রেট করতে চান, বিশেষ করে যদি এটি Google দ্বারা তালিকাভুক্ত কোনও অফিসিয়াল রিপ্লেসমেন্ট প্যাকেজ না হয়, তাহলে --package ফ্ল্যাগ ব্যবহার করে এটি নির্দিষ্ট করুন:

firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --package @firebase-function-kits/firestore-bigquery-export --project <project-id>

ফাংশন কিট ডেপ্লয়মেন্ট যাচাই করুন

কিটের firebase deploy-এ কোনও সমস্যা ছিল না তা যাচাই করতে, কোনও লাইফসাইকেল হুক ট্রিগার করা হয়েছে কিনা তা দেখতে ডিপ্লয়মেন্ট লগ চেক করুন। Stream Cloud Firestore থেকে BigQuery-এর মতো জনপ্রিয় এক্সটেনশন, লাইফসাইকেল হুক ব্যবহার করে। ট্রিগার করা হলে লাইফসাইকেল হুক কেমন দেখায় তার একটি উদাহরণ নিচে দেওয়া হল:

i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i  functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project

এই লগ মেসেজগুলি নিম্নলিখিত বিষয়গুলি কনফার্ম করে:

  • একটি লাইফসাইকেল হুক পাওয়া গেছে এবং তা এক্সিকিউট করা হয়েছে।
  • লাইফসাইকেল হুকের সাথে যুক্ত টাস্কের সারিতে একটি টাস্ক সারিবদ্ধ করা হয়েছে।
  • Cloud Logging-এর একটি লিঙ্ক দেওয়া হয়েছে যাতে আপনি যাচাই করতে পারেন যে টাস্কটি কোনও সমস্যা ছাড়াই সম্পূর্ণ হয়েছে।

লগে কোনও সমস্যা নেই এবং আপনার টাস্ক কিউ ইভেন্ট সফলভাবে প্রসেস করা হয়েছে কিনা তা যাচাই করতে Google Cloud কনসোলে লগ লিঙ্ক ফলো করুন। লাইফসাইকেল ইভেন্ট সফলভাবে এক্সিকিউট না হলে, এটি রান করে আপনি আবার ট্রিগার করতে পারবেন:

firebase functions:lifecycle:run <hook-name> <codebase>

আপনি প্রথমবার ফাংশন কিট ইনস্ট্যান্স ডিপ্লয় করলে, রান করুন:

firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>

যাচাইকরণের সময় যেকোনও মুহূর্তে আপনি যদি এই মাইগ্রেশন বন্ধ করতে বা আগের অবস্থায় ফিরিয়ে আনতে চান, তাহলে এক্সটেনশন আনইনস্টল করুন লিঙ্কে দেওয়া নির্দেশাবলী অনুসরণ করে কিট আনইনস্টল করতে পারবেন।

আপনার ফাংশন কিটের প্রাথমিক ডিপ্লয়মেন্ট সম্পূর্ণ হয়েছে কিনা তা যাচাই করার পরে, আপনাকে যাচাই করতে হবে যে কিটের কার্যকারিতা প্রত্যাশা অনুযায়ী কাজ করছে কিনা। যেহেতু এক্সটেনশনটি এখনও চলছে, আপনাকে সতর্ক থাকতে হবে যে আপনি যা চেক করছেন তা শুধু দুটির মধ্যে একটি নয় কাজ করেছে, কারণ এক্সটেনশনটি কাজ করছে এবং কাজ চালিয়ে যাবে।

প্রসেসিং পরিবর্তন না হলে এবং এক্সটেনশন ও কিট থেকে ডুপ্লিকেট ফলাফল না পেলে, কিটের কার্যকারিতা ট্রিগার করার পরে কিটের লগ সরাসরি পরীক্ষা করা হল সবচেয়ে ভালো বিকল্প।

উদাহরণ: Cloud Firestore থেকে BigQuery-এ স্ট্রিম করুন

Stream Cloud Firestore থেকে BigQuery এক্সটেনশন ব্যবহার করে, Raw Changelog Table (*_raw_changelog) এবং লেটেস্ট ভিউ টেবিল (*_raw_latest) উভয় জায়গাতেই লেখার সময়, কিট ও এক্সটেনশনে একই ইভেন্ট ডেলিভার করা হলে, ডুপ্লিকেট এন্ট্রি সরিয়ে দেওয়া হবে। তাই, কিট কাজ করছে কিনা তা যাচাই করার জন্য আপনি BigQuery-তে কোনও সারি বা ডুপ্লিকেট সারির উপস্থিতি ব্যবহার করতে পারবেন না।

আপনি firebase functions:logs ব্যবহার করে আপনার Firestore সংগ্রহে লেখার কিছুক্ষণ পরেই ফাংশন লগ দেখতে পারেন এবং একটি লগ এন্ট্রি খুঁজতে পারেন যা নির্দেশ করে যে এটি সফলভাবে একটি লেখা প্রসেস করেছে। ডিফল্ট ইনস্ট্যান্স আইডি সহ এই কিটের জন্য firestore-bigquery-export-এর আইডি এইরকম দেখতে হবে:

2026-09-25T19:52:46.328612Z I kit-firestore-bigquery-export-fsexportbigquery: Started execution of extension
2026-09-25T19:52:46.328644Z I kit-firestore-bigquery-export-fsexportbigquery: {"message":"Firestore event received by onDocumentWritten trigger","document_name":"projects/extensions-eventarc-testing/databases/(default)/documents/exported-messages/cmGP6XLyksqGdw2OgTOq","operation":0,"event_id":"9f59a2a4-1a5e-4c41-a32d-561e3c734502"}
2026-09-25T19:52:46.616064Z I kit-firestore-bigquery-export-fsexportbigquery: Completed execution of extension
2026-09-2

আপনার কাছে অনেক লগ থাকলে, নিম্নলিখিত কমান্ড ব্যবহার করে আপনি নির্দিষ্ট কিট ফাংশনে ফিল্টার করতে পারেন:

firebase functions:log --only <function name>

কিট ইনস্ট্যান্সের জন্য নির্দিষ্ট ফাংশনের নাম খুঁজে পেতে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:

firebase functions:list | grep kit-<kit instance id>

এই উদাহরণের জন্য:

firebase functions:list | grep kit-firestore-bigquery-export
│ kit-firestore-bigquery-export-fsexportbigquery  │ v2      │ google.cloud.firestore.document.v1.written                    │
│ kit-firestore-bigquery-export-initBigQuerySync  │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-setupBigQuerySync │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-syncBigQuery      │ v2      │ taskQueue                                                     │

ফাংশন কিট README পর্যালোচনা করুন

কিছু কিটের ক্ষেত্রে, ফাংশন কিট অটোমেটিক যা করে তার বাইরেও অতিরিক্ত কাজ করার প্রয়োজন হতে পারে। আপনি যে কিট ইনস্টল করছেন তার README পর্যালোচনা করুন এবং যেকোনও অতিরিক্ত নির্দেশাবলী অনুসরণ করুন।

ফাংশন কিট CLI ব্যবহার করে মাইগ্রেট করুন

শুরু করার আগে, আপনি যে এক্সটেনশনটি কিটে মাইগ্রেট করতে চান তার ইনস্ট্যান্স আইডি এবং এর রিপ্লেসমেন্ট কিটের npm প্যাকেজের নাম শনাক্ত করুন এবং লিখে রাখুন। firebase ext:list-এর আউটপুট ব্যবহার করে আপনি এই দুটিই খুঁজে পেতে পারেন। ext:list ব্যবহারের উদাহরণ দেখতে আপনার মাইগ্রেশন পাথ নির্ধারণ করা দেখুন।

১. আপনার এক্সটেনশন ইনস্ট্যান্স লেটেস্ট ভার্সনে আপগ্রেড করুন

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

আপনার এক্সটেনশনটি কোথায় ইনস্টল করা হয়েছে তার উপর নির্ভর করে, সেটি আপডেট করতে নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করুন:

  • Firebase কনসোল থেকে
  • Firebase CLI থেকে এটি ব্যবহার করে:
    • firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>

আপনি এই ধাপটি এড়িয়ে গেলে, এক্সপোর্ট করার সময় CLI আপনাকে আপগ্রেড করার জন্য প্রম্পট করে কনফিগারেশন যদি আপনার এক্সটেনশন লেটেস্ট ভার্সনে না থাকে।

২. রিপ্লেসমেন্ট ফাংশন কিট ইনস্ট্যান্স পর্যালোচনা ও ইনস্টল করুন

আপনি নিম্নলিখিত CLI কমান্ড ব্যবহার করে ফাংশন কিট ইনস্টল করতে পারবেন:

firebase functions:kits:install --template migration --no-configure --package <npm-package-name> --project <project-id>

ইনস্টল করার সময় আপনার কিটের জন্য ইনস্ট্যান্স আইডি বেছে নেওয়ার সময়, মাইগ্রেশন সংক্রান্ত নির্দেশাবলীতে পরে ব্যবহার করার জন্য এটি লিখে রাখতে ভুলবেন না।

কিট ইনস্টল করা হয়ে গেলে, আপনার Firebase প্রোজেক্টের মধ্যে একটি নতুন ডিরেক্টরি তৈরি করা হয় যার লোকেশন function-kits/<kit-name>/source-এর মতো হয়। এতে কিট সহ npm প্যাকেজ থাকে যা আপনার এক্সটেনশন এবং একটি বেসিক index.ts ফাইলকে রিপ্লেস করে। এই ফাইলটি Firebase-এর জন্য সেইসব ফাংশন এক্সপোর্ট করে যাতে কাস্টম কনফিগারেশন ডিপ্লয় ও সেট করা যায়।

কিটের জন্য README পর্যালোচনা করুন এবং সেখানে তালিকাভুক্ত যেকোনও অতিরিক্ত নির্দেশাবলী অনুসরণ করুন।

একই প্রোজেক্টে কিটের একাধিক ইনস্ট্যান্স থাকলে, একই কিটের নতুন ইনস্ট্যান্স তৈরি করতে এই কমান্ডটি রিপিট করতে পারেন। এছাড়াও, আপনি আলাদা কনফিগারেশন (যেমন, স্টেজিং প্রোজেক্ট ও প্রোডাকশন প্রোজেক্ট) সহ দুটি আলাদা Firebase প্রোজেক্টে একটি কিট ইনস্ট্যান্স ডেপ্লয় করতে পারবেন। এইসব উন্নত সেট-আপ সম্পর্কে আরও জানতে, উন্নত মাইগ্রেশন দেখুন।

উদাহরণ:

firebase functions:kits:install --template migration --no-configure --package @firebase-function-kits/firestore-bigquery-export --project my-project

৩. এক্সটেনশনের মতো একইভাবে ফাংশন কিট ইনস্ট্যান্স কনফিগার করুন

আপনাকে এই কিট ইনস্ট্যান্স কাস্টমাইজ করতে হবে, যার কনফিগারেশনটি এক্সটেনশনের সাথে অভিন্ন হবে। আপনি নিজের এক্সটেনশন ইনস্ট্যান্স কনফিগারেশন একটি .env ফাইলে এক্সপোর্ট করতে পারবেন, যা কিট সহ সব Cloud Functions-এর জন্য প্যারামিটার, এনভায়রনমেন্ট ভেরিয়েবল এবং সিক্রেট রেফারেন্স কনফিগারেশন ডেটা স্টোর করে। আপনার কিটের কনফিগারেশন ফাইলে সরাসরি এটি এক্সপোর্ট করতে, রান করুন:

firebase ext:export --mode functions --instance <extension-instance-id> --kit-instance <kit-instance-id> --project <project-id>

এই ধাপের শেষে, এই ইনস্ট্যান্সের কনফিগারেশন সংক্রান্ত তথ্য আপনার ইনস্ট্যান্স কনফিগারেশন ডিরেক্টরিতে প্রোজেক্ট-নির্দিষ্ট .env ফাইলে সেভ করা হয়, যেমন: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>

৪. কিট রিপ্লেসমেন্ট ডিপ্লয় ও যাচাই করুন

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

আপনি যে এক্সটেনশন ইনস্ট্যান্স থেকে মাইগ্রেট করেছেন সেখানে উপস্থিত ছিল না এমন কোনও নতুন প্যারামিটার আপনার কিট ব্যবহার করলে, ডেপ্লয়মেন্ট প্রসেসের শুরুতে Firebase CLI আপনাকে সেগুলির জন্য প্রম্পট করে। আপ-টু-ডেট firestore-bigquery-export এক্সটেনশন থেকে এই উদাহরণে এটি প্রত্যাশিত নয়, তবে অনেক কিট কিটের মাধ্যমে ব্যবহৃত যেকোনও ইভেন্ট ট্রিগার সোর্সের জন্য একটি নতুন প্যারামিটারের প্রম্পট দেখায়। এই মাইগ্রেশনের অংশ হিসেবে, আপডেট করা কিটগুলি ২য় জেনারেশন ফাংশন ব্যবহার করে যেখানে এক্সটেনশনগুলি আগে ১ম জেনারেশন ফাংশন ব্যবহার করত। ২য় জেনারেশনে, ফাংশনগুলি তাদের ইভেন্ট সোর্সের কাছাকাছি অবস্থিত এবং একটি অতিরিক্ত প্যারামিটার হিসাবে যোগ করা হয়েছে। ভবিষ্যতের আপডেটে, নতুন প্যারামিটার যোগ করা হলে, পরবর্তী ডেপ্লয়মেন্টে CLI আপনাকে প্রম্পট করবে।

উদাহরণ:

firebase deploy --only functions:firestore-bigquery-export --project my-project

আউটপুট:

=== Deploying to 'my-project'...
i  deploying functions
i  functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
i  functions: ensuring required API bigquery.googleapis.com is enabled...
i  functions: ensuring required API cloudtasks.googleapis.com is enabled...
✔  functions: required APIs are enabled
i  functions: granting declarative IAM roles to managed service account:
   - BigQuery Data Editor
   - BigQuery User
   - Cloud Datastore User
   - Eventarc Event Receiver
   - roles/run.invoker
✔  functions: successfully granted IAM roles
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-fsexportbigquery(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-initBigQuerySync(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-setupBigQuerySync(us-central1)...
✔  functions[kit-firestore-bigquery-export-fsexportbigquery(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-initBigQuerySync(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-setupBigQuerySync(us-central1)] Successful create operation.
i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/us-central1/queues/kit-firestore-bigquery-export-initBigQuerySync.
✔  Deploy complete!

কিটের firebase deploy-এ কোনও সমস্যা ছিল না তা যাচাই করতে, কোনও লাইফসাইকেল হুক ট্রিগার করা হয়েছে কিনা তা দেখতে ডিপ্লয়মেন্ট লগ চেক করুন। Stream Cloud Firestore থেকে BigQuery-এর মতো জনপ্রিয় এক্সটেনশন, লাইফসাইকেল হুক ব্যবহার করে। ট্রিগার করা হলে লাইফসাইকেল হুক কেমন দেখায় তার একটি উদাহরণ নিচে দেওয়া হল:

i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i  functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project

এই লগ মেসেজগুলি নিম্নলিখিত বিষয়গুলি কনফার্ম করে:

  • একটি লাইফসাইকেল হুক পাওয়া গেছে এবং তা এক্সিকিউট করা হয়েছে।
  • লাইফসাইকেল হুকের সাথে যুক্ত টাস্কের সারিতে একটি টাস্ক সারিবদ্ধ করা হয়েছে।
  • Cloud Logging-এর একটি লিঙ্ক দেওয়া হয়েছে যাতে আপনি যাচাই করতে পারেন যে টাস্কটি কোনও সমস্যা ছাড়াই সম্পূর্ণ হয়েছে।

লগে কোনও সমস্যা নেই এবং আপনার টাস্ক কিউ ইভেন্ট সফলভাবে প্রসেস করা হয়েছে কিনা তা যাচাই করতে Google Cloud কনসোলে লগ লিঙ্ক ফলো করুন। লাইফসাইকেল ইভেন্ট সফলভাবে এক্সিকিউট না হলে, এটি রান করে আপনি আবার ট্রিগার করতে পারবেন:

firebase functions:lifecycle:run <hook-name> <codebase>

আপনি প্রথমবার ফাংশন কিট ইনস্ট্যান্স ডিপ্লয় করলে, রান করুন:

firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>

যাচাইকরণের সময় যেকোনও মুহূর্তে আপনি যদি এই মাইগ্রেশন বন্ধ করতে বা আগের অবস্থায় ফিরিয়ে আনতে চান, তাহলে এক্সটেনশন আনইনস্টল করুন লিঙ্কে দেওয়া নির্দেশাবলী অনুসরণ করে কিট আনইনস্টল করতে পারবেন।

আপনার ফাংশন কিটের প্রাথমিক ডিপ্লয়মেন্ট সম্পূর্ণ হয়েছে কিনা তা যাচাই করার পরে, আপনাকে যাচাই করতে হবে যে কিটের কার্যকারিতা প্রত্যাশা অনুযায়ী কাজ করছে কিনা। যেহেতু এক্সটেনশনটি এখনও চলছে, আপনাকে সতর্ক থাকতে হবে যে আপনি যা চেক করছেন তা শুধু দুটির মধ্যে একটি নয় কাজ করেছে, কারণ এক্সটেনশনটি কাজ করছে এবং কাজ চালিয়ে যাবে।

প্রসেসিং পরিবর্তন না হলে এবং এক্সটেনশন ও কিট থেকে ডুপ্লিকেট ফলাফল না পেলে, কিটের কার্যকারিতা ট্রিগার করার পরে কিটের লগ সরাসরি পরীক্ষা করা হল সবচেয়ে ভালো বিকল্প।

উদাহরণ: Cloud Firestore থেকে BigQuery-এ স্ট্রিম করুন

Stream Cloud Firestore থেকে BigQuery এক্সটেনশন ব্যবহার করে, Raw Changelog Table (*_raw_changelog) এবং লেটেস্ট ভিউ টেবিল (*_raw_latest) উভয় জায়গাতেই লেখার সময়, কিট ও এক্সটেনশনে একই ইভেন্ট ডেলিভার করা হলে, ডুপ্লিকেট এন্ট্রি সরিয়ে দেওয়া হবে। তাই, কিট কাজ করছে কিনা তা যাচাই করার জন্য আপনি BigQuery-তে কোনও সারি বা ডুপ্লিকেট সারির উপস্থিতি ব্যবহার করতে পারবেন না।

আপনি firebase functions:logs ব্যবহার করে আপনার Firestore সংগ্রহে লেখার কিছুক্ষণ পরেই ফাংশন লগ দেখতে পারেন এবং একটি লগ এন্ট্রি খুঁজতে পারেন যা নির্দেশ করে যে এটি সফলভাবে একটি লেখা প্রসেস করেছে। ডিফল্ট ইনস্ট্যান্স আইডি সহ এই কিটের জন্য firestore-bigquery-export-এর আইডি এইরকম দেখতে হবে:

2026-09-25T19:52:46.328612Z I kit-firestore-bigquery-export-fsexportbigquery: Started execution of extension
2026-09-25T19:52:46.328644Z I kit-firestore-bigquery-export-fsexportbigquery: {"message":"Firestore event received by onDocumentWritten trigger","document_name":"projects/extensions-eventarc-testing/databases/(default)/documents/exported-messages/cmGP6XLyksqGdw2OgTOq","operation":0,"event_id":"9f59a2a4-1a5e-4c41-a32d-561e3c734502"}
2026-09-25T19:52:46.616064Z I kit-firestore-bigquery-export-fsexportbigquery: Completed execution of extension
2026-09-2

আপনার কাছে অনেক লগ থাকলে, নিম্নলিখিত কমান্ড ব্যবহার করে আপনি নির্দিষ্ট কিট ফাংশনে ফিল্টার করতে পারেন:

firebase functions:log --only <function name>

কিট ইনস্ট্যান্সের জন্য নির্দিষ্ট ফাংশনের নাম খুঁজে পেতে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:

firebase functions:list | grep kit-<kit instance id>

এই উদাহরণের জন্য:

firebase functions:list | grep kit-firestore-bigquery-export
│ kit-firestore-bigquery-export-fsexportbigquery  │ v2      │ google.cloud.firestore.document.v1.written                    │
│ kit-firestore-bigquery-export-initBigQuerySync  │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-setupBigQuerySync │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-syncBigQuery      │ v2      │ taskQueue                                                     │

৫. এক্সটেনশন আনইনস্টল করুন

আপনার ডিপ্লয় করা ফাংশন কিট যাচাই করার পরে, আপনি এক্সটেনশন আনইনস্টল করতে পারেন, যাতে আপনি কিট এবং এক্সটেনশনের জন্য আলাদাভাবে এর আচরণ ডুপ্লিকেট না করেন। আপনি Firebase CLI থেকে সব এক্সটেনশন আনইনস্টল করতে পারবেন, আপনি সেগুলি কীভাবে ইনস্টল করেছেন তা নির্বিশেষে, যদি আপনি --immediate ফ্ল্যাগ পাস করেন:

firebase ext:uninstall <extension-instance-id> --project <project-id> --immediate

উদাহরণ:

firebase ext:uninstall firestore-bigquery-export --project my-project --immediate

আউটপুট:

i  extensions: uninstalling firestore-bigquery-export...
i  extensions: deleting extension instance resources in project my-project...
✔  extensions: successfully uninstalled firestore-bigquery-export

উন্নত মাইগ্রেশন

আপনি একাধিক Firebase প্রোজেক্টে এক্সটেনশন রাখতে পারেন যা আপনি একটি কোডবেস দিয়ে ম্যানেজ করতে চান। যেমন, আপনি যদি একই ইনফ্রাস্ট্রাকচার testing এনভায়রনমেন্ট এবং production এনভায়রনমেন্টে ডেপ্লয় করেন, যার প্রত্যেকটিতে documents Cloud Firestore ইনস্ট্যান্স আছে যা আপনি BigQuery-এ এক্সপোর্ট করেন, তাহলে আপনার কাছে firestore-bigquery-export এক্সটেনশনের দুটি ইনস্ট্যান্স ইনস্টল করা থাকতে পারে:

  • export-documents-testing
  • export-documents-production

Firebase CLI-এর সাথে কাজ করার সময় আপনি যদি একটি কোডবেসে দুটি ফাংশন কিট ইনস্ট্যান্সে এই দুটি এক্সটেনশন ইনস্ট্যান্স মাইগ্রেট করেন এবং firebase deploy --project testing ও firebase deploy --project production ব্যবহার করে ডিপ্লয় করেন, তাহলে প্রতিটি ডিপ্লয়মেন্ট testing এবং production এনভায়রনমেন্টে দুটি ইনস্ট্যান্স তৈরি করবে।

পরিবর্তে, দুটি এক্সটেনশন ইনস্ট্যান্সের জায়গায় একটি ফাংশন কিট ইনস্ট্যান্স ব্যবহার করুন firestore-bigquery-export একাধিক প্রোজেক্টে ডিপ্লয় করা হয়েছে, যেখানে প্রতিটি প্রোজেক্টের নিজস্ব কনফিগারেশন আছে। ইনস্ট্যান্সের জন্য আপনার কনফিগারেশন ডিরেক্টরি নিম্নলিখিতটির মতো দেখতে হতে হবে:

  • config-export-documents/
    • .env.testing
    • .env.production

testing এবং production-এ প্রতিটি ডেপ্লয়মেন্ট আপনার কিটের একটি ইনস্ট্যান্স তৈরি করে সংশ্লিষ্ট কনফিগারেশনের সাথে। আপনি ext:migrate বা functions:kits:install-এর প্রতিটি ইনভোকেশনে --project ফ্ল্যাগ পাস করলে, আগে থেকে থাকা CLI কমান্ড এই সেট-আপ তৈরি করে।

উদাহরণ:

firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project testing --no-configure --template migration
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? export-documents
✔  Wrote function-kits/firestore-bigquery-export/source/package.json
✔  Wrote function-kits/firestore-bigquery-export/source/tsconfig.json
✔  Wrote function-kits/firestore-bigquery-export/source/.gitignore
✔  Wrote function-kits/firestore-bigquery-export/source/src/index.ts
i  functions: Running npm install
✔  Wrote configuration info to firebase.json
✔  functions: Function kit firestore-bigquery-export successfully installed.
# This creates the export-documents instance with an empty .env.testing file
# for the testing project. Now populate it via export:
firebase ext:export --mode functions --instance export-documents-testing \
  --kit-instance export-documents --project testing

# Repeat the export for production into the same kit instance to create
# .env.production from the export-documents-prod instance:
firebase ext:export --mode functions --instance export-documents-prod \
  --kit-instance export-documents --project production

আপনার কাছে এখন একটি কিট ইনস্ট্যান্স কনফিগার করা আছে যা আপনার testing এবং production প্রোজেক্টে তাদের নিজ নিজ কনফিগারেশনের সাথে ডিপ্লয় করা যাবে। আপনি যদি testing প্রোজেক্টে একটি ইনস্ট্যান্স তৈরি করেন এবং production প্রোজেক্টে একই প্যাকেজের জন্য functions:kits:install কমান্ড রান করেন, তাহলে আপনাকে testing-এর জন্য কনফিগার করা ইনস্ট্যান্সটি আবার ব্যবহার করার অথবা দ্বিতীয় ইনস্ট্যান্স ইনস্টল করার বিকল্পের সাথে প্রম্পট করা হবে।