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

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

মাইগ্রেট না করে npm প্যাকেজ থেকে ফাংশন কিট ব্যবহার করা

আপনি যদি কোনও এক্সটেনশন থেকে মাইগ্রেট না করেন, তাহলে ফাংশন কিট ব্যবহার করার দুটি অংশ রয়েছে:

কিট ইনস্টল করা

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

firebase functions:kits:install --package <npm-package-name>

উদাহরণ:

firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project my-project
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? firestore-bigquery-export
i  function-kits/firestore-bigquery-export/source/package.json is unchanged
i  function-kits/firestore-bigquery-export/source/tsconfig.json is unchanged
i  function-kits/firestore-bigquery-export/source/.gitignore is unchanged
i  functions: Running npm install @firebase-function-kits/firestore-bigquery-export@next --save-prefix=^...
i  functions: Building TypeScript source...
✔  Wrote configuration info to firebase.json

i  functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
Prompting for parameters for codebase firestore-bigquery-export:
✔ Enter a string value for FUNCTION_DEFAULT_REGION:
(Global default region where functions should be deployed. Can be overridden per-function.) us-east1

✔ Enter a string value for BigQuery Project ID:
(Override the default project for BigQuery instance. This can allow updates to be directed to a BigQuery
instance on another GCP project.) my-bigquery-project

✔ Enter a string value for Firestore Instance ID:
(The Firestore database to use. Use "(default)" for the default database. You can view your available
Firestore databases at https://console.cloud.google.com/firestore/databases.) eu-testing

# Omitting many more parameters for brevity

✔  Wrote configuration info to firebase.json
✔  functions: Function kit firestore-bigquery-export successfully installed.

i  functions: At the first deploy, the following functions will be created in your project:
- kit-firestore-bigquery-export-fsexportbigquery
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i  functions: At the first deploy, the following Task Queues will be created in your project:
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i  functions: At the first deploy, the following APIs will be enabled in your project:
- bigquery.googleapis.com
- cloudtasks.googleapis.com
i  functions: At the first deploy, the following roles will be granted to the kit service account:
- BigQuery Data Editor
- BigQuery User
- Cloud Datastore User
- Eventarc Event Receiver
- roles/run.invoker
⚠  functions: Please review the changes above. If you do not want them applied to your project, uninstall this kit before running firebase deploy.

ডিফল্ট গ্লোবাল বিকল্প পরিবর্তন করা হচ্ছে

আপনার কিট ইনস্ট্যান্সের জন্য গ্লোবাল বিকল্প কনফিগার করতে, function-kits/<your-kit-id>/source/src/index.ts-এ অবস্থিত index.ts ফাইলটি পরিবর্তন করুন।

আপনি যদি কিটের সব ইনস্ট্যান্স জুড়ে ডিফল্ট শেয়ার করতে চান, তাহলে সরাসরি index.ts-এ সেট করুন। অন্যথায়, index.ts-এ ডকুমেন্ট করা উদাহরণ ও নির্দেশাবলী অনুসরণ করে, প্রতিটি ইনস্ট্যান্সের জন্য সেট করা প্যারামিটার তৈরি করুন।

কিট ডিপ্লয় করা হচ্ছে

আপনার ফাংশন কিট ডিপ্লয় করতে, রান করুন:

firebase deploy --only functions:<kit-instance-id>

উদাহরণ:

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!

কিট ইনস্টল ও ডিপ্লয় করলে নিম্নলিখিত অ্যাকশনগুলি করা হয়:

  • function-kits/firestore-bigquery-export/source তৈরি করে, যার মধ্যে কিট সোর্স থাকে, এর মধ্যে একটি বেসিক index.ts ফাইল থাকে যা কিট প্যাকেজ ইমপোর্ট ও এক্সপোর্ট করে, একই সাথে এমন একটি প্যারামিটার সেট-আপ করে যা আপনাকে কিটের প্রতিটি ইনস্ট্যান্সের জন্য আলাদা লোকেশন বেছে নিতে দেয়।
  • function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.<project-id> তৈরি করে এবং ফাংশনের জন্য লেখা কনফিগারেশন ডেটা দিয়ে এটি পূরণ করে। ভবিষ্যতের আপডেটে নতুন প্যারামিটার যোগ করা হলে, পরবর্তী ডেপ্লয়মেন্টে আপনাকে প্রম্পট করা হবে।
  • এই কিট চালানোর জন্য প্রয়োজনীয় Google Cloud রিসোর্স তৈরি করে, যার মধ্যে নির্দিষ্ট IAM ভূমিকা, ফাংশন, Eventarc ট্রিগার ও Cloud Tasks কিউ সহ পরিষেবা অ্যাকাউন্ট অন্তর্ভুক্ত।

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

কিট আনইনস্টল করা

কিট ও এর সব ইনস্ট্যান্স সরাতে, এটি রান করুন:

firebase functions:kits:uninstall --kit <kit-id>

এটি সব ইনস্ট্যান্স ও তাদের কনফিগারেশন মুছে দেয় এবং ডিস্ক থেকে কিট সোর্স সরিয়ে দেয়।

কিটের শুধু একটি ইনস্ট্যান্স সরাতে, এটি রান করুন:

firebase functions:kits:uninstall --instance <kit-instance-id>

আপনার কাছে কিটের একটি মাত্র ইনস্ট্যান্স থাকলে, এটি সম্পূর্ণ কিট আনইনস্টল করে।

কিট কনফিগারেশন আপডেট করা হচ্ছে

ইনস্টলেশন বা আপনার প্রথম ডেপ্লয়মেন্টের সময়, আপনার কিটের জন্য সব প্যারামিটার কনফিগার করার জন্য আপনাকে প্রম্পট করা হয় (যদি না আপনি কোনও এক্সটেনশন থেকে কনফিগারেশন মাইগ্রেট করেন)। এইসব প্যারামিটার আপনার কিট ইনস্ট্যান্স কনফিগারেশন ডিরেক্টরির .env ফাইলে স্টোর করা হয়। যেমন, my-project প্রোজেক্টে আপনার কাছে firestore-bigquery-export নামের কিট ইনস্ট্যান্স থাকলে, .env ফাইলটি function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project-এ অবস্থিত।

এটি নিম্নলিখিত বিষয়ের মতো দেখতে:

DATASET_LOCATION=us
BIGQUERY_PROJECT_ID=my-project
DATABASE=eu-testing
DATABASE_REGION=eur3
COLLECTION_PATH=posts
WILDCARD_IDS=false
DATASET_ID=firestore_export
TABLE_ID=posts
TABLE_PARTITIONING=NONE
TIME_PARTITIONING_FIELD=
TIME_PARTITIONING_FIRESTORE_FIELD=
TIME_PARTITIONING_FIELD_TYPE=omit
CLUSTERING=
MAX_DISPATCHES_PER_SECOND=100
VIEW_TYPE=view
MAX_STALENESS=
REFRESH_INTERVAL_MINUTES=
BACKUP_COLLECTION=
TRANSFORM_FUNCTION=
USE_NEW_SNAPSHOT_QUERY_SYNTAX=no
EXCLUDE_OLD_DATA=no
KMS_KEY_NAME=
MAX_ENQUEUE_ATTEMPTS=3
LOG_LEVEL=info
FUNCTION_DEFAULT_REGION=us-west1

আপনি যে কনফিগারেশন ভ্যালু পরিবর্তন করতে চান সেটি জানা থাকলে, আপনি সরাসরি .env ফাইলে এটি এডিট করতে পারবেন। আপনি যদি ইনস্টলেশন এবং ডিপ্লয়মেন্টের সময় চলা ইন্টারেক্টিভ প্রম্পট ব্যবহার করতে চান, তাহলে .env ফাইল থেকে আপনি যে প্যারামিটারগুলি পরিবর্তন করতে চান সেগুলি সরিয়ে দিন এবং কিট ইনস্ট্যান্স পুনরায় ডিপ্লয় করুন। ডেপ্লয় করার সময় আপনাকে সেইসব প্যারামিটার লিখতে বলা হবে।

যেমন, আপনি যদি COLLECTION_PATH=posts লাইনটি মুছে দেন এবং ডিপ্লয় করেন, তাহলে ডিপ্লয়মেন্টের সময় আপনাকে এর জন্য প্রম্পট করা হবে:

i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export-d9cd/.env.my-project
Prompting for parameters for codebase firestore-bigquery-export:

Collection path: What is the path of the collection that you would like to export? You may use {wildcard} notation to match a subcollection of all documents in a collection (for example: chatrooms/{chatid}/posts). Parent Firestore Document IDs from {wildcards} can be returned in path_params as a JSON formatted string.
? Enter a string value for Collection path: (posts)

ফাংশন কিট রক্ষণাবেক্ষণ ও আপগ্রেড করা

প্রকাশকরা সময়ের সাথে সাথে তাদের npm প্যাকেজ আপডেট করতে পারেন যাতে সমস্যার সমাধান করা, ফিচার যোগ করা, নির্ভরতা আপডেট করা বা নিরাপত্তা সংক্রান্ত দুর্বলতা দূর করা যায়। আমরা সাজেস্ট করি যে আপনি এইসব রিলিজের ব্যাপারে আপ-টু-ডেট থাকুন এবং আপডেট ইনস্টল করুন—বিশেষ করে সেগুলি যেগুলি নিরাপত্তা সংক্রান্ত দুর্বলতার সমাধান করে।

functions:kits:install কমান্ডটি একটি কোডবেস তৈরি করে যা npm প্যাকেজ হিসেবে একটি কিট ইনস্টল করে এবং আপনার কিটের প্রতিটি ইনস্ট্যান্সের জন্য এর সমস্ত ফাংশন এক্সপোর্ট করে। কোনও কিট আপগ্রেড করতে, প্যাকেজ ভার্সন আপডেট করুন এবং তারপরে পরিবর্তনগুলি প্রয়োগ করতে আপনার কিটের প্রতিটি ইনস্ট্যান্স আবার ডিপ্লয় করুন।

কোনও কিটে আপডেট আছে কিনা তা নির্ধারণ করা হচ্ছে

function-kits/<your-kit-id>/source-এ আপনার কিটের source ডিরেক্টরিতে যান। এই source ডিরেক্টরি থেকে, আপনার ফাংশন কিট এবং Cloud Functions SDK সহ সমস্ত পুরনো npm প্যাকেজের রিপোর্ট পেতে নিম্নলিখিত কমান্ডটি চালান:

npm outdated

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

কিট আপডেট করা

কিট ও এর ডিপেন্ডেন্সি লেটেস্ট নন-ব্রেকিং ভার্সনে আপডেট করতে (মেজর ভার্সন আপডেট বাদ দিয়ে যাতে ব্রেকিং পরিবর্তন থাকতে পারে), রান করুন:

npm update --save

আপনি যদি অন্য কোনও প্যাকেজ নয়, শুধু ফাংশন কিট প্যাকেজ আপডেট করতে চান, তাহলে প্যাকেজের নাম npm update-এ পাস করুন:

npm update <package-name> --save

কোনও প্যাকেজকে লেটেস্ট মেজর ভার্সনে (যা ব্রেকিং পরিবর্তন নিয়ে আসতে পারে) আপগ্রেড করতে, এটি রান করুন:

npm update --save <npm-package-name>@latest

প্যাকেজ ডকুমেন্টেশন এবং রিলিজ নোট পর্যালোচনা করে দেখুন কী কী পরিবর্তন হয়েছে এবং ব্রেকিং পরিবর্তন প্রতিরোধ করার জন্য ডিপ্লয়মেন্টের আগে বা পরে আপনাকে কোনও অতিরিক্ত পদক্ষেপ নিতে হবে কিনা।

আপডেট করা ইনস্ট্যান্স ডিপ্লয় করা হচ্ছে

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

firebase deploy --only functions

মাইগ্রেশন আগের অবস্থায় ফিরিয়ে আনা

মাইগ্রেশন আগের অবস্থায় ফিরিয়ে আনতে, প্রথমে এক্সটেনশন আবার ইনস্টল করুন। ইনস্টলেশনের সময় প্রয়োজনীয় কনফিগারেশন ভ্যালু খুঁজে পেতে আপনি কিটের .env ফাইল ব্যবহার করতে পারেন।

এক্সটেনশন ডিপ্লয় করার পরে, কিট ইনস্ট্যান্স আনইনস্টল করুন (এটি শেষ ইনস্ট্যান্স হলে, পুরো কিট আনইনস্টল করে):

firebase functions:kits:uninstall --instance <kit-instance-id> --project <project-id>

ভবিষ্যতে মাইগ্রেশনের জন্য এক্সটেনশন কনফিগারেশন সেভ করা হচ্ছে

৩১ মার্চ, ২০২৭-এর পরে, আপনি আগে থেকে থাকা এক্সটেনশন কনফিগারেশন ফেচ করতে পারবেন না। আপনি ৩১ মার্চ, ২০২৭ তারিখের আগে মাইগ্রেট করতে না পারলে, আমরা আপনাকে এক্সটেনশন সেভ করার জন্য সুপারিশ করি, যাতে আপনি এই তারিখের পরে মাইগ্রেট করার সিদ্ধান্ত নিতে পারেন।

  1. আপনার এক্সটেনশন ইনস্ট্যান্স আইডির তালিকা পান:

    আপনার Firebase প্রোজেক্টে সব এক্সটেনশন ইনস্ট্যান্সের তালিকা পেতে, আপনি ext:list CLI কমান্ড ব্যবহার করতে পারবেন:

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

    উদাহরণ:

    firebase ext:list --project my-project
    
    » firebase ext:list
    i  extensions: ensuring 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.3   │ 2026-09-06 22:31:04 │ @firebase-function-kits/firestore-bigquery-export │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/firestore-bigquery-export │ firebase  │ firestore-bigquery-export      │ ACTIVE │ 0.3.2   │ 2026-06-03 17:41:24 │ @firebase-function-kits/firestore-bigquery-export │
    └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘
    ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
    

    ext:list কমান্ডের একটি JSON আউটপুট ফর্ম্যাটও রয়েছে এবং আপনার কাছে ইউটিলিটি jq ইনস্টল করা থাকলে, আপনি এটি ব্যবহার করে একটি প্রোজেক্টের জন্য সমস্ত ইনস্ট্যান্স আইডির একটি তালিকা পেতে পারেন:

    firebase ext:list --json --project <project-id> | jq -r '.result[].instanceId'
    

    উদাহরণ:

    firebase ext:list --json --project my-project | jq -r '.result[].instanceId'
    

    আউটপুট:

    firestore-bigquery-export-zbrp
    firestore-bigquery-export
    
  2. প্রতিটি ইনস্ট্যান্সের জন্য কনফিগারেশন এক্সপোর্ট করুন:

    প্রতিটি ইনস্ট্যান্সের জন্য, আপনি নিম্নলিখিত এক্সপোর্ট কমান্ডটি কার্যকর করে ডিস্কে এর কনফিগারেশন সেভ করতে পারেন:

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

    উদাহরণ:

    firebase ext:export --mode functions --project my-project --instance firestore-bigquery-export
    

    আউটপুট:

    i  extensions: ensuring required API firebaseextensions.googleapis.com is enabled...
    i  functions: Saving exported extensions config as a Function Kits .env file
    i  functions: Created new local file firestore-bigquery-export/.env.testing to store param values. We suggest explicitly adding or excluding this file from version control.
    i  functions: Loaded environment variables from firestore-bigquery-export/.env.testing
    i  functions: Loaded environment variables from firestore-bigquery-export/.env.testing
    i  functions: Writing new parameter values to disk: firestore-bigquery-export/.env.testing
    

    ডিস্কে, আপনি এই এক্সটেনশন ইনস্ট্যান্সের একটি এক্সপোর্ট এই ধরনের লোকেশনে পাবেন <instance-id>/.env.<project-id>. এই উদাহরণে, এটি firestore-bigquery-export/.env.my-project-এ অবস্থিত।

    আপনি প্রতিটি ইনস্ট্যান্সের জন্য একবার এই প্রসেসটি রিপিট করতে পারবেন এবং এটি আপনার সব এক্সটেনশন ইনস্ট্যান্স কনফিগারেশন সহ .env ফাইলের একটি সেট তৈরি করে যা মাইগ্রেশনের অংশ হিসেবে পরে আবার ব্যবহার করা যেতে পারে।

  3. এক্সপোর্ট করা .env ফাইল আরও ভালো লোকেশনে সরান:

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