আপনার অ্যাপটিকে Cloud Functions এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝতে পেরেছেন এবং আপনি Local Emulator Suite ইনস্টল এবং কনফিগার করেছেন এবং এর CLI কমান্ডগুলি পর্যালোচনা করেছেন।
একটি Firebase প্রকল্প বেছে নিন
Firebase Local Emulator Suite একটি একক ফায়ারবেস প্রকল্পের জন্য পণ্য অনুকরণ করে।
ব্যবহারের জন্য প্রজেক্ট নির্বাচন করতে, এমুলেটর শুরু করার আগে, CLI রানে আপনার ওয়ার্কিং ডিরেক্টরিতে firebase use । অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project ফ্ল্যাগটি পাস করতে পারেন।
Local Emulator Suite বাস্তব ফায়ারবেস প্রকল্প এবং ডেমো প্রকল্পের অনুকরণ সমর্থন করে।
| প্রকল্পের ধরণ | ফিচার | এমুলেটরের সাথে ব্যবহার করুন |
|---|---|---|
| বাস্তব | একটি আসল ফায়ারবেস প্রকল্প হল আপনার তৈরি এবং কনফিগার করা প্রকল্প (সম্ভবত Firebase কনসোলের মাধ্যমে)। বাস্তব প্রকল্পগুলিতে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, অথবা ফায়ারবেস প্রকল্পের জন্য আপনার সেট আপ করা অন্য কোনও রিসোর্স। | আসল ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনি যেকোনো বা সমস্ত সমর্থিত পণ্যের জন্য এমুলেটর চালাতে পারেন। আপনি যে পণ্যগুলি অনুকরণ করছেন না, তার জন্য আপনার অ্যাপস এবং কোড লাইভ রিসোর্সের সাথে ইন্টারঅ্যাক্ট করবে (ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি)। |
| ডেমো | একটি ডেমো ফায়ারবেস প্রকল্পের কোনও বাস্তব ফায়ারবেস কনফিগারেশন এবং কোনও লাইভ রিসোর্স নেই। এই প্রকল্পগুলি সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়। ডেমো প্রকল্পের জন্য প্রকল্প আইডিগুলিতে | ডেমো ফায়ারবেস প্রজেক্টের সাথে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরের সাথে ইন্টারঅ্যাক্ট করে। যদি আপনার অ্যাপ এমন কোনও রিসোর্সের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য একটি এমুলেটর চলছে না, তাহলে সেই কোডটি ব্যর্থ হবে। |
আমরা আপনাকে যেখানেই সম্ভব ডেমো প্রকল্প ব্যবহার করার পরামর্শ দিচ্ছি। সুবিধার মধ্যে রয়েছে:
- সহজ সেটআপ, যেহেতু আপনি ফায়ারবেস প্রকল্প তৈরি না করেই এমুলেটরগুলি চালাতে পারবেন
- শক্তিশালী নিরাপত্তা, যেহেতু আপনার কোড যদি ভুলবশত অ-অনুকরণীয় (উৎপাদন) সংস্থানগুলিকে ব্যবহার করে, তাহলে ডেটা পরিবর্তন, ব্যবহার এবং বিলিং এর কোনও সম্ভাবনা নেই।
- আরও ভালো অফলাইন সাপোর্ট, যেহেতু আপনার SDK কনফিগারেশন ডাউনলোড করার জন্য ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই।
এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপটি ব্যবহার করুন
কলযোগ্য ফাংশনের জন্য আপনার অ্যাপটি ব্যবহার করুন
যদি আপনার প্রোটোটাইপ এবং পরীক্ষার কার্যকলাপে কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে, Cloud Functions 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 functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
সুইফট
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
HTTPS ফাংশন ইমুলেশনের জন্য আপনার অ্যাপটি ব্যবহার করুন
আপনার কোডের প্রতিটি HTTPS ফাংশন স্থানীয় এমুলেটর থেকে নিম্নলিখিত URL ফর্ম্যাট ব্যবহার করে পরিবেশিত হবে:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
উদাহরণস্বরূপ, ডিফল্ট হোস্ট পোর্ট এবং অঞ্চল সহ একটি সাধারণ helloWorld ফাংশন এখানে পরিবেশিত হবে:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
টাস্ক কিউ ফাংশন এমুলেশনের জন্য আপনার অ্যাপটি ব্যবহার করুন
এমুলেটরটি স্বয়ংক্রিয়ভাবে ট্রিগার সংজ্ঞার উপর ভিত্তি করে এমুলেটেড টাস্ক কিউ সেট আপ করে এবং অ্যাডমিন SDK যদি এমুলেটরটি CLOUD_TASKS_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে চলমান শনাক্ত করে তবে এমুলেটরটিতে এনকুইড রিকোয়েস্টগুলি পুনরায় রুট করে।
মনে রাখবেন যে উৎপাদনে ব্যবহৃত প্রেরণ ব্যবস্থা এমুলেটরে বাস্তবায়িত পদ্ধতির তুলনায় জটিল, তাই আপনার অনুকরণকৃত আচরণ উৎপাদন পরিবেশকে সঠিকভাবে প্রতিফলিত করবে বলে আশা করা উচিত নয়। এমুলেটরের মধ্যে থাকা প্যারামিটারগুলি কাজগুলি প্রেরণ এবং পুনরায় চেষ্টা করার হারের ঊর্ধ্বসীমা প্রদান করে।
ব্যাকগ্রাউন্ড-ট্রিগার করা ফাংশন ইমুলেশনের জন্য আপনার অ্যাপটি ব্যবহার করুন
Cloud Functions এমুলেটর নিম্নলিখিত উৎসগুলি থেকে ব্যাকগ্রাউন্ড-ট্রিগার করা ফাংশনগুলিকে সমর্থন করে:
- Realtime Database এমুলেটর
- Cloud Firestore এমুলেটর
- Authentication এমুলেটর
- Pub/Sub এমুলেটর
- ফায়ারবেস সতর্কতা এমুলেটর
ব্যাকগ্রাউন্ড ইভেন্টগুলি ট্রিগার করতে, Emulator Suite UI ব্যবহার করে ব্যাক-এন্ড রিসোর্সগুলি পরিবর্তন করুন, অথবা আপনার প্ল্যাটফর্মের জন্য SDK ব্যবহার করে আপনার অ্যাপ বা টেস্ট কোডকে এমুলেটরগুলির সাথে সংযুক্ত করে।
এক্সটেনশন দ্বারা নির্গত কাস্টম ইভেন্টগুলির জন্য হ্যান্ডলার পরীক্ষা করুন
Cloud Functions v2 এর সাথে Firebase Extensions কাস্টম ইভেন্টগুলি পরিচালনা করার জন্য আপনি যে ফাংশনগুলি প্রয়োগ করেন, সেগুলির জন্য Cloud Functions এমুলেটরটি Eventarc ট্রিগারগুলিকে সমর্থন করার জন্য Eventarc এমুলেটরের সাথে যুক্ত হয়।
ইভেন্ট নির্গত করে এমন এক্সটেনশনের জন্য কাস্টম ইভেন্ট হ্যান্ডলার পরীক্ষা করতে, আপনাকে অবশ্যই Cloud Functions এবং ইভেন্টটার্ক এমুলেটর ইনস্টল করতে হবে।
Eventarc এমুলেটর চলমান থাকলে, Cloud Functions রানটাইম বর্তমান প্রক্রিয়ায় EVENTARC_EMULATOR এনভায়রনমেন্ট ভেরিয়েবলকে localhost:9299 এ সেট করে। EVENTARC_EMULATOR এনভায়রনমেন্ট ভেরিয়েবল সেট করা হলে Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরের সাথে সংযুক্ত হয়। Configure Local Emulator Suite অধীনে আলোচনা করা ডিফল্ট পোর্টটি আপনি পরিবর্তন করতে পারেন।
যখন পরিবেশ ভেরিয়েবলগুলি সঠিকভাবে কনফিগার করা হয়, তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরে ইভেন্ট পাঠায়। পরিবর্তে, Eventarc এমুলেটর যেকোনো নিবন্ধিত হ্যান্ডলারকে ট্রিগার করার জন্য Cloud Functions এমুলেটরে কল ব্যাক করে।
হ্যান্ডলার এক্সিকিউশন সম্পর্কে বিস্তারিত জানতে আপনি Emulator Suite UI তে ফাংশন লগ পরীক্ষা করতে পারেন।
স্থানীয় পরীক্ষার পরিবেশ কনফিগার করুন
যদি আপনার ফাংশনগুলি dotenv-ভিত্তিক পরিবেশ কনফিগারেশনের উপর নির্ভর করে, তাহলে আপনি আপনার স্থানীয় পরীক্ষার পরিবেশে সেই আচরণটি অনুকরণ করতে পারেন।
স্থানীয় Cloud Functions এমুলেটর ব্যবহার করার সময়, আপনি একটি .env.local ফাইল সেট আপ করে আপনার প্রকল্পের জন্য পরিবেশ ভেরিয়েবলগুলিকে ওভাররাইড করতে পারেন। .env.local এর বিষয়বস্তু .env এবং প্রকল্প-নির্দিষ্ট .env ফাইলের চেয়ে প্রাধান্য পায়।
উদাহরণস্বরূপ, একটি প্রকল্পে উন্নয়ন এবং স্থানীয় পরীক্ষার জন্য সামান্য ভিন্ন মান সম্বলিত এই তিনটি ফাইল অন্তর্ভুক্ত থাকতে পারে:
.env | .env.dev | .env.local |
| গ্রহ = পৃথিবী শ্রোতা = মানুষ | শ্রোতা=দেব মানুষ | শ্রোতা = স্থানীয় মানুষ |
স্থানীয় প্রসঙ্গে শুরু হলে, এমুলেটরটি পরিবেশের ভেরিয়েবলগুলি লোড করে যেমন দেখানো হয়েছে:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
Cloud Functions এমুলেটরের গোপনীয়তা এবং শংসাপত্র
Cloud Functions এমুলেটর সংবেদনশীল কনফিগারেশন তথ্য সংরক্ষণ এবং অ্যাক্সেস করার জন্য সিক্রেট ব্যবহার সমর্থন করে। ডিফল্টরূপে, এমুলেটর অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে আপনার উৎপাদন সিক্রেট অ্যাক্সেস করার চেষ্টা করবে। CI পরিবেশের মতো কিছু পরিস্থিতিতে, অনুমতি সীমাবদ্ধতার কারণে এমুলেটর গোপন মান অ্যাক্সেস করতে ব্যর্থ হতে পারে।
পরিবেশ ভেরিয়েবলের জন্য Cloud Functions এমুলেটর সাপোর্টের মতো, আপনি একটি .secret.local ফাইল সেট আপ করে গোপন মানগুলিকে ওভাররাইড করতে পারেন। এটি আপনার জন্য স্থানীয়ভাবে আপনার ফাংশনগুলি পরীক্ষা করা সহজ করে তোলে, বিশেষ করে যদি আপনার গোপন মানটিতে অ্যাক্সেস না থাকে।
Cloud Functions পরীক্ষা করার জন্য আর কোন কোন সরঞ্জাম বিদ্যমান?
Cloud Functions এমুলেটরটি অন্যান্য প্রোটোটাইপ এবং পরীক্ষার সরঞ্জাম দ্বারা পরিপূরক:
- ক্লাউড ফাংশন শেল, যা ইন্টারেক্টিভ, পুনরাবৃত্তিমূলক ফাংশন প্রোটোটাইপিং এবং ডেভেলপমেন্টের অনুমতি দেয়। শেলটি ডেভেলপমেন্টের জন্য REPL-স্টাইল ইন্টারফেস সহ ক্লাউড ফাংশন এমুলেটর ব্যবহার করে। Cloud Firestore বা Realtime Database এমুলেটরের সাথে কোনও ইন্টিগ্রেশন প্রদান করা হয় না। শেল ব্যবহার করে, আপনি ডেটা মক করেন এবং Local Emulator Suite বর্তমানে সমর্থন করে না এমন পণ্যগুলির সাথে ইন্টারঅ্যাকশন সিমুলেট করার জন্য ফাংশন কল সম্পাদন করেন: অ্যানালিটিক্স, রিমোট কনফিগ এবং ক্র্যাশলিটিক্স।
- ক্লাউড ফাংশনের জন্য ফায়ারবেস টেস্ট SDK, ফাংশন ডেভেলপমেন্টের জন্য mocha ফ্রেমওয়ার্ক সহ একটি Node.js। বাস্তবে, ক্লাউড ফাংশন টেস্ট SDK ক্লাউড ফাংশন শেলের উপরে অটোমেশন প্রদান করে।
আপনি ক্লাউড ফাংশন শেল এবং ক্লাউড ফাংশন টেস্ট SDK সম্পর্কে আরও জানতে পারবেন Test functions interactively এবং Unit testing of Cloud Functions -এ ।
Cloud Functions এমুলেটর কীভাবে উৎপাদন থেকে আলাদা
Cloud Functions এমুলেটরটি বেশিরভাগ ব্যবহারের ক্ষেত্রে উৎপাদন পরিবেশের মোটামুটি কাছাকাছি। নোড রানটাইমের মধ্যে সবকিছু যতটা সম্ভব উৎপাদনের কাছাকাছি নিশ্চিত করার জন্য আমরা ব্যাপক কাজ করেছি। তবে, এমুলেটরটি সম্পূর্ণ কন্টেইনারাইজড উৎপাদন পরিবেশের অনুকরণ করে না, তাই আপনার ফাংশন কোড বাস্তবসম্মতভাবে কার্যকর হলেও, আপনার পরিবেশের অন্যান্য দিকগুলি (যেমন স্থানীয় ফাইল, ফাংশন ক্র্যাশের পরে আচরণ ইত্যাদি) ভিন্ন হবে।
ক্লাউড আইএএম
ফায়ারবেস এমুলেটর স্যুট চালানোর জন্য IAM-সম্পর্কিত কোনও আচরণের প্রতিলিপি তৈরি বা সম্মান করার চেষ্টা করে না। এমুলেটরগুলি প্রদত্ত ফায়ারবেস সুরক্ষা নিয়ম মেনে চলে, তবে এমন পরিস্থিতিতে যেখানে IAM সাধারণত ব্যবহার করা হয়, উদাহরণস্বরূপ ক্লাউড ফাংশনগুলি পরিষেবা অ্যাকাউন্ট চালু করার জন্য এবং এইভাবে অনুমতি দেওয়ার জন্য, এমুলেটরটি কনফিগারযোগ্য নয় এবং আপনার ডেভেলপার মেশিনে বিশ্বব্যাপী উপলব্ধ অ্যাকাউন্টটি ব্যবহার করবে, যেমন সরাসরি স্থানীয় স্ক্রিপ্ট চালানো।
মেমরি এবং প্রসেসরের সীমাবদ্ধতা
এমুলেটরটি আপনার ফাংশনের জন্য মেমরি বা প্রসেসরের সীমাবদ্ধতা প্রয়োগ করে না। তবে, এমুলেটরটি timeoutSeconds রানটাইম আর্গুমেন্টের মাধ্যমে টাইমিং আউট ফাংশন সমর্থন করে।
মনে রাখবেন যে এমুলেটরে ফাংশন চালানোর সময় ফাংশন এক্সিকিউশনের সময় উৎপাদনের সময় থেকে আলাদা হতে পারে। আমরা সুপারিশ করছি যে এমুলেটর দিয়ে ফাংশন ডিজাইন এবং পরীক্ষা করার পরে, এক্সিকিউশনের সময় নিশ্চিত করার জন্য আপনি উৎপাদনে সীমিত পরীক্ষা চালান।
স্থানীয় এবং উৎপাদন পরিবেশের পার্থক্যের জন্য পরিকল্পনা করা
যেহেতু এমুলেটরটি আপনার স্থানীয় মেশিনে চলে, তাই এটি অ্যাপ্লিকেশন এবং অন্তর্নির্মিত প্রোগ্রাম এবং ইউটিলিটিগুলির জন্য আপনার স্থানীয় পরিবেশের উপর নির্ভর করে।
মনে রাখবেন যে Cloud Functions ডেভেলপমেন্টের জন্য আপনার স্থানীয় পরিবেশ Google প্রোডাকশন পরিবেশের থেকে আলাদা হতে পারে:
উৎপাদন পরিবেশ অনুকরণ করার জন্য স্থানীয়ভাবে ইনস্টল করা অ্যাপ্লিকেশনগুলি (যেমন এই টিউটোরিয়াল থেকে ImageMagick) উৎপাদনের আচরণ থেকে ভিন্ন হতে পারে, বিশেষ করে যদি আপনার ভিন্ন সংস্করণের প্রয়োজন হয় বা লিনাক্স-বহির্ভূত পরিবেশে বিকাশ করা হয়। আপনার ফাংশন স্থাপনের পাশাপাশি অনুপস্থিত প্রোগ্রামের নিজস্ব বাইনারি কপি স্থাপন করার কথা বিবেচনা করুন।
একইভাবে, বিল্ট-ইন ইউটিলিটিগুলি (যেমন,
ls,mkdirমতো শেল কমান্ড) প্রোডাকশনে উপলব্ধ সংস্করণগুলির থেকে আলাদা হতে পারে, বিশেষ করে যদি আপনি একটি নন-লিনাক্স পরিবেশে (যেমন, macOS) ডেভেলপ করেন। আপনি নেটিভ কমান্ডের পরিবর্তে নোড-অনলি বিকল্প ব্যবহার করে অথবা আপনার স্থাপনার সাথে বান্ডিল করার জন্য লিনাক্স বাইনারি তৈরি করে এই সমস্যাটি মোকাবেলা করতে পারেন।
পুনরায় চেষ্টা করা হচ্ছে
ক্লাউড ফাংশন এমুলেটর ব্যর্থতার ক্ষেত্রে পুনরায় ফাংশন চেষ্টা সমর্থন করে না।
এরপর কী?
- ভিডিওর একটি সেট এবং বিস্তারিত কীভাবে করবেন তার উদাহরণের জন্য, Firebase Emulators Training Playlist অনুসরণ করুন।
- Cloud Functions for Firebase সম্পর্কে আরও জানুন Run functions locally এ।