আপনার অ্যাপ Cloud Storage for Firebase এমুলেটরের সাথে কানেক্ট করার আগে, নিশ্চিত করুন যে আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বোঝেন, এবং আপনি Local Emulator Suite ইনস্টল ও কনফিগার করেছেন এবং এর CLI কমান্ড পর্যালোচনা করেছেন।
Firebase প্রোজেক্ট বেছে নিন
Firebase Local Emulator Suite একটি Firebase প্রোজেক্টের জন্য প্রোডাক্ট এমুলেট করে।
ব্যবহার করার জন্য প্রোজেক্ট বেছে নিতে, এমুলেটর শুরু করার আগে, আপনার ওয়ার্কিং ডিরেক্টরিতে CLI রান
firebase use করুন। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে
--project ফ্ল্যাগ
পাস করতে পারেন।
Local Emulator Suite আসল Firebase প্রোজেক্ট এবং ডেমো প্রোজেক্টের এমুলেশন সাপোর্ট করে।
| প্রোজেক্টের ধরন | ফিচার | এমুলেটরের সাথে ব্যবহার করুন |
|---|---|---|
| রিয়েল |
আসল Firebase প্রোজেক্ট হল এমন একটি প্রোজেক্ট যা আপনি তৈরি ও কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। আসল প্রোজেক্টে লাইভ রিসোর্স থাকে, যেমন ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন বা সেই Firebase প্রোজেক্টের জন্য আপনার সেট-আপ করা অন্য যেকোনও রিসোর্স। |
আসল Firebase প্রোজেক্ট নিয়ে কাজ করার সময়, আপনি কাজ করে এমন যেকোনও বা সব প্রোডাক্টের জন্য এমুলেটর চালাতে পারবেন। আপনি এমুলেট করছেন না এমন যেকোনও প্রোডাক্টের জন্য, আপনার অ্যাপ এবং কোড লাইভ রিসোর্সের (ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি) সাথে ইন্টার্যাক্ট করবে। |
| নমুনা |
ডেমো Firebase প্রোজেক্টে কোনও আসল Firebase কনফিগারেশন এবং লাইভ রিসোর্স থাকে না। এইসব প্রোজেক্ট সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়। ডেমো প্রোজেক্টের প্রোজেক্ট আইডিতে |
ডেমো Firebase প্রোজেক্টের সাথে কাজ করার সময়, আপনার অ্যাপ ও কোড শুধুমাত্র এমুলেটরের সাথে ইন্টার্যাক্ট করে। আপনার অ্যাপ যদি এমন কোনও রিসোর্সের সাথে ইন্টার্যাক্ট করার চেষ্টা করে যার জন্য এমুলেটর চলছে না, তাহলে সেই কোড কাজ করবে না। |
আমরা সাজেস্ট করি যে যেখানে সম্ভব সেখানে ডেমো প্রোজেক্ট ব্যবহার করুন। সুবিধার মধ্যে এইসব অন্তর্ভুক্ত আছে:
- সহজ সেট-আপ, কারণ আপনি Firebase প্রোজেক্ট তৈরি না করেই এমুলেটর চালাতে পারবেন
- আরও শক্তিশালী নিরাপত্তা, কারণ আপনার কোড যদি ভুলবশত নন-এমুলেটেড (প্রোডাকশন) রিসোর্স ইনভোক করে, তাহলে ডেটা পরিবর্তন, ব্যবহার এবং বিলিংয়ের কোনও সম্ভাবনা থাকে না
- আরও ভালো অফলাইন সহায়তা, কারণ আপনার SDK কনফিগারেশন ডাউনলোড করার জন্য ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই।
এমুলেটরের সাথে কথা বলতে আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
Android, Apple প্ল্যাটফর্ম ও ওয়েব 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);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Unity
FirebaseStorage storage = FirebaseStorage.DefaultInstance; // Connects to the Storage Emulator running on port 9199 storage.UseEmulator("127.0.0.1", 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-এ অ্যাডমিন SDK-এর জন্য এনভায়রনমেন্ট ভেরিয়েবল অটোমেটিক সেট হয়ে যাবে।
আপনি যদি চান যে আপনার Admin SDK কোড অন্য পরিবেশে চলা একটি শেয়ার করা এমুলেটরের সাথে কানেক্ট হোক, তাহলে আপনাকে Firebase CLI ব্যবহার করে সেট করা একই প্রোজেক্ট আইডি উল্লেখ করতে হবে।
আপনি সরাসরি initializeApp-এ প্রোজেক্ট আইডি পাস করতে পারেন অথবা
GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
Node.js অ্যাডমিন SDK
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 এমুলেটর কীভাবে প্রোডাকশন থেকে আলাদা
ক্লায়েন্ট অ্যাপ পরীক্ষা করার জন্য, Firebase API সারফেস এরিয়ার ক্ষেত্রে Cloud Storage for Firebase এমুলেটর প্রোডাকশনের সাথে প্রায় নিখুঁতভাবে অ্যালাইন করে। সব Firebase কমান্ড সাধারণ Firebase SDK-এর (ওয়েব, Android ও Apple প্ল্যাটফর্ম) মধ্যে কাজ করবে বলে আশা করা হয়।
সার্ভার-সাইড অ্যাপের টেস্টিংয়ের ক্ষেত্রে সীমাবদ্ধতা আছে। Firebase অ্যাডমিন SDK Google Cloud API সারফেস ব্যবহার করে এবং এই API-এর সব এন্ডপয়েন্ট এমুলেট করা হয় না। সাধারণত, ক্লায়েন্ট SDK থেকে যা কিছু করা যায় (ফাইল আপলোড বা মুছে ফেলা, মেটাডেটা পাওয়া ও সেট করা) সেগুলি অ্যাডমিন SDK থেকেও করা যায়, তবে এর বাইরে আর কিছু করা যায় না। উল্লেখযোগ্য ব্যতিক্রমগুলি নিচে তালিকাভুক্ত করা হল।
Google Cloud Storage-এর থেকে পার্থক্য
স্টোরেজ এমুলেটর সহ Cloud Storage for Firebase প্রোডাক্ট, Google Cloud Storage (GCS) ফাংশনের একটি সাবসেট প্রদান করে যা স্টোরেজ অবজেক্টের উপর ফোকাস করে এবং Firebase অ্যাপ ডেভেলপ করার জন্য খুবই উপযোগী। Cloud Storage for Firebase নিম্নলিখিত উপায়ে GCS থেকে আলাদা:
- স্টোরেজ বাকেট তৈরি, তালিকাভুক্ত, পাওয়া বা মুছে ফেলার জন্য
Cloud Storage for Firebase বর্তমানে
BucketAPI-কে সাপোর্ট করে না। - Google Cloud Storage Objects API থেকে,
নিম্নলিখিত পদ্ধতিগুলি কাজ করে:
copy,delete,get,insert,list,patch,rewrite,update.
Cloud IAM
Firebase Emulator Suite, রান করার জন্য IAM-সম্পর্কিত কোনও আচরণ রেপ্লিকেট বা সম্মান করার চেষ্টা করে না। এমুলেটর Firebase নিরাপত্তা নিয়ম মেনে চলে, তবে যেসব পরিস্থিতিতে সাধারণত IAM ব্যবহার করা হয়, যেমন Cloud Functions-এর জন্য সার্ভিস অ্যাকাউন্ট ও তার অনুমতি সেট করা, সেখানে এমুলেটর কনফিগার করা যায় না এবং আপনার ডেভেলপার মেশিনে গ্লোবালি উপলভ্য অ্যাকাউন্ট ব্যবহার করে, যা সরাসরি লোকাল স্ক্রিপ্ট চালানোর মতো।
Pub/Sub বিজ্ঞপ্তি
Cloud Storage for Firebase এমুলেটর Cloud Pub/Sub এমুলেটরের সাথে ইন্টিগ্রেট করে না এবং তাই স্টোরেজ অবজেক্ট পরিবর্তনের জন্য চ্যানেল/বিজ্ঞপ্তি তৈরি করাকে সমর্থন করে না। আমরা সরাসরি Cloud Functions Storage ট্রিগার ব্যবহার করার সাজেশন দিই।
বাকেট-লেভেল মেটাডেটা
Cloud Storage for Firebase এমুলেটর স্টোরেজ ক্লাস, বাকেট-লেভেল CORS কনফিগারেশন, লেবেল বা রিটেনশন নীতি সহ কোনও বাকেট-লেভেল কনফিগারেশন সমর্থন করে না। Firebase সময়ের সাথে সাথে এই সহায়তা উন্নত করার চেষ্টা করছে।
এরপর কী করতে হবে?
- কিউরেট করা ভিডিওর সেট এবং বিস্তারিত কীভাবে-করবেন উদাহরণ পেতে, Firebase এমুলেটর ট্রেনিং প্লেলিস্ট অনুসরণ করুন।
- ট্রিগার করা ফাংশনগুলি Cloud Storage for Firebase-এর সাথে একটি সাধারণ ইন্টিগ্রেশন, Cloud Functions for Firebase এমুলেটর সম্পর্কে আরও জানুন স্থানীয়ভাবে ফাংশন চালান।