আপনার অ্যাপটিকে Cloud Functions এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝতে পেরেছেন এবং আপনি Local Emulator Suite ইনস্টল ও কনফিগার করেছেন এবং এর CLI কমান্ডগুলি পর্যালোচনা করেছেন।
একটি ফায়ারবেস প্রকল্প বেছে নিন
Firebase Local Emulator Suite একটি একক Firebase প্রকল্পের জন্য পণ্য অনুকরণ করে।
ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, আপনি এমুলেটরগুলি শুরু করার আগে, CLI-এ আপনার কাজের ডিরেক্টরিতে firebase use
। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project
পতাকা পাস করতে পারেন।
Local Emulator Suite বাস্তব ফায়ারবেস প্রকল্প এবং ডেমো প্রকল্পের অনুকরণ সমর্থন করে।
প্রকল্পের ধরন | বৈশিষ্ট্য | এমুলেটরগুলির সাথে ব্যবহার করুন |
---|---|---|
রিয়াল | একটি আসল ফায়ারবেস প্রজেক্ট হল আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। বাস্তব প্রজেক্টে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন বা অন্য কোনো রিসোর্স যা আপনি সেই Firebase প্রোজেক্টের জন্য সেট আপ করেন। | বাস্তব ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনি যেকোন বা সমস্ত সমর্থিত পণ্যের জন্য এমুলেটর চালাতে পারেন। যে কোনো পণ্যের জন্য আপনি অনুকরণ করছেন না, আপনার অ্যাপ এবং কোড লাইভ রিসোর্সের সাথে ইন্টারঅ্যাক্ট করবে (ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, ইত্যাদি)। |
ডেমো | একটি ডেমো ফায়ারবেস প্রজেক্টের কোনো বাস্তব ফায়ারবেস কনফিগারেশন নেই এবং কোনো লাইভ রিসোর্স নেই। এই প্রকল্পগুলি সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়। ডেমো প্রজেক্টের জন্য প্রজেক্ট আইডিতে | ডেমো ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরগুলির সাথে ইন্টারঅ্যাক্ট করে৷ যদি আপনার অ্যাপটি এমন একটি সংস্থানের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য একটি এমুলেটর চলছে না, সেই কোডটি ব্যর্থ হবে৷ |
আমরা আপনাকে যেখানেই সম্ভব ডেমো প্রকল্প ব্যবহার করার পরামর্শ দিই। সুবিধার মধ্যে রয়েছে:
- সহজ সেটআপ, যেহেতু আপনি ফায়ারবেস প্রজেক্ট তৈরি না করেই এমুলেটর চালাতে পারবেন
- শক্তিশালী নিরাপত্তা, যেহেতু আপনার কোড ভুলবশত নন-ইমুলেটেড (উৎপাদন) সংস্থানগুলিকে আমন্ত্রণ জানায়, তবে ডেটা পরিবর্তন, ব্যবহার এবং বিলিং এর কোন সুযোগ নেই
- ভাল অফলাইন সমর্থন, যেহেতু আপনার SDK কনফিগারেশন ডাউনলোড করতে ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই৷
এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন
কলযোগ্য ফাংশনগুলির জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
যদি আপনার প্রোটোটাইপ এবং পরীক্ষামূলক ক্রিয়াকলাপগুলি কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে, Cloud Functions for Firebase সাথে মিথস্ক্রিয়া কনফিগার করুন এইভাবে:
// 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)
// 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)
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
firebase.functions().useEmulator("127.0.0.1", 5001);
এইচটিটিপিএস ফাংশন ইমুলেশনের জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
আপনার কোডের প্রতিটি 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 এবং ইভেন্টর্ক এমুলেটরগুলি ইনস্টল করতে হবে৷
Cloud Functions রানটাইম EVENTARC_EMULATOR
এনভায়রনমেন্ট ভেরিয়েবলকে localhost:9299
এ বর্তমান প্রক্রিয়ায় সেট করে যদি Eventarc এমুলেটর চালু থাকে। যখন EVENTARC_EMULATOR
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরের সাথে সংযুক্ত হয়। আপনি 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 |
গ্রহ=পৃথিবী AUDIENCE=মানুষ | AUDIENCE=দেব মানুষ | AUDIENCE=স্থানীয় মানুষ |
স্থানীয় প্রেক্ষাপটে শুরু হলে, এমুলেটর পরিবেশের ভেরিয়েবল লোড করে যেমন দেখানো হয়েছে:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
Cloud Functions এমুলেটরে গোপনীয়তা এবং প্রমাণপত্রাদি
Cloud Functions এমুলেটর সংবেদনশীল কনফিগারেশন তথ্য সংরক্ষণ এবং অ্যাক্সেস করতে গোপনীয়তার ব্যবহার সমর্থন করে। ডিফল্টরূপে, এমুলেটর অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে আপনার উত্পাদন গোপনীয়তা অ্যাক্সেস করার চেষ্টা করবে৷ সিআই এনভায়রনমেন্টের মতো নির্দিষ্ট পরিস্থিতিতে, অনুমতি সীমাবদ্ধতার কারণে এমুলেটর গোপন মান অ্যাক্সেস করতে ব্যর্থ হতে পারে।
এনভায়রনমেন্ট ভেরিয়েবলের জন্য Cloud Functions এমুলেটর সমর্থনের মতো, আপনি একটি .secret.local
ফাইল সেট আপ করে গোপন মানগুলিকে ওভাররাইড করতে পারেন। এটি আপনার জন্য স্থানীয়ভাবে আপনার ফাংশনগুলি পরীক্ষা করা সহজ করে তোলে, বিশেষ করে যদি আপনার গোপন মানটিতে অ্যাক্সেস না থাকে।
Cloud Functions পরীক্ষা করার জন্য অন্য কোন সরঞ্জাম বিদ্যমান?
Cloud Functions এমুলেটর অন্যান্য প্রোটোটাইপ এবং পরীক্ষার সরঞ্জাম দ্বারা পরিপূরক:
- ক্লাউড ফাংশন শেল, যা ইন্টারেক্টিভ, পুনরাবৃত্তিমূলক ফাংশন প্রোটোটাইপিং এবং বিকাশের জন্য অনুমতি দেয়। শেলটি বিকাশের জন্য একটি REPL-শৈলী ইন্টারফেস সহ ক্লাউড ফাংশন এমুলেটর নিয়োগ করে। Cloud Firestore বা Realtime Database এমুলেটরগুলির সাথে কোনও একীকরণ সরবরাহ করা হয় না। শেল ব্যবহার করে, আপনি ডেটা উপহাস করেন এবং Local Emulator Suite বর্তমানে সমর্থন করে না এমন পণ্যগুলির সাথে মিথস্ক্রিয়া অনুকরণ করতে ফাংশন কলগুলি সম্পাদন করেন: অ্যানালিটিক্স, রিমোট কনফিগ এবং ক্র্যাশলিটিক্স৷
- ক্লাউড ফাংশনের জন্য ফায়ারবেস টেস্ট SDK, ফাংশন ডেভেলপমেন্টের জন্য মোচা ফ্রেমওয়ার্ক সহ একটি Node.js। কার্যত, ক্লাউড ফাংশন টেস্ট SDK ক্লাউড ফাংশন শেলের উপরে অটোমেশন প্রদান করে।
আপনি ক্লাউড ফাংশন শেল এবং ক্লাউড ফাংশন টেস্ট SDK সম্পর্কে ইন্টারেক্টিভভাবে টেস্ট ফাংশন এবং ক্লাউড ফাংশনগুলির ইউনিট টেস্টিং সম্পর্কে আরও জানতে পারেন৷
কিভাবে Cloud Functions এমুলেটর উৎপাদন থেকে আলাদা
Cloud Functions এমুলেটর বেশিরভাগ ব্যবহারের ক্ষেত্রে উত্পাদন পরিবেশের মোটামুটি কাছাকাছি। আমরা নোড রানটাইমের মধ্যে সবকিছু যতটা সম্ভব উৎপাদনের কাছাকাছি তা নিশ্চিত করার জন্য ব্যাপক কাজ করেছি। যাইহোক, এমুলেটর সম্পূর্ণ কন্টেইনারাইজড প্রোডাকশন এনভায়রনমেন্টের অনুকরণ করে না, তাই যখন আপনার ফাংশন কোড বাস্তবসম্মতভাবে কার্যকর হবে, আপনার পরিবেশের অন্যান্য দিকগুলি (যেমন স্থানীয় ফাইল, ফাংশন ক্র্যাশ হওয়ার পরে আচরণ ইত্যাদি) ভিন্ন হবে।
ক্লাউড আইএএম
ফায়ারবেস এমুলেটর স্যুট চালানোর জন্য কোনো IAM-সম্পর্কিত আচরণ প্রতিলিপি বা সম্মান করার চেষ্টা করে না। এমুলেটরগুলি প্রদত্ত ফায়ারবেস নিরাপত্তা বিধি মেনে চলে, কিন্তু যে পরিস্থিতিতে IAM সাধারণত ব্যবহার করা হয়, উদাহরণস্বরূপ ক্লাউড ফাংশন সেট করতে পরিষেবা অ্যাকাউন্ট এবং এইভাবে অনুমতিগুলি সেট করতে, এমুলেটরটি কনফিগারযোগ্য নয় এবং আপনার ডেভেলপার মেশিনে বিশ্বব্যাপী উপলব্ধ অ্যাকাউন্ট ব্যবহার করবে, সরাসরি স্থানীয় স্ক্রিপ্ট চালানোর মতো।
মেমরি এবং প্রসেসরের সীমাবদ্ধতা
এমুলেটর আপনার ফাংশনগুলির জন্য মেমরি বা প্রসেসরের সীমাবদ্ধতা প্রয়োগ করে না। যাইহোক, এমুলেটর timeoutSeconds
রানটাইম আর্গুমেন্টের মাধ্যমে টাইম আউট ফাংশন সমর্থন করে।
মনে রাখবেন যে এমুলেটরে ফাংশন চালানোর সময় ফাংশন এক্সিকিউশন সময় উৎপাদন থেকে আলাদা হতে পারে। আমরা সুপারিশ করি যে আপনি এমুলেটর দিয়ে ফাংশন ডিজাইন এবং পরীক্ষা করার পরে, আপনি সম্পাদনের সময় নিশ্চিত করতে উত্পাদনে সীমিত পরীক্ষা চালান।
স্থানীয় এবং উত্পাদন পরিবেশে পার্থক্য জন্য পরিকল্পনা
যেহেতু এমুলেটর আপনার স্থানীয় মেশিনে চলে, এটি অ্যাপ্লিকেশন এবং বিল্ট-ইন প্রোগ্রাম এবং ইউটিলিটিগুলির জন্য আপনার স্থানীয় পরিবেশের উপর নির্ভর করে।
সচেতন থাকুন যে Cloud Functions বিকাশের জন্য আপনার স্থানীয় পরিবেশ Google উত্পাদন পরিবেশ থেকে আলাদা হতে পারে:
প্রোডাকশন এনভায়রনমেন্ট (যেমন এই টিউটোরিয়াল থেকে ImageMagick ) অনুকরণ করার জন্য আপনি স্থানীয়ভাবে ইনস্টল করা অ্যাপ্লিকেশনগুলি উত্পাদন থেকে আচরণে ভিন্ন হতে পারে, বিশেষ করে যদি আপনার একটি ভিন্ন সংস্করণের প্রয়োজন হয় বা একটি নন-লিনাক্স পরিবেশে বিকাশ করা হয়। আপনার ফাংশন স্থাপনার পাশাপাশি অনুপস্থিত প্রোগ্রামের আপনার নিজস্ব বাইনারি কপি স্থাপন করার কথা বিবেচনা করুন।
একইভাবে, অন্তর্নির্মিত ইউটিলিটিগুলি (যেমন, শেল কমান্ড যেমন
ls
,mkdir
) উত্পাদনে উপলব্ধ সংস্করণগুলির থেকে আলাদা হতে পারে, বিশেষ করে যদি আপনি একটি নন-লিনাক্স পরিবেশে (যেমন, macOS) বিকাশ করছেন। আপনি নেটিভ কমান্ডের জন্য নোড-অনলি বিকল্পগুলি ব্যবহার করে বা আপনার স্থাপনার সাথে বান্ডিল করার জন্য লিনাক্স বাইনারি তৈরি করে এই সমস্যাটি পরিচালনা করতে পারেন।
পুনরায় চেষ্টা করা হচ্ছে
ক্লাউড ফাংশন এমুলেটর ব্যর্থ হলে ফাংশন পুনরায় চেষ্টা করা সমর্থন করে না।
এরপর কি?
- ভিডিওর একটি কিউরেটেড সেট এবং কীভাবে-করবেন তার বিস্তারিত উদাহরণের জন্য, ফায়ারবেস এমুলেটর ট্রেনিং প্লেলিস্ট অনুসরণ করুন।
- স্থানীয়ভাবে রান ফাংশনগুলিতে Cloud Functions for Firebase সম্পর্কে আরও জানুন।
আপনার অ্যাপটিকে Cloud Functions এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝতে পেরেছেন এবং আপনি Local Emulator Suite ইনস্টল ও কনফিগার করেছেন এবং এর CLI কমান্ডগুলি পর্যালোচনা করেছেন।
একটি ফায়ারবেস প্রকল্প বেছে নিন
Firebase Local Emulator Suite একটি একক Firebase প্রকল্পের জন্য পণ্য অনুকরণ করে।
ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, আপনি এমুলেটরগুলি শুরু করার আগে, CLI-এ আপনার কাজের ডিরেক্টরিতে firebase use
। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project
পতাকা পাস করতে পারেন।
Local Emulator Suite বাস্তব ফায়ারবেস প্রকল্প এবং ডেমো প্রকল্পের অনুকরণ সমর্থন করে।
প্রকল্পের ধরন | বৈশিষ্ট্য | এমুলেটরগুলির সাথে ব্যবহার করুন |
---|---|---|
রিয়াল | একটি আসল ফায়ারবেস প্রজেক্ট হল আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। বাস্তব প্রজেক্টে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন বা অন্য কোনো রিসোর্স যা আপনি সেই Firebase প্রোজেক্টের জন্য সেট আপ করেন। | বাস্তব ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনি যেকোন বা সমস্ত সমর্থিত পণ্যের জন্য এমুলেটর চালাতে পারেন। যে কোনো পণ্যের জন্য আপনি অনুকরণ করছেন না, আপনার অ্যাপ এবং কোড লাইভ রিসোর্সের সাথে ইন্টারঅ্যাক্ট করবে (ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, ইত্যাদি)। |
ডেমো | একটি ডেমো ফায়ারবেস প্রজেক্টের কোনো বাস্তব ফায়ারবেস কনফিগারেশন নেই এবং কোনো লাইভ রিসোর্স নেই। এই প্রকল্পগুলি সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়। ডেমো প্রজেক্টের জন্য প্রজেক্ট আইডিতে | ডেমো ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরগুলির সাথে ইন্টারঅ্যাক্ট করে৷ যদি আপনার অ্যাপটি এমন একটি সংস্থানের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য একটি এমুলেটর চলছে না, সেই কোডটি ব্যর্থ হবে৷ |
আমরা আপনাকে যেখানেই সম্ভব ডেমো প্রকল্প ব্যবহার করার পরামর্শ দিই। সুবিধার মধ্যে রয়েছে:
- সহজ সেটআপ, যেহেতু আপনি ফায়ারবেস প্রজেক্ট তৈরি না করেই এমুলেটর চালাতে পারবেন
- শক্তিশালী নিরাপত্তা, যেহেতু আপনার কোড ভুলবশত নন-ইমুলেটেড (উৎপাদন) সংস্থানগুলিকে আমন্ত্রণ জানায়, তবে ডেটা পরিবর্তন, ব্যবহার এবং বিলিং এর কোন সুযোগ নেই
- ভাল অফলাইন সমর্থন, যেহেতু আপনার SDK কনফিগারেশন ডাউনলোড করতে ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই৷
এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন
কলযোগ্য ফাংশনগুলির জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
যদি আপনার প্রোটোটাইপ এবং পরীক্ষামূলক ক্রিয়াকলাপগুলি কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে, Cloud Functions for Firebase সাথে মিথস্ক্রিয়া কনফিগার করুন এইভাবে:
// 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)
// 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)
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
firebase.functions().useEmulator("127.0.0.1", 5001);
এইচটিটিপিএস ফাংশন ইমুলেশনের জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
আপনার কোডের প্রতিটি 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 এবং ইভেন্টর্ক এমুলেটরগুলি ইনস্টল করতে হবে৷
Cloud Functions রানটাইম EVENTARC_EMULATOR
এনভায়রনমেন্ট ভেরিয়েবলকে localhost:9299
এ বর্তমান প্রক্রিয়ায় সেট করে যদি Eventarc এমুলেটর চালু থাকে। যখন EVENTARC_EMULATOR
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরের সাথে সংযুক্ত হয়। আপনি 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 |
গ্রহ=পৃথিবী AUDIENCE=মানুষ | AUDIENCE=দেব মানুষ | AUDIENCE=স্থানীয় মানুষ |
স্থানীয় প্রেক্ষাপটে শুরু হলে, এমুলেটর পরিবেশের ভেরিয়েবল লোড করে যেমন দেখানো হয়েছে:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
Cloud Functions এমুলেটরে গোপনীয়তা এবং প্রমাণপত্রাদি
Cloud Functions এমুলেটর সংবেদনশীল কনফিগারেশন তথ্য সংরক্ষণ এবং অ্যাক্সেস করতে গোপনীয়তার ব্যবহার সমর্থন করে। ডিফল্টরূপে, এমুলেটর অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে আপনার উত্পাদন গোপনীয়তা অ্যাক্সেস করার চেষ্টা করবে৷ সিআই এনভায়রনমেন্টের মতো নির্দিষ্ট পরিস্থিতিতে, অনুমতি সীমাবদ্ধতার কারণে এমুলেটর গোপন মান অ্যাক্সেস করতে ব্যর্থ হতে পারে।
এনভায়রনমেন্ট ভেরিয়েবলের জন্য Cloud Functions এমুলেটর সমর্থনের মতো, আপনি একটি .secret.local
ফাইল সেট আপ করে গোপন মানগুলিকে ওভাররাইড করতে পারেন। এটি আপনার জন্য স্থানীয়ভাবে আপনার ফাংশনগুলি পরীক্ষা করা সহজ করে তোলে, বিশেষ করে যদি আপনার গোপন মানটিতে অ্যাক্সেস না থাকে।
Cloud Functions পরীক্ষা করার জন্য অন্য কোন সরঞ্জাম বিদ্যমান?
Cloud Functions এমুলেটর অন্যান্য প্রোটোটাইপ এবং পরীক্ষার সরঞ্জাম দ্বারা পরিপূরক:
- ক্লাউড ফাংশন শেল, যা ইন্টারেক্টিভ, পুনরাবৃত্তিমূলক ফাংশন প্রোটোটাইপিং এবং বিকাশের জন্য অনুমতি দেয়। শেলটি বিকাশের জন্য একটি REPL-শৈলী ইন্টারফেস সহ ক্লাউড ফাংশন এমুলেটর নিয়োগ করে। Cloud Firestore বা Realtime Database এমুলেটরগুলির সাথে কোনও একীকরণ সরবরাহ করা হয় না। শেল ব্যবহার করে, আপনি ডেটা উপহাস করেন এবং Local Emulator Suite বর্তমানে সমর্থন করে না এমন পণ্যগুলির সাথে মিথস্ক্রিয়া অনুকরণ করতে ফাংশন কলগুলি সম্পাদন করেন: অ্যানালিটিক্স, রিমোট কনফিগ এবং ক্র্যাশলিটিক্স৷
- ক্লাউড ফাংশনের জন্য ফায়ারবেস টেস্ট SDK, ফাংশন ডেভেলপমেন্টের জন্য মোচা ফ্রেমওয়ার্ক সহ একটি Node.js। কার্যত, ক্লাউড ফাংশন টেস্ট SDK ক্লাউড ফাংশন শেলের উপরে অটোমেশন প্রদান করে।
আপনি ক্লাউড ফাংশন শেল এবং ক্লাউড ফাংশন টেস্ট SDK সম্পর্কে ইন্টারেক্টিভভাবে টেস্ট ফাংশন এবং ক্লাউড ফাংশনগুলির ইউনিট টেস্টিং সম্পর্কে আরও জানতে পারেন৷
কিভাবে Cloud Functions এমুলেটর উৎপাদন থেকে আলাদা
Cloud Functions এমুলেটর বেশিরভাগ ব্যবহারের ক্ষেত্রে উত্পাদন পরিবেশের মোটামুটি কাছাকাছি। আমরা নোড রানটাইমের মধ্যে সবকিছু যতটা সম্ভব উৎপাদনের কাছাকাছি তা নিশ্চিত করার জন্য ব্যাপক কাজ করেছি। যাইহোক, এমুলেটর সম্পূর্ণ কন্টেইনারাইজড প্রোডাকশন এনভায়রনমেন্টের অনুকরণ করে না, তাই যখন আপনার ফাংশন কোড বাস্তবসম্মতভাবে কার্যকর হবে, আপনার পরিবেশের অন্যান্য দিকগুলি (যেমন স্থানীয় ফাইল, ফাংশন ক্র্যাশ হওয়ার পরে আচরণ ইত্যাদি) ভিন্ন হবে।
ক্লাউড আইএএম
ফায়ারবেস এমুলেটর স্যুট চালানোর জন্য কোনো IAM-সম্পর্কিত আচরণ প্রতিলিপি বা সম্মান করার চেষ্টা করে না। এমুলেটরগুলি প্রদত্ত ফায়ারবেস নিরাপত্তা বিধি মেনে চলে, কিন্তু যে পরিস্থিতিতে IAM সাধারণত ব্যবহার করা হয়, উদাহরণস্বরূপ ক্লাউড ফাংশন সেট করতে পরিষেবা অ্যাকাউন্ট এবং এইভাবে অনুমতিগুলি সেট করতে, এমুলেটরটি কনফিগারযোগ্য নয় এবং আপনার ডেভেলপার মেশিনে বিশ্বব্যাপী উপলব্ধ অ্যাকাউন্ট ব্যবহার করবে, সরাসরি স্থানীয় স্ক্রিপ্ট চালানোর মতো।
মেমরি এবং প্রসেসরের সীমাবদ্ধতা
এমুলেটর আপনার ফাংশনগুলির জন্য মেমরি বা প্রসেসরের সীমাবদ্ধতা প্রয়োগ করে না। যাইহোক, এমুলেটর timeoutSeconds
রানটাইম আর্গুমেন্টের মাধ্যমে টাইম আউট ফাংশন সমর্থন করে।
মনে রাখবেন যে এমুলেটরে ফাংশন চালানোর সময় ফাংশন এক্সিকিউশন সময় উৎপাদন থেকে আলাদা হতে পারে। আমরা সুপারিশ করি যে আপনি এমুলেটর দিয়ে ফাংশন ডিজাইন এবং পরীক্ষা করার পরে, আপনি সম্পাদনের সময় নিশ্চিত করতে উত্পাদনে সীমিত পরীক্ষা চালান।
স্থানীয় এবং উত্পাদন পরিবেশে পার্থক্য জন্য পরিকল্পনা
যেহেতু এমুলেটর আপনার স্থানীয় মেশিনে চলে, এটি অ্যাপ্লিকেশন এবং বিল্ট-ইন প্রোগ্রাম এবং ইউটিলিটিগুলির জন্য আপনার স্থানীয় পরিবেশের উপর নির্ভর করে।
সচেতন থাকুন যে Cloud Functions বিকাশের জন্য আপনার স্থানীয় পরিবেশ Google উত্পাদন পরিবেশ থেকে আলাদা হতে পারে:
প্রোডাকশন এনভায়রনমেন্ট (যেমন এই টিউটোরিয়াল থেকে ImageMagick ) অনুকরণ করার জন্য আপনি স্থানীয়ভাবে ইনস্টল করা অ্যাপ্লিকেশনগুলি উত্পাদন থেকে আচরণে ভিন্ন হতে পারে, বিশেষ করে যদি আপনার একটি ভিন্ন সংস্করণের প্রয়োজন হয় বা একটি নন-লিনাক্স পরিবেশে বিকাশ করা হয়। আপনার ফাংশন স্থাপনার পাশাপাশি অনুপস্থিত প্রোগ্রামের আপনার নিজস্ব বাইনারি কপি স্থাপন করার কথা বিবেচনা করুন।
একইভাবে, অন্তর্নির্মিত ইউটিলিটিগুলি (যেমন, শেল কমান্ড যেমন
ls
,mkdir
) উত্পাদনে উপলব্ধ সংস্করণগুলির থেকে আলাদা হতে পারে, বিশেষ করে যদি আপনি একটি নন-লিনাক্স পরিবেশে (যেমন, macOS) বিকাশ করছেন। আপনি নেটিভ কমান্ডের জন্য নোড-অনলি বিকল্পগুলি ব্যবহার করে বা আপনার স্থাপনার সাথে বান্ডিল করার জন্য লিনাক্স বাইনারি তৈরি করে এই সমস্যাটি পরিচালনা করতে পারেন।
পুনরায় চেষ্টা করা হচ্ছে
ক্লাউড ফাংশন এমুলেটর ব্যর্থ হলে ফাংশন পুনরায় চেষ্টা করা সমর্থন করে না।
এরপর কি?
- ভিডিওর একটি কিউরেটেড সেট এবং কীভাবে-করবেন তার বিস্তারিত উদাহরণের জন্য, ফায়ারবেস এমুলেটর ট্রেনিং প্লেলিস্ট অনুসরণ করুন।
- স্থানীয়ভাবে রান ফাংশনগুলিতে Cloud Functions for Firebase সম্পর্কে আরও জানুন।
আপনার অ্যাপটিকে Cloud Functions এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝতে পেরেছেন এবং আপনি Local Emulator Suite ইনস্টল ও কনফিগার করেছেন এবং এর CLI কমান্ডগুলি পর্যালোচনা করেছেন।
একটি ফায়ারবেস প্রকল্প বেছে নিন
Firebase Local Emulator Suite একটি একক Firebase প্রকল্পের জন্য পণ্য অনুকরণ করে।
ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, আপনি এমুলেটরগুলি শুরু করার আগে, CLI-এ আপনার কাজের ডিরেক্টরিতে firebase use
। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project
পতাকা পাস করতে পারেন।
Local Emulator Suite বাস্তব ফায়ারবেস প্রকল্প এবং ডেমো প্রকল্পের অনুকরণ সমর্থন করে।
প্রকল্পের ধরন | বৈশিষ্ট্য | এমুলেটরগুলির সাথে ব্যবহার করুন |
---|---|---|
রিয়াল | একটি আসল ফায়ারবেস প্রজেক্ট হল আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। বাস্তব প্রজেক্টে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন বা অন্য কোনো রিসোর্স যা আপনি সেই Firebase প্রোজেক্টের জন্য সেট আপ করেন। | বাস্তব ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনি যেকোন বা সমস্ত সমর্থিত পণ্যের জন্য এমুলেটর চালাতে পারেন। যে কোনো পণ্যের জন্য আপনি অনুকরণ করছেন না, আপনার অ্যাপ এবং কোড লাইভ রিসোর্সের সাথে ইন্টারঅ্যাক্ট করবে (ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, ইত্যাদি)। |
ডেমো | একটি ডেমো ফায়ারবেস প্রজেক্টের কোনো বাস্তব ফায়ারবেস কনফিগারেশন নেই এবং কোনো লাইভ রিসোর্স নেই। এই প্রকল্পগুলি সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়। ডেমো প্রজেক্টের জন্য প্রজেক্ট আইডিতে | ডেমো ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরগুলির সাথে ইন্টারঅ্যাক্ট করে৷ যদি আপনার অ্যাপটি এমন একটি সংস্থানের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য একটি এমুলেটর চলছে না, সেই কোডটি ব্যর্থ হবে৷ |
আমরা আপনাকে যেখানেই সম্ভব ডেমো প্রকল্প ব্যবহার করার পরামর্শ দিই। সুবিধার মধ্যে রয়েছে:
- সহজ সেটআপ, যেহেতু আপনি ফায়ারবেস প্রজেক্ট তৈরি না করেই এমুলেটর চালাতে পারবেন
- শক্তিশালী নিরাপত্তা, যেহেতু আপনার কোড ভুলবশত নন-ইমুলেটেড (উৎপাদন) সংস্থানগুলিকে আমন্ত্রণ জানায়, তবে ডেটা পরিবর্তন, ব্যবহার এবং বিলিং এর কোন সুযোগ নেই
- ভাল অফলাইন সমর্থন, যেহেতু আপনার SDK কনফিগারেশন ডাউনলোড করতে ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই৷
এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন
কলযোগ্য ফাংশনগুলির জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
যদি আপনার প্রোটোটাইপ এবং পরীক্ষামূলক ক্রিয়াকলাপগুলি কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে, Cloud Functions for Firebase সাথে মিথস্ক্রিয়া কনফিগার করুন এইভাবে:
// 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)
// 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)
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
firebase.functions().useEmulator("127.0.0.1", 5001);
এইচটিটিপিএস ফাংশন ইমুলেশনের জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
আপনার কোডের প্রতিটি 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 এবং ইভেন্টর্ক এমুলেটরগুলি ইনস্টল করতে হবে৷
Cloud Functions রানটাইম EVENTARC_EMULATOR
এনভায়রনমেন্ট ভেরিয়েবলকে localhost:9299
এ বর্তমান প্রক্রিয়ায় সেট করে যদি Eventarc এমুলেটর চালু থাকে। যখন EVENTARC_EMULATOR
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরের সাথে সংযুক্ত হয়। আপনি 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 |
গ্রহ=পৃথিবী AUDIENCE=মানুষ | AUDIENCE=দেব মানুষ | AUDIENCE=স্থানীয় মানুষ |
স্থানীয় প্রেক্ষাপটে শুরু হলে, এমুলেটর পরিবেশের ভেরিয়েবল লোড করে যেমন দেখানো হয়েছে:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
Cloud Functions এমুলেটরে গোপনীয়তা এবং প্রমাণপত্রাদি
Cloud Functions এমুলেটর সংবেদনশীল কনফিগারেশন তথ্য সংরক্ষণ এবং অ্যাক্সেস করতে গোপনীয়তার ব্যবহার সমর্থন করে। ডিফল্টরূপে, এমুলেটর অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে আপনার উত্পাদন গোপনীয়তা অ্যাক্সেস করার চেষ্টা করবে৷ সিআই এনভায়রনমেন্টের মতো নির্দিষ্ট পরিস্থিতিতে, অনুমতি সীমাবদ্ধতার কারণে এমুলেটর গোপন মান অ্যাক্সেস করতে ব্যর্থ হতে পারে।
এনভায়রনমেন্ট ভেরিয়েবলের জন্য Cloud Functions এমুলেটর সমর্থনের মতো, আপনি একটি .secret.local
ফাইল সেট আপ করে গোপন মানগুলিকে ওভাররাইড করতে পারেন। এটি আপনার জন্য স্থানীয়ভাবে আপনার ফাংশনগুলি পরীক্ষা করা সহজ করে তোলে, বিশেষ করে যদি আপনার গোপন মানটিতে অ্যাক্সেস না থাকে।
Cloud Functions পরীক্ষা করার জন্য অন্য কোন সরঞ্জাম বিদ্যমান?
Cloud Functions এমুলেটর অন্যান্য প্রোটোটাইপ এবং পরীক্ষার সরঞ্জাম দ্বারা পরিপূরক:
- ক্লাউড ফাংশন শেল, যা ইন্টারেক্টিভ, পুনরাবৃত্তিমূলক ফাংশন প্রোটোটাইপিং এবং বিকাশের জন্য অনুমতি দেয়। শেলটি বিকাশের জন্য একটি REPL-শৈলী ইন্টারফেস সহ ক্লাউড ফাংশন এমুলেটর নিয়োগ করে। Cloud Firestore বা Realtime Database এমুলেটরগুলির সাথে কোনও একীকরণ সরবরাহ করা হয় না। শেল ব্যবহার করে, আপনি ডেটা উপহাস করেন এবং Local Emulator Suite বর্তমানে সমর্থন করে না এমন পণ্যগুলির সাথে মিথস্ক্রিয়া অনুকরণ করতে ফাংশন কলগুলি সম্পাদন করেন: অ্যানালিটিক্স, রিমোট কনফিগ এবং ক্র্যাশলিটিক্স৷
- ক্লাউড ফাংশনের জন্য ফায়ারবেস টেস্ট SDK, ফাংশন ডেভেলপমেন্টের জন্য মোচা ফ্রেমওয়ার্ক সহ একটি Node.js। কার্যত, ক্লাউড ফাংশন টেস্ট SDK ক্লাউড ফাংশন শেলের উপরে অটোমেশন প্রদান করে।
আপনি ক্লাউড ফাংশন শেল এবং ক্লাউড ফাংশন টেস্ট SDK সম্পর্কে ইন্টারেক্টিভভাবে টেস্ট ফাংশন এবং ক্লাউড ফাংশনগুলির ইউনিট টেস্টিং সম্পর্কে আরও জানতে পারেন৷
কিভাবে Cloud Functions এমুলেটর উৎপাদন থেকে আলাদা
Cloud Functions এমুলেটর বেশিরভাগ ব্যবহারের ক্ষেত্রে উত্পাদন পরিবেশের মোটামুটি কাছাকাছি। আমরা নোড রানটাইমের মধ্যে সবকিছু যতটা সম্ভব উৎপাদনের কাছাকাছি তা নিশ্চিত করার জন্য ব্যাপক কাজ করেছি। যাইহোক, এমুলেটর সম্পূর্ণ কন্টেইনারাইজড প্রোডাকশন এনভায়রনমেন্টের অনুকরণ করে না, তাই যখন আপনার ফাংশন কোড বাস্তবসম্মতভাবে কার্যকর হবে, আপনার পরিবেশের অন্যান্য দিকগুলি (যেমন স্থানীয় ফাইল, ফাংশন ক্র্যাশ হওয়ার পরে আচরণ ইত্যাদি) ভিন্ন হবে।
ক্লাউড আইএএম
ফায়ারবেস এমুলেটর স্যুট চালানোর জন্য কোনো IAM-সম্পর্কিত আচরণ প্রতিলিপি বা সম্মান করার চেষ্টা করে না। এমুলেটরগুলি প্রদত্ত ফায়ারবেস নিরাপত্তা বিধি মেনে চলে, কিন্তু যে পরিস্থিতিতে IAM সাধারণত ব্যবহার করা হয়, উদাহরণস্বরূপ ক্লাউড ফাংশন সেট করতে পরিষেবা অ্যাকাউন্ট এবং এইভাবে অনুমতিগুলি সেট করতে, এমুলেটরটি কনফিগারযোগ্য নয় এবং আপনার ডেভেলপার মেশিনে বিশ্বব্যাপী উপলব্ধ অ্যাকাউন্ট ব্যবহার করবে, সরাসরি স্থানীয় স্ক্রিপ্ট চালানোর মতো।
মেমরি এবং প্রসেসরের সীমাবদ্ধতা
এমুলেটর আপনার ফাংশনগুলির জন্য মেমরি বা প্রসেসরের সীমাবদ্ধতা প্রয়োগ করে না। যাইহোক, এমুলেটর timeoutSeconds
রানটাইম আর্গুমেন্টের মাধ্যমে টাইম আউট ফাংশন সমর্থন করে।
নোট করুন যে ফাংশন এক্সিকিউশন সময়টি যখন এমুলেটরে ফাংশনগুলি চালিত হয় তখন উত্পাদন থেকে পৃথক হতে পারে। আমরা সুপারিশ করি যে আপনি এমুলেটরের সাথে ফাংশনগুলি ডিজাইন ও পরীক্ষা করার পরে, আপনি কার্যকরকরণের সময়গুলি নিশ্চিত করার জন্য উত্পাদনে সীমিত পরীক্ষা চালান।
স্থানীয় এবং উত্পাদন পরিবেশের পার্থক্যের জন্য পরিকল্পনা
যেহেতু এমুলেটরটি আপনার স্থানীয় মেশিনে চলে তাই এটি অ্যাপ্লিকেশন এবং অন্তর্নির্মিত প্রোগ্রাম এবং ইউটিলিটিগুলির জন্য আপনার স্থানীয় পরিবেশের উপর নির্ভর করে।
সচেতন থাকুন যে Cloud Functions বিকাশের জন্য আপনার স্থানীয় পরিবেশ গুগল উত্পাদন পরিবেশ থেকে পৃথক হতে পারে:
উত্পাদন পরিবেশের অনুকরণ করতে আপনি স্থানীয়ভাবে ইনস্টল করা অ্যাপ্লিকেশনগুলি (যেমন এই টিউটোরিয়াল থেকে ইমেজম্যাগিক) উত্পাদন থেকে আচরণে পৃথক হতে পারে, বিশেষত যদি আপনার আলাদা সংস্করণ প্রয়োজন হয় বা নন-লিনাক্স পরিবেশে বিকাশ ঘটে। আপনার ফাংশন মোতায়েনের পাশাপাশি অনুপস্থিত প্রোগ্রামের নিজস্ব বাইনারি অনুলিপি স্থাপনের বিষয়টি বিবেচনা করুন।
একইভাবে, অন্তর্নির্মিত ইউটিলিটিগুলি (যেমন,
ls
,mkdir
এর মতো শেল কমান্ড) উত্পাদনে উপলব্ধ সংস্করণগুলির থেকে পৃথক হতে পারে, বিশেষত যদি আপনি কোনও লিনাক্স পরিবেশে বিকাশ করছেন (যেমন, ম্যাকোস)। আপনি নোড-কেবল নেটিভ কমান্ডগুলির বিকল্পগুলি ব্যবহার করে বা আপনার স্থাপনার সাথে বান্ডিল করার জন্য লিনাক্স বাইনারিগুলি তৈরি করে এই সমস্যাটি পরিচালনা করতে পারেন।
পুনরায় চেষ্টা করা
ক্লাউড ফাংশন এমুলেটর ব্যর্থতার উপর পুনরায় চেষ্টা করার ফাংশনগুলিকে সমর্থন করে না।
এরপর কি?
- ভিডিওগুলির একটি কিউরেটেড সেট এবং কীভাবে উদাহরণগুলি কীভাবে করা যায় তার জন্য, ফায়ারবেস এমুলেটর প্রশিক্ষণ প্লেলিস্ট অনুসরণ করুন।
- স্থানীয়ভাবে রান ফাংশনগুলিতে Cloud Functions for Firebase সম্পর্কে আরও জানুন।
আপনার অ্যাপ্লিকেশনটিকে Cloud Functions এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত হয়ে নিন যে আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝতে পেরেছেন এবং আপনি Local Emulator Suite ইনস্টল এবং কনফিগার করেছেন এবং এর সিএলআই কমান্ডগুলি পর্যালোচনা করেছেন।
একটি ফায়ারবেস প্রকল্প চয়ন করুন
Firebase Local Emulator Suite একক ফায়ারবেস প্রকল্পের জন্য পণ্যগুলি অনুকরণ করে।
প্রকল্পটি নির্বাচন করতে, আপনি এমুলেটরগুলি শুরু করার আগে, আপনার কার্যকারী ডিরেক্টরিতে সিএলআই রান firebase use
। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project
পতাকাটি পাস করতে পারেন।
Local Emulator Suite রিয়েল ফায়ারবেস প্রকল্প এবং ডেমো প্রকল্পগুলির অনুকরণকে সমর্থন করে।
প্রকল্পের ধরন | বৈশিষ্ট্য | এমুলেটরগুলির সাথে ব্যবহার করুন |
---|---|---|
রিয়াল | একটি আসল ফায়ারবেস প্রকল্পটি আপনি তৈরি করেছেন এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। রিয়েল প্রকল্পগুলির লাইভ রিসোর্স রয়েছে, যেমন ডাটাবেসের উদাহরণ, স্টোরেজ বালতি, ফাংশন বা সেই ফায়ারবেস প্রকল্পের জন্য আপনি যে কোনও সংস্থান তৈরি করেছেন। | রিয়েল ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনি যে কোনও বা সমস্ত সমর্থিত পণ্যগুলির জন্য এমুলেটরগুলি চালাতে পারেন। আপনি যে কোনও পণ্য অনুকরণ করছেন না তার জন্য, আপনার অ্যাপ্লিকেশন এবং কোড লাইভ রিসোর্সের সাথে ইন্টারঅ্যাক্ট করবে (ডাটাবেস উদাহরণ, স্টোরেজ বালতি, ফাংশন ইত্যাদি)। |
ডেমো | একটি ডেমো ফায়ারবেস প্রকল্পের কোনও আসল ফায়ারবেস কনফিগারেশন নেই এবং কোনও লাইভ সংস্থান নেই। এই প্রকল্পগুলি সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়। ডেমো প্রকল্পগুলির জন্য প্রজেক্ট আইডিগুলিতে | ডেমো ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনার অ্যাপ্লিকেশন এবং কোড কেবল এমুলেটরগুলির সাথে যোগাযোগ করে। যদি আপনার অ্যাপ্লিকেশনটি এমন কোনও সংস্থানটির সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য কোনও এমুলেটর চলছে না, সেই কোডটি ব্যর্থ হবে। |
আমরা আপনাকে যেখানেই সম্ভব ডেমো প্রকল্পগুলি ব্যবহার করার পরামর্শ দিই। সুবিধার মধ্যে রয়েছে:
- সহজ সেটআপ, যেহেতু আপনি কখনও ফায়ারবেস প্রকল্প তৈরি না করে এমুলেটরগুলি চালাতে পারেন
- শক্তিশালী সুরক্ষা, যেহেতু আপনার কোডটি দুর্ঘটনাক্রমে অ-এমুলেটেড (উত্পাদন) সংস্থানগুলি আহ্বান করে, ডেটা পরিবর্তন, ব্যবহার এবং বিলিংয়ের কোনও সম্ভাবনা নেই
- আরও ভাল অফলাইন সমর্থন, যেহেতু আপনার এসডিকে কনফিগারেশনটি ডাউনলোড করতে ইন্টারনেটে অ্যাক্সেস করার দরকার নেই।
এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপ্লিকেশনটি উপকরণ
কলযোগ্য ফাংশনগুলির জন্য আপনার অ্যাপটি উপকরণ
যদি আপনার প্রোটোটাইপ এবং পরীক্ষার ক্রিয়াকলাপগুলিতে কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে তবে Cloud Functions for Firebase সাথে ইন্টারঅ্যাকশনটি কনফিগার করুন:
// 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)
// 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)
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
firebase.functions().useEmulator("127.0.0.1", 5001);
এইচটিটিপিএস ফাংশন এমুলেশনের জন্য আপনার অ্যাপ্লিকেশনটি উপকরণ
আপনার কোডে প্রতিটি এইচটিটিপিএস ফাংশন নিম্নলিখিত ইউআরএল ফর্ম্যাটটি ব্যবহার করে স্থানীয় এমুলেটর থেকে পরিবেশন করা হবে:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
উদাহরণস্বরূপ ডিফল্ট হোস্ট পোর্ট এবং অঞ্চল সহ একটি সাধারণ helloWorld
ফাংশন এখানে পরিবেশন করা হবে:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
টাস্ক সারি ফাংশন অনুকরণের জন্য আপনার অ্যাপ্লিকেশনটি উপকরণ
এমুলেটরটি স্বয়ংক্রিয়ভাবে ট্রিগার সংজ্ঞাগুলির উপর ভিত্তি করে এমুলেটেড টাস্ক সারিগুলি সেট করে এবং অ্যাডমিন এসডিকে পুনর্নির্মাণগুলি এমুলেটরকে অনুরোধ করে যদি এটি সনাক্ত করে যে এটি CLOUD_TASKS_EMULATOR_HOST
পরিবেশের ভেরিয়েবলের মাধ্যমে চলছে।
নোট করুন যে উত্পাদনে ব্যবহৃত ডিসপ্যাচ সিস্টেমটি এমুলেটরটিতে প্রয়োগ করা একটির চেয়ে জটিল, তাই আপনার অনুকরণীয় আচরণটি যথাযথভাবে উত্পাদন পরিবেশের আয়না করার আশা করা উচিত নয়। এমুলেটরের মধ্যে থাকা প্যারামিটারগুলি যে হারে কাজগুলি প্রেরণ করা হয় এবং পুনরায় চেষ্টা করা হয় তার উপরের সীমানা সরবরাহ করে।
ব্যাকগ্রাউন্ড-ট্রিগারযুক্ত ফাংশন অনুকরণের জন্য আপনার অ্যাপ্লিকেশনটি উপকরণ
Cloud Functions এমুলেটর নিম্নলিখিত উত্সগুলি থেকে পটভূমি-ট্রিগার ফাংশনগুলিকে সমর্থন করে:
- Realtime Database এমুলেটর
- Cloud Firestore এমুলেটর
- Authentication এমুলেটর
- Pub/Sub এমুলেটর
- ফায়ারবেস সতর্কতা এমুলেটর
ব্যাকগ্রাউন্ড ইভেন্টগুলি ট্রিগার করতে, Emulator Suite UI ব্যবহার করে ব্যাক-এন্ড রিসোর্সগুলি সংশোধন করুন, বা আপনার অ্যাপ্লিকেশন বা পরীক্ষার কোডটি আপনার প্ল্যাটফর্মের জন্য এসডিকে ব্যবহার করে এমুলেটরগুলির সাথে সংযুক্ত করে।
এক্সটেনশন দ্বারা নির্গত কাস্টম ইভেন্টগুলির জন্য পরীক্ষা হ্যান্ডলারগুলি
ফাংশনগুলির জন্য আপনি Firebase Extensions পরিচালনা করতে প্রয়োগ করেছেন Cloud Functions ভি 2 এর সাথে কাস্টম ইভেন্টগুলি, Cloud Functions এমুলেটর জোড়া ইভেন্টাক ট্রিগারগুলিকে সমর্থন করার জন্য ইভেন্টআর্ক এমুলেটর সহ।
ইভেন্টগুলি নির্গত করে এমন এক্সটেনশনের জন্য কাস্টম ইভেন্ট হ্যান্ডলারগুলি পরীক্ষা করতে আপনাকে অবশ্যই Cloud Functions এবং ইভেন্টার্ক এমুলেটরগুলি ইনস্টল করতে হবে।
Cloud Functions রানটাইম লোকালহোস্টে EVENTARC_EMULATOR
পরিবেশের পরিবর্তনশীল localhost:9299
বর্তমান প্রক্রিয়াতে যদি ইভেন্টআর্ক এমুলেটরটি চলছে তবে সেট করে। Firebase Admin SDK এস যখন EVENTARC_EMULATOR
পরিবেশের পরিবর্তনশীল সেট করা থাকে তখন স্বয়ংক্রিয়ভাবে ইভেন্টার্ক এমুলেটরের সাথে সংযোগ স্থাপন করে। Local Emulator Suite কনফিগার করে আলোচিত হিসাবে আপনি ডিফল্ট পোর্টটি সংশোধন করতে পারেন।
যখন পরিবেশের ভেরিয়েবলগুলি সঠিকভাবে কনফিগার করা হয়, Firebase Admin SDK স্বয়ংক্রিয়ভাবে ইভেন্টাক এমুলেটরটিতে ইভেন্টগুলি প্রেরণ করে। পরিবর্তে, ইভেন্টার্ক এমুলেটর কোনও নিবন্ধিত হ্যান্ডলারগুলি ট্রিগার করতে 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 এমুলেটর সংবেদনশীল কনফিগারেশন তথ্য সঞ্চয় এবং অ্যাক্সেস করতে গোপনীয়তার ব্যবহারকে সমর্থন করে। ডিফল্টরূপে, এমুলেটর অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি ব্যবহার করে আপনার উত্পাদনের গোপনীয়তাগুলি অ্যাক্সেস করার চেষ্টা করবে। সিআই পরিবেশের মতো নির্দিষ্ট পরিস্থিতিতে, এমুলেটর অনুমতি বিধিনিষেধের কারণে গোপন মানগুলি অ্যাক্সেস করতে ব্যর্থ হতে পারে।
পরিবেশের ভেরিয়েবলের জন্য Cloud Functions এমুলেটর সমর্থনের অনুরূপ, আপনি একটি .secret.local
ফাইল সেট আপ করে গোপনীয় মানগুলি ওভাররাইড করতে পারেন। এটি স্থানীয়ভাবে আপনার ফাংশনগুলি পরীক্ষা করা আপনার পক্ষে সহজ করে তোলে, বিশেষত যদি আপনার গোপন মানের অ্যাক্সেস না থাকে।
Cloud Functions পরীক্ষার জন্য অন্যান্য কোন সরঞ্জাম বিদ্যমান?
Cloud Functions এমুলেটরটি অন্যান্য প্রোটোটাইপ এবং পরীক্ষার সরঞ্জামগুলি দ্বারা পরিপূরক:
- ক্লাউড ফাংশন শেল, যা ইন্টারেক্টিভ, পুনরাবৃত্ত ফাংশন প্রোটোটাইপিং এবং বিকাশের অনুমতি দেয়। শেলটি ক্লাউড ফাংশন এমুলেটরকে উন্নয়নের জন্য একটি রেপ-স্টাইল ইন্টারফেসের সাথে নিয়োগ করে। Cloud Firestore বা Realtime Database এমুলেটরগুলির সাথে কোনও সংহতকরণ সরবরাহ করা হয় না। শেলটি ব্যবহার করে আপনি ডেটা উপহাস করেন এবং Local Emulator Suite বর্তমানে সমর্থন করে না এমন পণ্যগুলির সাথে মিথস্ক্রিয়া অনুকরণ করতে ফাংশন কলগুলি সম্পাদন করেন: বিশ্লেষণ, রিমোট কনফিগারেশন এবং ক্র্যাশলাইটিক্স।
- ক্লাউড ফাংশনগুলির জন্য ফায়ারবেস টেস্ট এসডিকে, ফাংশন বিকাশের জন্য মোচা ফ্রেমওয়ার্ক সহ একটি নোড.জেএস। বাস্তবে, ক্লাউড ফাংশন টেস্ট এসডিকে ক্লাউড ফাংশন শেলের উপরে অটোমেশন সরবরাহ করে।
আপনি ক্লাউড ফাংশন শেল এবং ক্লাউড ফাংশন পরীক্ষা এসডিকে ইন্টারেক্টিভভাবে এবং ক্লাউড ফাংশনগুলির ইউনিট পরীক্ষার বিষয়ে আরও খুঁজে পেতে পারেন।
Cloud Functions এমুলেটর কীভাবে উত্পাদন থেকে পৃথক হয়
Cloud Functions এমুলেটর বেশিরভাগ ব্যবহারের ক্ষেত্রে উত্পাদন পরিবেশের মোটামুটি কাছাকাছি। আমরা নোড রানটাইমের মধ্যে সমস্ত কিছু নিশ্চিত করার জন্য বিস্তৃত কাজ রেখেছি যতটা সম্ভব উত্পাদনের কাছাকাছি। যাইহোক, এমুলেটরটি সম্পূর্ণ ধারক উত্পাদন পরিবেশের নকল করে না, সুতরাং আপনার ফাংশন কোডটি বাস্তবিকভাবে কার্যকর করবে, আপনার পরিবেশের অন্যান্য দিকগুলি (অর্থাত্ ফাংশন ক্র্যাশ হওয়ার পরে স্থানীয় ফাইলগুলি, আচরণ ইত্যাদি) পৃথক হবে।
ক্লাউড আইএএম
ফায়ারবেস এমুলেটর স্যুটটি চালানোর জন্য আইএএম সম্পর্কিত কোনও আচরণের প্রতিলিপি বা সম্মান করার চেষ্টা করে না। এমুলেটরগুলি ফায়ারবেস সুরক্ষা বিধিগুলি সরবরাহ করে তবে আইএএম সাধারণত ব্যবহৃত হবে এমন পরিস্থিতিতে উদাহরণস্বরূপ ক্লাউড ফাংশনগুলি পরিষেবা অ্যাকাউন্টের অনুরোধ এবং এইভাবে অনুমতিগুলি সেট করার জন্য, এমুলেটরটি কনফিগারযোগ্য নয় এবং আপনার বিকাশকারী মেশিনে বিশ্বব্যাপী-উপলব্ধ অ্যাকাউন্ট ব্যবহার করবে, সরাসরি স্থানীয় স্ক্রিপ্ট চালানোর অনুরূপ।
স্মৃতি এবং প্রসেসর বিধিনিষেধ
এমুলেটরটি আপনার ক্রিয়াকলাপগুলির জন্য মেমরি বা প্রসেসরের বিধিনিষেধ প্রয়োগ করে না। যাইহোক, এমুলেটর timeoutSeconds
রানটাইম আর্গুমেন্টের মাধ্যমে সময়সীমার ফাংশনগুলিকে সমর্থন করে।
নোট করুন যে ফাংশন এক্সিকিউশন সময়টি যখন এমুলেটরে ফাংশনগুলি চালিত হয় তখন উত্পাদন থেকে পৃথক হতে পারে। আমরা সুপারিশ করি যে আপনি এমুলেটরের সাথে ফাংশনগুলি ডিজাইন ও পরীক্ষা করার পরে, আপনি কার্যকরকরণের সময়গুলি নিশ্চিত করার জন্য উত্পাদনে সীমিত পরীক্ষা চালান।
স্থানীয় এবং উত্পাদন পরিবেশের পার্থক্যের জন্য পরিকল্পনা
যেহেতু এমুলেটরটি আপনার স্থানীয় মেশিনে চলে তাই এটি অ্যাপ্লিকেশন এবং অন্তর্নির্মিত প্রোগ্রাম এবং ইউটিলিটিগুলির জন্য আপনার স্থানীয় পরিবেশের উপর নির্ভর করে।
সচেতন থাকুন যে Cloud Functions বিকাশের জন্য আপনার স্থানীয় পরিবেশ গুগল উত্পাদন পরিবেশ থেকে পৃথক হতে পারে:
উত্পাদন পরিবেশের অনুকরণ করতে আপনি স্থানীয়ভাবে ইনস্টল করা অ্যাপ্লিকেশনগুলি (যেমন এই টিউটোরিয়াল থেকে ইমেজম্যাগিক) উত্পাদন থেকে আচরণে পৃথক হতে পারে, বিশেষত যদি আপনার আলাদা সংস্করণ প্রয়োজন হয় বা নন-লিনাক্স পরিবেশে বিকাশ ঘটে। আপনার ফাংশন মোতায়েনের পাশাপাশি অনুপস্থিত প্রোগ্রামের নিজস্ব বাইনারি অনুলিপি স্থাপনের বিষয়টি বিবেচনা করুন।
একইভাবে, অন্তর্নির্মিত ইউটিলিটিগুলি (যেমন,
ls
,mkdir
এর মতো শেল কমান্ড) উত্পাদনে উপলব্ধ সংস্করণগুলির থেকে পৃথক হতে পারে, বিশেষত যদি আপনি কোনও লিনাক্স পরিবেশে বিকাশ করছেন (যেমন, ম্যাকোস)। আপনি নোড-কেবল নেটিভ কমান্ডগুলির বিকল্পগুলি ব্যবহার করে বা আপনার স্থাপনার সাথে বান্ডিল করার জন্য লিনাক্স বাইনারিগুলি তৈরি করে এই সমস্যাটি পরিচালনা করতে পারেন।
পুনরায় চেষ্টা করা
ক্লাউড ফাংশন এমুলেটর ব্যর্থতার উপর পুনরায় চেষ্টা করার ফাংশনগুলিকে সমর্থন করে না।
এরপর কি?
- ভিডিওগুলির একটি কিউরেটেড সেট এবং কীভাবে উদাহরণগুলি কীভাবে করা যায় তার জন্য, ফায়ারবেস এমুলেটর প্রশিক্ষণ প্লেলিস্ট অনুসরণ করুন।
- স্থানীয়ভাবে রান ফাংশনগুলিতে Cloud Functions for Firebase সম্পর্কে আরও জানুন।