আপনার অ্যাপটিকে ক্লাউড ফাংশন এমুলেটরের সাথে সংযুক্ত করুন

আপনার অ্যাপটিকে ক্লাউড ফাংশন এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি সামগ্রিক Firebase লোকাল এমুলেটর স্যুট ওয়ার্কফ্লো বুঝতে পেরেছেন এবং আপনি স্থানীয় এমুলেটর স্যুট ইনস্টল ও কনফিগার করেছেন এবং এর CLI কমান্ড পর্যালোচনা করেছেন।

একটি ফায়ারবেস প্রকল্প বেছে নিন

Firebase স্থানীয় এমুলেটর স্যুট একটি একক Firebase প্রকল্পের জন্য পণ্য অনুকরণ করে।

ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, আপনি এমুলেটরগুলি শুরু করার আগে, CLI-এ আপনার কাজের ডিরেক্টরিতে firebase use করুন। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project পতাকা পাস করতে পারেন।

স্থানীয় এমুলেটর স্যুট বাস্তব ফায়ারবেস প্রকল্প এবং ডেমো প্রকল্পের অনুকরণ সমর্থন করে।

প্রকল্পের ধরন বৈশিষ্ট্য এমুলেটরগুলির সাথে ব্যবহার করুন
রিয়াল

একটি আসল ফায়ারবেস প্রজেক্ট হল আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)।

বাস্তব প্রজেক্টের লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, অথবা অন্য কোনো রিসোর্স যা আপনি সেই ফায়ারবেস প্রোজেক্টের জন্য সেট আপ করেন।

বাস্তব ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনি যেকোন বা সমস্ত সমর্থিত পণ্যের জন্য এমুলেটর চালাতে পারেন।

যে কোনো পণ্যের জন্য আপনি অনুকরণ করছেন না, আপনার অ্যাপ এবং কোড লাইভ রিসোর্সের সাথে ইন্টারঅ্যাক্ট করবে (ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, ইত্যাদি)।

ডেমো

একটি ডেমো ফায়ারবেস প্রজেক্টের কোনো বাস্তব ফায়ারবেস কনফিগারেশন নেই এবং কোনো লাইভ রিসোর্স নেই। এই প্রকল্পগুলি সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়।

ডেমো প্রজেক্টের জন্য প্রজেক্ট demo- ডেমো-প্রিফিক্স থাকে।

ডেমো ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরগুলির সাথে ইন্টারঅ্যাক্ট করে৷ যদি আপনার অ্যাপটি এমন একটি সংস্থানের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য একটি এমুলেটর চলছে না, সেই কোডটি ব্যর্থ হবে৷

আমরা আপনাকে যেখানেই সম্ভব ডেমো প্রকল্প ব্যবহার করার পরামর্শ দিই। সুবিধার মধ্যে রয়েছে:

  • সহজ সেটআপ, যেহেতু আপনি ফায়ারবেস প্রজেক্ট তৈরি না করেই এমুলেটর চালাতে পারবেন
  • শক্তিশালী নিরাপত্তা, যেহেতু আপনার কোডটি ভুলবশত নন-ইমুলেটেড (উৎপাদন) সংস্থানগুলিকে আহ্বান করলে, ডেটা পরিবর্তন, ব্যবহার এবং বিলিং করার কোন সুযোগ নেই
  • ভাল অফলাইন সমর্থন, যেহেতু আপনার SDK কনফিগারেশন ডাউনলোড করতে ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই৷

এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন

কলযোগ্য ফাংশনগুলির জন্য আপনার অ্যাপকে উপকরণ করুন

যদি আপনার প্রোটোটাইপ এবং পরীক্ষামূলক ক্রিয়াকলাপগুলি কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে, তাহলে Firebase এমুলেটরের জন্য ক্লাউড ফাংশনের সাথে মিথস্ক্রিয়া কনফিগার করুন এইভাবে:

অ্যান্ড্রয়েড
        // 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().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

firebase.functions().useEmulator("localhost", 5001);

এইচটিটিপিএস ফাংশন ইমুলেশনের জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন

আপনার কোডের প্রতিটি HTTPS ফাংশন নিম্নলিখিত URL বিন্যাস ব্যবহার করে স্থানীয় এমুলেটর থেকে পরিবেশন করা হবে:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

উদাহরণস্বরূপ ডিফল্ট হোস্ট পোর্ট এবং অঞ্চল সহ একটি সাধারণ helloWorld ফাংশন এখানে পরিবেশন করা হবে:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

ব্যাকগ্রাউন্ড-ট্রিগার করা ফাংশন ইমুলেশনের জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন

ক্লাউড ফাংশন এমুলেটর নিম্নলিখিত উত্স থেকে ব্যাকগ্রাউন্ড-ট্রিগার করা ফাংশন সমর্থন করে:

  • রিয়েলটাইম ডাটাবেস এমুলেটর
  • ক্লাউড ফায়ারস্টোর এমুলেটর
  • প্রমাণীকরণ এমুলেটর
  • পাব/সাব এমুলেটর

ব্যাকগ্রাউন্ড ইভেন্টগুলি ট্রিগার করতে, আপনার প্ল্যাটফর্মের জন্য SDK ব্যবহার করে এমুলেটরগুলির সাথে আপনার অ্যাপ বা পরীক্ষার কোড সংযুক্ত করুন।

একটি স্থানীয় পরীক্ষার পরিবেশ কনফিগার করুন

যদি আপনার ফাংশনগুলি dotenv-ভিত্তিক পরিবেশ কনফিগারেশনের উপর নির্ভর করে, আপনি আপনার স্থানীয় পরীক্ষার পরিবেশে সেই আচরণটি অনুকরণ করতে পারেন।

একটি স্থানীয় ক্লাউড ফাংশন এমুলেটর ব্যবহার করার সময়, আপনি একটি .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

ক্লাউড ফাংশন এমুলেটরে গোপনীয়তা এবং প্রমাণপত্রাদি

ক্লাউড ফাংশন এমুলেটর সংবেদনশীল কনফিগারেশন তথ্য সংরক্ষণ এবং অ্যাক্সেস করতে গোপনীয়তার ব্যবহার সমর্থন করে। ডিফল্টরূপে, এমুলেটর অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে আপনার উত্পাদন গোপনীয়তা অ্যাক্সেস করার চেষ্টা করবে৷ CI পরিবেশের মতো নির্দিষ্ট পরিস্থিতিতে, অনুমতি সীমাবদ্ধতার কারণে এমুলেটর গোপন মানগুলি অ্যাক্সেস করতে ব্যর্থ হতে পারে।

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

ক্লাউড ফাংশন পরীক্ষা করার জন্য অন্য কোন সরঞ্জাম বিদ্যমান?

ক্লাউড ফাংশন এমুলেটর অন্যান্য প্রোটোটাইপ এবং পরীক্ষার সরঞ্জাম দ্বারা সম্পূরক:

  • ক্লাউড ফাংশন শেল, যা ইন্টারেক্টিভ, পুনরাবৃত্তিমূলক ফাংশন প্রোটোটাইপিং এবং বিকাশের জন্য অনুমতি দেয়। শেলটি বিকাশের জন্য একটি REPL-শৈলী ইন্টারফেস সহ ক্লাউড ফাংশন এমুলেটর নিয়োগ করে। ক্লাউড ফায়ারস্টোর বা রিয়েলটাইম ডেটাবেস এমুলেটরগুলির সাথে কোনও একীকরণ সরবরাহ করা হয় না। শেল ব্যবহার করে, আপনি ডেটা উপহাস করেন এবং স্থানীয় এমুলেটর স্যুট বর্তমানে সমর্থন করে না এমন পণ্যগুলির সাথে ইন্টারঅ্যাকশন অনুকরণ করতে ফাংশন কলগুলি সম্পাদন করেন: অ্যানালিটিক্স, রিমোট কনফিগ এবং ক্র্যাশলিটিক্স৷
  • ক্লাউড ফাংশনের জন্য ফায়ারবেস টেস্ট SDK, ফাংশন ডেভেলপমেন্টের জন্য মোচা ফ্রেমওয়ার্ক সহ একটি Node.js। কার্যত, ক্লাউড ফাংশন টেস্ট SDK ক্লাউড ফাংশন শেলের উপরে অটোমেশন প্রদান করে।

আপনি ক্লাউড ফাংশন শেল এবং ক্লাউড ফাংশন টেস্ট SDK সম্পর্কে ইন্টারেক্টিভভাবে টেস্ট ফাংশন এবং ক্লাউড ফাংশনগুলির ইউনিট টেস্টিং সম্পর্কে আরও জানতে পারেন৷

কিভাবে ক্লাউড ফাংশন এমুলেটর উৎপাদন থেকে আলাদা

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

ক্লাউড আইএএম

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

মেমরি এবং প্রসেসরের সীমাবদ্ধতা

এমুলেটর আপনার ফাংশনের জন্য মেমরি বা প্রসেসর সীমাবদ্ধতা প্রয়োগ করে না। যাইহোক, এমুলেটর timeoutSeconds রানটাইম আর্গুমেন্টের মাধ্যমে টাইম আউট ফাংশন সমর্থন করে।

মনে রাখবেন যে ফাংশন এক্সিকিউশন সময় উৎপাদন থেকে আলাদা হতে পারে যখন এমুলেটরে ফাংশন চালানো হয়। আমরা সুপারিশ করি যে আপনি এমুলেটর দিয়ে ফাংশন ডিজাইন এবং পরীক্ষা করার পরে, আপনি সম্পাদনের সময় নিশ্চিত করতে উত্পাদনে সীমিত পরীক্ষা চালান।

স্থানীয় এবং উৎপাদন পরিবেশে পার্থক্য জন্য পরিকল্পনা

যেহেতু এমুলেটর আপনার স্থানীয় মেশিনে চলে, এটি অ্যাপ্লিকেশন এবং বিল্ট-ইন প্রোগ্রাম এবং ইউটিলিটিগুলির জন্য আপনার স্থানীয় পরিবেশের উপর নির্ভর করে।

সচেতন থাকুন যে ক্লাউড ফাংশন বিকাশের জন্য আপনার স্থানীয় পরিবেশ Google উত্পাদন পরিবেশ থেকে আলাদা হতে পারে:

  • প্রোডাকশন এনভায়রনমেন্ট (যেমন এই টিউটোরিয়াল থেকে ImageMagick ) অনুকরণ করার জন্য আপনি স্থানীয়ভাবে ইনস্টল করা অ্যাপ্লিকেশনগুলি উত্পাদন থেকে আচরণে ভিন্ন হতে পারে, বিশেষ করে যদি আপনার একটি ভিন্ন সংস্করণের প্রয়োজন হয় বা একটি নন-লিনাক্স পরিবেশে বিকাশ করা হয়। আপনার ফাংশন স্থাপনার পাশাপাশি অনুপস্থিত প্রোগ্রামের আপনার নিজস্ব বাইনারি কপি স্থাপন করার কথা বিবেচনা করুন।

  • একইভাবে, অন্তর্নির্মিত ইউটিলিটিগুলি (যেমন, শেল কমান্ড যেমন ls , mkdir ) প্রোডাকশনে উপলব্ধ সংস্করণগুলির থেকে আলাদা হতে পারে, বিশেষ করে যদি আপনি একটি নন-লিনাক্স পরিবেশে (যেমন, macOS) বিকাশ করছেন। আপনি নেটিভ কমান্ডের নোড-অনলি বিকল্পগুলি ব্যবহার করে বা আপনার স্থাপনার সাথে বান্ডিল করার জন্য লিনাক্স বাইনারি তৈরি করে এই সমস্যাটি পরিচালনা করতে পারেন।

পুনরায় চেষ্টা করা হচ্ছে

ক্লাউড ফাংশন এমুলেটর ব্যর্থ হলে ফাংশন পুনরায় চেষ্টা করা সমর্থন করে না।

তারপর কি?