আপনার অ্যাপকে Cloud Storage for Firebase এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি Firebase Local Emulator Suite সামগ্রিক কার্যপ্রবাহ বুঝতে পেরেছেন , এবং Local Emulator Suite ইনস্টল ও কনফিগার করার পাশাপাশি এর CLI কমান্ডগুলো পর্যালোচনা করেছেন।
একটি ফায়ারবেস প্রজেক্ট বেছে নিন
Firebase Local Emulator Suite একটিমাত্র ফায়ারবেস প্রোজেক্টের প্রোডাক্টগুলোকে এমুলেট করে।
ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, এমুলেটরগুলো চালু করার আগে, আপনার ওয়ার্কিং ডিরেক্টরিতে CLI-তে firebase use চালান। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project ফ্ল্যাগটি পাস করতে পারেন।
Local Emulator Suite বাস্তব ফায়ারবেস প্রজেক্ট এবং ডেমো প্রজেক্টের এমুলেশন সমর্থন করে।
| প্রকল্পের ধরণ | বৈশিষ্ট্য | এমুলেটরের সাথে ব্যবহার করুন |
|---|---|---|
| বাস্তব | একটি প্রকৃত Firebase প্রজেক্ট হলো সেটি যা আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। বাস্তব প্রজেক্টগুলিতে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, বা অন্য যেকোনো রিসোর্স যা আপনি সেই Firebase প্রজেক্টের জন্য সেট আপ করেছেন। | আসল Firebase প্রোজেক্ট নিয়ে কাজ করার সময়, আপনি সমর্থিত যেকোনো বা সমস্ত প্রোডাক্টের জন্য এমুলেটর চালাতে পারেন। যেসব প্রোডাক্ট আপনি এমুলেট করছেন না, সেগুলোর ক্ষেত্রে আপনার অ্যাপ ও কোড লাইভ রিসোর্সের (যেমন ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি) সাথে ইন্টারঅ্যাক্ট করবে। |
| ডেমো | একটি ডেমো ফায়ারবেস প্রজেক্টে কোনো বাস্তব ফায়ারবেস কনফিগারেশন বা লাইভ রিসোর্স থাকে না। এই প্রজেক্টগুলো সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে ব্যবহার করা হয়। ডেমো প্রজেক্টগুলোর আইডির শুরুতে | ডেমো ফায়ারবেস প্রজেক্ট নিয়ে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরের সাথেই ইন্টারঅ্যাক্ট করে। যদি আপনার অ্যাপ এমন কোনো রিসোর্সের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য কোনো এমুলেটর চলছে না, তাহলে সেই কোডটি ব্যর্থ হবে। |
আমরা আপনাকে যথাসম্ভব ডেমো প্রজেক্ট ব্যবহার করার পরামর্শ দিই। এর সুবিধাগুলোর মধ্যে রয়েছে:
- সেটআপ করা সহজ, কারণ কোনো Firebase প্রজেক্ট তৈরি না করেই এমুলেটরগুলো চালানো যায়।
- আরও শক্তিশালী সুরক্ষা, কারণ যদি আপনার কোড ভুলবশত নন-এমুলেটেড (প্রোডাকশন) রিসোর্স ব্যবহার করে, তাহলেও ডেটা পরিবর্তন, ব্যবহার এবং বিলিং-এর কোনো সম্ভাবনা থাকে না।
- উন্নততর অফলাইন সাপোর্ট, কারণ আপনার SDK কনফিগারেশন ডাউনলোড করার জন্য ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই।
এমুলেটরগুলোর সাথে যোগাযোগ করার জন্য আপনার অ্যাপটিকে প্রয়োজনীয় সরঞ্জাম দিয়ে সজ্জিত করুন।
অ্যান্ড্রয়েড, অ্যাপল প্ল্যাটফর্ম এবং ওয়েব এসডিকে
Cloud Storage for Firebase এমুলেটরের সাথে ইন্টারঅ্যাক্ট করার জন্য আপনার ইন-অ্যাপ কনফিগারেশন বা টেস্ট ক্লাসগুলো নিম্নরূপভাবে সেট আপ করুন।
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
সুইফট
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
এমুলেটর ব্যবহার করে Cloud Storage for Firebase ইভেন্ট দ্বারা ট্রিগার হওয়া ক্লাউড ফাংশনগুলো পরীক্ষা করার জন্য কোনো অতিরিক্ত সেটআপের প্রয়োজন নেই। যখন Cloud Storage for Firebase এবং Cloud Functions এমুলেটর উভয়ই চালু থাকে, তখন তারা স্বয়ংক্রিয়ভাবে একসাথে কাজ করে।
Admin SDK
যখন FIREBASE_STORAGE_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবলটি সেট করা থাকে, তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Cloud Storage for Firebase এমুলেটরের সাথে সংযুক্ত হয়।
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
উল্লেখ্য যে, Cloud Functions এমুলেটরটি Cloud Storage for Firebase এমুলেটর সম্পর্কে স্বয়ংক্রিয়ভাবে অবগত থাকে, তাই Cloud Functions এবং Cloud Storage for Firebase এমুলেটরগুলির মধ্যে ইন্টিগ্রেশন পরীক্ষা করার সময় আপনি এই ধাপটি এড়িয়ে যেতে পারেন। Cloud Storage for Firebase -এ অ্যাডমিন এসডিকে-এর জন্য এনভায়রনমেন্ট ভেরিয়েবলটি স্বয়ংক্রিয়ভাবে সেট হয়ে যাবে।
আপনি যদি আপনার Admin SDK কোডকে অন্য কোনো পরিবেশে চলমান একটি শেয়ার্ড এমুলেটরের সাথে সংযোগ করতে চান, তাহলে আপনাকে Firebase CLI ব্যবহার করে সেট করা একই প্রজেক্ট আইডি উল্লেখ করতে হবে। আপনি সরাসরি initializeApp এ একটি প্রজেক্ট আইডি পাস করতে পারেন অথবা GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
নোড.জেএস অ্যাডমিন এসডিকে
admin.initializeApp({ projectId: "your-project-id" });
পরিবেশগত পরিবর্তনশীল
export GCLOUD_PROJECT="your-project-id"
আমদানি ও রপ্তানি ডেটা
Cloud Storage for Firebase আপনাকে একটি চলমান এমুলেটর ইনস্ট্যান্স থেকে ডেটা এক্সপোর্ট করার সুযোগ দেয়। আপনার ইউনিট টেস্ট বা কন্টিনিউয়াস ইন্টিগ্রেশন ওয়ার্কফ্লোতে ব্যবহারের জন্য একটি বেসলাইন ডেটা সেট নির্ধারণ করুন, তারপর দলের মধ্যে শেয়ার করার জন্য এটি এক্সপোর্ট করুন।
firebase emulators:export ./dirপরীক্ষার সময়, এমুলেটর চালু হলে বেসলাইন ডেটা ইম্পোর্ট করুন।
firebase emulators:start --import=./dirআপনি একটি এক্সপোর্ট পাথ নির্দিষ্ট করে অথবা কেবল --import ফ্ল্যাগে দেওয়া পাথটি ব্যবহার করে এমুলেটরকে শাটডাউনের সময় ডেটা এক্সপোর্ট করার নির্দেশ দিতে পারেন।
firebase emulators:start --import=./dir --export-on-exitএই ডেটা ইম্পোর্ট এবং এক্সপোর্ট অপশনগুলো ` firebase emulators:exec কমান্ডের সাথেও কাজ করে। আরও বিস্তারিত জানতে, এমুলেটর কমান্ড রেফারেন্স দেখুন।
Cloud Storage for Firebase প্রোডাকশন থেকে কীভাবে আলাদা
ক্লায়েন্ট অ্যাপ পরীক্ষার জন্য, Cloud Storage for Firebase এমুলেটরটি ফায়ারবেস এপিআই সারফেস এরিয়ার ক্ষেত্রে প্রোডাকশনের সাথে প্রায় নিখুঁতভাবে মিলে যায়। আশা করা যায়, সমস্ত ফায়ারবেস কমান্ড সাধারণ ফায়ারবেস এসডিকেগুলোর (ওয়েব, অ্যান্ড্রয়েড এবং অ্যাপল প্ল্যাটফর্ম) মধ্যে কাজ করবে।
সার্ভার-সাইড অ্যাপ পরীক্ষার ক্ষেত্রে কিছু সীমাবদ্ধতা রয়েছে। Firebase Admin SDK-গুলো Google Cloud API সারফেস ব্যবহার করে, এবং এই API-এর সমস্ত এন্ডপয়েন্ট অনুকরণ করা হয় না। একটি সাধারণ নিয়ম হিসাবে, ক্লায়েন্ট SDK থেকে যা কিছু করা যায় (যেমন ফাইল আপলোড বা ডিলিট করা, মেটাডেটা পাওয়া ও সেট করা), তা Admin SDK থেকেও ব্যবহারের জন্য প্রয়োগ করা হয়েছে, কিন্তু এর বাইরে আর কিছু করা হয়নি। উল্লেখযোগ্য ব্যতিক্রমগুলো নিচে তালিকাভুক্ত করা হলো।
গুগল ক্লাউড স্টোরেজ থেকে পার্থক্য
স্টোরেজ এমুলেটর সহ Cloud Storage for Firebase পণ্যটি, স্টোরেজ অবজেক্টের উপর দৃষ্টি নিবদ্ধ করে গুগল ক্লাউড স্টোরেজ (GCS)-এর কার্যকারিতার একটি উপসেট প্রদান করে, যা ফায়ারবেস অ্যাপ তৈরির জন্য অত্যন্ত উপযোগী। Cloud Storage for Firebase নিম্নলিখিত দিকগুলিতে GCS থেকে ভিন্ন:
- Cloud Storage for Firebase বর্তমানে স্টোরেজ বাকেট তৈরি, তালিকাভুক্ত করা, পাওয়া বা মুছে ফেলার জন্য
Bucketএপিআই সমর্থন করে না। - গুগল ক্লাউড স্টোরেজ অবজেক্টস এপিআই (Google Cloud Storage Objects API) থেকে নিম্নলিখিত মেথডগুলো সমর্থিত:
copy,delete,get,insert,list,patch,rewrite,update।
ক্লাউড আইএএম
ফায়ারবেস এমুলেটর স্যুট চলার জন্য কোনো IAM-সম্পর্কিত আচরণ অনুকরণ বা অনুসরণ করার চেষ্টা করে না। এমুলেটরগুলো প্রদত্ত ফায়ারবেস নিরাপত্তা নিয়মগুলো মেনে চলে, কিন্তু যেসব ক্ষেত্রে সাধারণত IAM ব্যবহৃত হয়, যেমন ক্লাউড ফাংশন চালু করার সার্ভিস অ্যাকাউন্ট এবং তার ফলে অনুমতি নির্ধারণ করতে, সেসব ক্ষেত্রে এমুলেটরটি কনফিগারযোগ্য নয় এবং সরাসরি একটি লোকাল স্ক্রিপ্ট চালানোর মতোই আপনার ডেভেলপার মেশিনে থাকা বিশ্বব্যাপী উপলব্ধ অ্যাকাউন্টটি ব্যবহার করবে।
পাব/সাব বিজ্ঞপ্তি
Cloud Storage for Firebase এমুলেটরটি ক্লাউড Pub/Sub এমুলেটরের সাথে ইন্টিগ্রেট করে না এবং একারণে স্টোরেজ অবজেক্ট পরিবর্তনের জন্য চ্যানেল/নোটিফিকেশন তৈরি করা সমর্থন করে না। আমরা সরাসরি Cloud Functions স্টোরেজ ট্রিগার ব্যবহার করার পরামর্শ দিই।
বালতি-স্তরের মেটাডেটা
Cloud Storage for Firebase এমুলেটরটি স্টোরেজ ক্লাস, বাকেট-লেভেল CORS কনফিগারেশন, লেবেল বা রিটেনশন পলিসি সহ কোনো বাকেট-লেভেল কনফিগারেশন সমর্থন করে না। ফায়ারবেস সময়ের সাথে সাথে এই সমর্থন উন্নত করার পরিকল্পনা করছে।
এরপর কী?
- নির্বাচিত ভিডিও এবং বিস্তারিত নির্দেশনামূলক উদাহরণের জন্য, ফায়ারবেস এমুলেটর প্রশিক্ষণ প্লেলিস্টটি অনুসরণ করুন।
- যেহেতু ট্রিগারড ফাংশনগুলি Cloud Storage for Firebase এর একটি সাধারণ ইন্টিগ্রেশন, তাই রান ফাংশনস লোকালি -তে Cloud Functions for Firebase এমুলেটর সম্পর্কে আরও জানুন।