Cloud Functions-এর মাধ্যমে শুরু করতে, এই টিউটোরিয়ালটি ব্যবহার করে দেখুন, যা প্রয়োজনীয় সেট-আপ টাস্কের মাধ্যমে শুরু হয় এবং দুটি সম্পর্কিত ফাংশন তৈরি, পরীক্ষা ও ডিপ্লয় করার মাধ্যমে কাজ করে:
- "মেসেজ যোগ করুন" ফাংশন যা এমন একটি URL দেখায় যা টেক্সট ভ্যালু গ্রহণ করে এবং এটি Cloud Firestore-এ লেখে।
- "বড় হাতের অক্ষরে পরিবর্তন করুন" ফাংশন যা Cloud Firestore লেখার সময় ট্রিগার করে এবং টেক্সট বড় হাতের অক্ষরে পরিবর্তন করে।
ফাংশন সহ সম্পূর্ণ স্যাম্পেল কোড এখানে দেওয়া হল:
Node.js
// The Cloud Functions for Firebase SDK to create Cloud Functions and triggers.
const {logger} = require("firebase-functions");
const {onRequest} = require("firebase-functions/https");
const {onDocumentCreated} = require("firebase-functions/firestore");
// The Firebase Admin SDK to access Firestore.
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");
initializeApp();
// Take the text parameter passed to this HTTP endpoint and insert it into
// Firestore under the path /messages/:documentId/original
exports.addmessage = onRequest(async (req, res) => {
// Grab the text parameter.
const original = req.query.text;
// Push the new message into Firestore using the Firebase Admin SDK.
const writeResult = await getFirestore()
.collection("messages")
.add({original: original});
// Send back a message that we've successfully written the message
res.json({result: `Message with ID: ${writeResult.id} added.`});
});
// Listens for new messages added to /messages/:documentId/original
// and saves an uppercased version of the message
// to /messages/:documentId/uppercase
exports.makeuppercase = onDocumentCreated("/messages/{documentId}", (event) => {
// Grab the current value of what was written to Firestore.
const original = event.data.data().original;
// Access the parameter `{documentId}` with `event.params`
logger.log("Uppercasing", event.params.documentId, original);
const uppercase = original.toUpperCase();
// You must return a Promise when performing
// asynchronous tasks inside a function
// such as writing to Firestore.
// Setting an 'uppercase' field in Firestore document returns a Promise.
return event.data.ref.set({uppercase}, {merge: true});
});
Python
# The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
from firebase_functions import firestore_fn, https_fn
# The Firebase Admin SDK to access Cloud Firestore.
from firebase_admin import initialize_app, firestore
import google.cloud.firestore
app = initialize_app()
@https_fn.on_request()
def addmessage(req: https_fn.Request) -> https_fn.Response:
"""Take the text parameter passed to this HTTP endpoint and insert it into
a new document in the messages collection."""
# Grab the text parameter.
original = req.args.get("text")
if original is None:
return https_fn.Response("No text parameter provided", status=400)
firestore_client: google.cloud.firestore.Client = firestore.client()
# Push the new message into Cloud Firestore using the Firebase Admin SDK.
_, doc_ref = firestore_client.collection("messages").add({"original": original})
# Send back a message that we've successfully written the message
return https_fn.Response(f"Message with ID {doc_ref.id} added.")
@firestore_fn.on_document_created(document="messages/{pushId}")
def makeuppercase(event: firestore_fn.Event[firestore_fn.DocumentSnapshot | None]) -> None:
"""Listens for new documents to be added to /messages. If the document has
an "original" field, creates an "uppercase" field containg the contents of
"original" in upper case."""
# Get the value of "original" if it exists.
if event.data is None:
return
try:
original = event.data.get("original")
except KeyError:
# No "original" field, so do nothing.
return
# Set the "uppercase" field.
print(f"Uppercasing {event.params['pushId']}: {original}")
upper = original.upper()
event.data.reference.update({"uppercase": upper})
এই টিউটোরিয়াল সম্পর্কে
আমরা এই স্যাম্পেলের জন্য Cloud Firestore এবং HTTP-ট্রিগার করা ফাংশন বেছে নিয়েছি, কারণ এইসব ব্যাকগ্রাউন্ড ট্রিগার Firebase Local Emulator Suite-এর মাধ্যমে ভালোভাবে পরীক্ষা করা যায়। এই টুলসেট Realtime Database, Cloud Storage, PubSub, Auth ও HTTP কল করা যায় এমন ট্রিগারও সাপোর্ট করে। অন্য ধরনের ব্যাকগ্রাউন্ড ট্রিগার যেমন Remote Config এবং TestLab ট্রিগার এই পৃষ্ঠায় বর্ণনা করা হয়নি এমন টুলসেট ব্যবহার করে ইন্টার্যাক্টিভভাবে পরীক্ষা করা যেতে পারে।
এই টিউটোরিয়ালের নিম্নলিখিত বিভাগে স্যাম্পেল তৈরি, পরীক্ষা ও ডিপ্লয় করার জন্য প্রয়োজনীয় ধাপের বিবরণ দেওয়া আছে।
Firebase প্রোজেক্ট তৈরি করা
Firebase বা Cloud-এ নতুন
আপনি Firebase বা Google Cloud-এ নতুন হলে, এইসব ধাপ অনুসরণ করুন।
আপনি সম্পূর্ণ নতুন Firebase প্রোজেক্ট (এবং এর সাথে সম্পর্কিত Google Cloud প্রোজেক্ট)
তৈরি করতে চাইলে, এইসব ধাপ অনুসরণ করতে পারেন।
- Firebase কনসোলে সাইন-ইন করুন।
- নতুন Firebase প্রোজেক্ট তৈরি করতে বোতামে ক্লিক করুন।
-
টেক্সট ফিল্ডে, প্রোজেক্টের নাম লিখুন।
আপনি কোনও Google Cloud সংস্থার অংশ হলে, ঐচ্ছিক হিসেবে বেছে নিতে পারবেন যে কোন ফোল্ডারে আপনার প্রোজেক্ট তৈরি করবেন।
- প্রম্পট করা হলে, Firebase-এর শর্তাবলী পর্যালোচনা করে সম্মতি দিন, তারপর চালিয়ে যান বিকল্পে ক্লিক করুন।
- (ঐচ্ছিক) Firebase কনসোলে AI সহায়তা চালু করুন (যাকে "Firebase-এ Gemini" বলা হয়), যা আপনাকে শুরু করতে এবং আপনার ডেভেলপমেন্ট প্রসেসকে স্ট্রিমলাইন করতে সাহায্য করতে পারে।
-
(ঐচ্ছিক) আপনার প্রোজেক্টের জন্য Google Analytics সেট-আপ করুন, যা এইসব Firebase প্রোডাক্ট ব্যবহার করে সেরা অভিজ্ঞতা প্রদান করে: Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging এবং Remote Config (এর মধ্যে পছন্দমতো সাজিয়ে নেওয়া অন্তর্ভুক্ত)।
আগে থেকে থাকা কোনও Google Analytics অ্যাকাউন্ট বেছে নিন অথবা নতুন অ্যাকাউন্ট তৈরি করুন। আপনি নতুন অ্যাকাউন্ট তৈরি করলে, আপনার Analytics রিপোর্টিং লোকেশন বেছে নিন, তারপর আপনার প্রোজেক্টের জন্য ডেটা শেয়ারিং সেটিংস এবং Google Analytics শর্তাবলী গ্রহণ করুন।
- প্রোজেক্ট তৈরি করুন বিকল্পে ক্লিক করুন।
Firebase আপনার প্রোজেক্ট তৈরি করে, কিছু প্রাথমিক রিসোর্স প্রদান করে এবং গুরুত্বপূর্ণ API চালু করে। প্রসেস সম্পূর্ণ হলে, আপনাকে Firebase কনসোলে আপনার Firebase প্রোজেক্টের ওভারভিউ পৃষ্ঠায় নিয়ে যাওয়া হবে।
আগে থেকে থাকা ক্লাউড প্রোজেক্ট
আপনি আগে থেকে থাকা কোনও Google Cloud প্রোজেক্টের সাথে Firebase ব্যবহার করা শুরু করতে চাইলে, এইসব ধাপ অনুসরণ করুন। আগে থেকে আছে এমন Google Cloud প্রোজেক্টে "Firebase যোগ করা" সম্পর্কে আরও জানুন এবং সমস্যার সমাধান করুন।
- যে অ্যাকাউন্ট দিয়ে আপনি আগে থেকে থাকা Google Cloud প্রোজেক্ট অ্যাক্সেস করতে পারবেন, সেটি দিয়ে Firebase কনসোলে সাইন-ইন করুন।
- নতুন Firebase প্রোজেক্ট তৈরি করতে বোতামে ক্লিক করুন।
- পৃষ্ঠার একদম নিচে, Google Cloud প্রোজেক্টে Firebase যোগ করুন বিকল্পে ক্লিক করুন।
- টেক্সট ফিল্ডে, আগে থেকে থাকা প্রোজেক্টের প্রোজেক্টের নাম লেখা শুরু করুন এবং তারপরে দেখানো তালিকা থেকে প্রোজেক্টটি বেছে নিন।
- প্রোজেক্ট খুলুন বিকল্পে ক্লিক করুন।
- প্রম্পট করা হলে, Firebase-এর শর্তাবলী পর্যালোচনা করে সম্মতি দিন, তারপর চালিয়ে যান বিকল্পে ক্লিক করুন।
- (ঐচ্ছিক) Firebase কনসোলে AI সহায়তা চালু করুন (যাকে "Firebase-এ Gemini" বলা হয়), যা আপনাকে শুরু করতে এবং আপনার ডেভেলপমেন্ট প্রসেসকে স্ট্রিমলাইন করতে সাহায্য করতে পারে।
-
(ঐচ্ছিক) আপনার প্রোজেক্টের জন্য Google Analytics সেট-আপ করুন, যা এইসব Firebase প্রোডাক্ট ব্যবহার করে সেরা অভিজ্ঞতা প্রদান করে: Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging এবং Remote Config (এর মধ্যে পছন্দমতো সাজিয়ে নেওয়া অন্তর্ভুক্ত)।
আগে থেকে থাকা কোনও Google Analytics অ্যাকাউন্ট বেছে নিন অথবা নতুন অ্যাকাউন্ট তৈরি করুন। আপনি নতুন অ্যাকাউন্ট তৈরি করলে, আপনার Analytics রিপোর্টিং লোকেশন বেছে নিন, তারপর আপনার প্রোজেক্টের জন্য ডেটা শেয়ারিং সেটিংস এবং Google Analytics শর্তাবলী গ্রহণ করুন।
- Firebase যোগ করুন বিকল্পে ক্লিক করুন।
Firebase আপনার আগে থেকে থাকা প্রোজেক্টে Firebase যোগ করে। প্রসেস সম্পূর্ণ হলে, আপনাকে Firebase কনসোলে আপনার Firebase প্রোজেক্টের ওভারভিউ পৃষ্ঠায় নিয়ে যাওয়া হবে।
আপনার এনভায়রনমেন্ট ও Firebase CLI সেট-আপ করা
Node.js
ফাংশন লেখার জন্য আপনার Node.js এনভায়রনমেন্টের প্রয়োজন হবে, এবং Cloud Functions রানটাইমে ফাংশন ডেপ্লয় করার জন্য আপনার Firebase CLI প্রয়োজন হবে। Node.js ও npm ইনস্টল করার জন্য, Node Version Manager ব্যবহার করার সাজেশন দেওয়া হয়।
Node.js ও npm ইনস্টল করা হয়ে গেলে, আপনার পছন্দের পদ্ধতি ব্যবহার করে Firebase CLI ইনস্টল করুন। npm-এর মাধ্যমে CLI ইনস্টল করতে, এটি ব্যবহার করুন:
npm install -g firebase-tools
এটি বিশ্বব্যাপী উপলভ্য Firebase কমান্ড ইনস্টল করে। কমান্ড
কাজ না করলে, আপনাকে হয়ত
npm-এর অনুমতি পরিবর্তন করতে হবে।
firebase-tools-এর লেটেস্ট ভার্সনে আপডেট করতে, একই কমান্ড আবার রান করুন।
Python
ফাংশন লেখার জন্য আপনার Python এনভায়রনমেন্ট
প্রয়োজন হবে
এবং Cloud Functions রানটাইমে ফাংশন ডিপ্লয় করার জন্য
আপনার Firebase CLI প্রয়োজন হবে। আমরা venv ব্যবহার করার সাজেশন দিই যাতে
ডিপেন্ডেন্সি আলাদা করা যায়। Python ভার্সন 3.10 থেকে 3.13 পর্যন্ত কাজ করে,
ডিফল্ট রানটাইম হল 3.13।
Python ইনস্টল করা হয়ে গেলে, আপনার পছন্দের পদ্ধতি ব্যবহার করে Firebase CLI ইনস্টল করুন।
আপনার প্রোজেক্ট শুরু করুন
Cloud Functions-এর জন্য Firebase SDK শুরু করার সময়, আপনি ডিপেন্ডেন্সি ও কিছু ন্যূনতম স্যাম্পেল কোড সহ একটি খালি প্রোজেক্ট তৈরি করেন। আপনি Node.js ব্যবহার করলে, ফাংশন কম্পোজ করার জন্য TypeScript বা JavaScript-এর মধ্যে যেকোনও একটি বেছে নিতে পারবেন। এই টিউটোরিয়ালের জন্য, আপনাকে Cloud Firestore-ও ইনিশিয়ালাইজ করতে হবে।
আপনার প্রোজেক্ট শুরু করতে:
- ব্রাউজারের মাধ্যমে লগ-ইন করতে এবং Firebase CLI যাচাই করতে
firebase loginরান করুন। - আপনার Firebase প্রোজেক্ট ডিরেক্টরিতে যান।
firebase init firestoreরান করুন। এই টিউটোরিয়ালের জন্য, Firestore নিয়ম ও ইন্ডেক্স ফাইলের জন্য প্রম্পট করা হলে, আপনি ডিফল্ট মান গ্রহণ করতে পারেন। আপনি যদি এখনও এই প্রোজেক্টে Cloud Firestore ব্যবহার না করে থাকেন, তাহলে আপনাকে Firestore-এর জন্য একটি স্টার্টিং মোড এবং লোকেশনও বেছে নিতে হবে, যেমনটি Cloud Firestore-এর সাথে শুরু করুন-এ বর্ণনা করা হয়েছে।firebase init functionsরান করুন। CLI আপনাকে আগে থেকে থাকা কোনও কোডবেস বেছে নিতে অথবা নতুন একটি শুরু করে সেটির নাম দিতে প্রম্পট করে। আপনি যখন সবে শুরু করছেন, ডিফল্ট লোকেশনে একটি সিঙ্গেল কোডবেস যথেষ্ট; পরে, আপনার ইমপ্লিমেন্টেশন প্রসারিত হওয়ার সাথে সাথে, আপনি কোডবেসে ফাংশন সাজাতে চাইতে পারেন।CLI আপনাকে ভাষা সংক্রান্ত সহায়তার জন্য এইসব বিকল্প দেয়:
- জাভাস্ক্রিপ্ট
- TypeScript
- Python
এই টিউটোরিয়ালের জন্য, JavaScript বা Python বেছে নিন। TypeScript-এ ফাংশন লিখতে, TypeScript-এর সাহায্যে ফাংশন লিখুন দেখুন।
CLI আপনাকে ডিপেন্ডেন্সি ইনস্টল করার বিকল্প দেয়। আপনি অন্য কোনও উপায়ে ডিপেন্ডেন্সি ম্যানেজ করতে চাইলে, এটি নিরাপদে বাতিল করতে পারবেন।
এইসব কমান্ড সম্পূর্ণ হওয়ার পরে, আপনার প্রোজেক্টের স্ট্রাকচার এইরকম দেখাবে:
Node.js
myproject
+- .firebaserc # Hidden file that helps you quickly switch between
| # projects with `firebase use`
|
+- firebase.json # Describes properties for your project
|
+- functions/ # Directory containing all your functions code
|
+- .eslintrc.json # Optional file containing rules for JavaScript linting.
|
+- package.json # npm package file describing your Cloud Functions code
|
+- index.js # Main source file for your Cloud Functions code
|
+- node_modules/ # Directory where your dependencies (declared in
# package.json) are installed
Node.js-এর জন্য, ইনিশিয়ালাইজেশনের সময় তৈরি করা package.json ফাইলে একটি গুরুত্বপূর্ণ
কী: "engines": {"node": "18"} থাকে। এটি ফাংশন লেখা ও ডিপ্লয় করার জন্য
আপনার Node.js ভার্সন নির্দিষ্ট করে। আপনি
অন্যান্য কাজ করে এমন ভার্সন বেছে নিতে পারবেন।
Python
myproject
+- .firebaserc # Hidden file that helps you quickly switch between
| # projects with `firebase use`
|
+- firebase.json # Describes properties for your project
|
+- functions/ # Directory containing all your functions code
|
+- main.py # Main source file for your Cloud Functions code
|
+- requirements.txt # List of the project's modules and packages
|
+- venv/ # Directory where your dependencies are installed
প্রয়োজনীয় মডিউল ইমপোর্ট করুন এবং অ্যাপ শুরু করুন
সেট-আপের কাজ সম্পূর্ণ করার পরে, আপনি সোর্স ডিরেক্টরি খুলে নিম্নলিখিত বিভাগে যেভাবে বর্ণনা করা হয়েছে সেইভাবে কোড যোগ করা শুরু করতে পারবেন। এই স্যাম্পেলের জন্য, আপনার প্রোজেক্টকে অবশ্যই Cloud Functions এবং Admin SDK মডিউল ইমপোর্ট করতে হবে। আপনার সোর্স ফাইলে এই ধরনের লাইন যোগ করুন:
Node.js
// The Cloud Functions for Firebase SDK to create Cloud Functions and triggers.
const {logger} = require("firebase-functions");
const {onRequest} = require("firebase-functions/https");
const {onDocumentCreated} = require("firebase-functions/firestore");
// The Firebase Admin SDK to access Firestore.
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");
initializeApp();
Python
# The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
from firebase_functions import firestore_fn, https_fn
# The Firebase Admin SDK to access Cloud Firestore.
from firebase_admin import initialize_app, firestore
import google.cloud.firestore
app = initialize_app()
এইসব লাইন প্রয়োজনীয় মডিউল লোড করে এবং
একটি admin অ্যাপ ইনস্ট্যান্স ইনিশিয়ালাইজ করে যেখান থেকে Cloud Firestore পরিবর্তন করা যেতে পারে।
যেখানে অ্যাডমিন SDK সাপোর্ট উপলভ্য, যেমন FCM, Authentication এবং Firebase Realtime Database-এর জন্য, এটি Cloud Functions ব্যবহার করে Firebase ইন্টিগ্রেট করার একটি শক্তিশালী উপায় প্রদান করে।
আপনি প্রোজেক্ট শুরু করার সময় Firebase CLI অটোমেটিক Cloud Functions মডিউলের জন্য Firebase Admin SDK এবং Firebase SDK ইনস্টল করে। আপনার প্রোজেক্টে থার্ড-পার্টি লাইব্রেরি যোগ করার ব্যাপারে আরও জানতে, ডিপেন্ডেন্সি ম্যানেজ করুন বিকল্প দেখুন।
"মেসেজ যোগ করুন" ফাংশন যোগ করুন
"মেসেজ যোগ করুন" ফাংশনের জন্য, আপনার সোর্স ফাইলে এই লাইনগুলি যোগ করুন:
Node.js
// Take the text parameter passed to this HTTP endpoint and insert it into
// Firestore under the path /messages/:documentId/original
exports.addmessage = onRequest(async (req, res) => {
// Grab the text parameter.
const original = req.query.text;
// Push the new message into Firestore using the Firebase Admin SDK.
const writeResult = await getFirestore()
.collection("messages")
.add({original: original});
// Send back a message that we've successfully written the message
res.json({result: `Message with ID: ${writeResult.id} added.`});
});
Python
@https_fn.on_request()
def addmessage(req: https_fn.Request) -> https_fn.Response:
"""Take the text parameter passed to this HTTP endpoint and insert it into
a new document in the messages collection."""
# Grab the text parameter.
original = req.args.get("text")
if original is None:
return https_fn.Response("No text parameter provided", status=400)
firestore_client: google.cloud.firestore.Client = firestore.client()
# Push the new message into Cloud Firestore using the Firebase Admin SDK.
_, doc_ref = firestore_client.collection("messages").add({"original": original})
# Send back a message that we've successfully written the message
return https_fn.Response(f"Message with ID {doc_ref.id} added.")
"মেসেজ যোগ করুন" ফাংশনটি হল একটি HTTP এন্ডপয়েন্ট। এন্ডপয়েন্টে কোনও অনুরোধ করা হলে
তার ফলে অনুরোধ ও উত্তর অবজেক্ট আপনার প্ল্যাটফর্মের (onRequest()
বা on_request) অনুরোধ হ্যান্ডলারের কাছে
পাঠানো হয়।
HTTP ফাংশন সিঙ্ক্রোনাস (কল করা যায় এমন ফাংশনের মতো), তাই আপনাকে যত দ্রুত সম্ভব উত্তর পাঠাতে হবে এবং Cloud Firestore ব্যবহার করে কাজ স্থগিত রাখতে হবে। "add message"
HTTP ফাংশন HTTP এন্ডপয়েন্টে একটি টেক্সট ভ্যালু পাস করে এবং /messages/:documentId/original পাথের অধীনে ডেটাবেসে
এটি যোগ করে।
"বড় হাতের অক্ষরে লিখুন" ফাংশন যোগ করুন
"বড় হাতের অক্ষরে পরিবর্তন করুন" ফাংশনের জন্য, আপনার সোর্স ফাইলে এই লাইনগুলি যোগ করুন:
Node.js
// Listens for new messages added to /messages/:documentId/original
// and saves an uppercased version of the message
// to /messages/:documentId/uppercase
exports.makeuppercase = onDocumentCreated("/messages/{documentId}", (event) => {
// Grab the current value of what was written to Firestore.
const original = event.data.data().original;
// Access the parameter `{documentId}` with `event.params`
logger.log("Uppercasing", event.params.documentId, original);
const uppercase = original.toUpperCase();
// You must return a Promise when performing
// asynchronous tasks inside a function
// such as writing to Firestore.
// Setting an 'uppercase' field in Firestore document returns a Promise.
return event.data.ref.set({uppercase}, {merge: true});
});
Python
@firestore_fn.on_document_created(document="messages/{pushId}")
def makeuppercase(event: firestore_fn.Event[firestore_fn.DocumentSnapshot | None]) -> None:
"""Listens for new documents to be added to /messages. If the document has
an "original" field, creates an "uppercase" field containg the contents of
"original" in upper case."""
# Get the value of "original" if it exists.
if event.data is None:
return
try:
original = event.data.get("original")
except KeyError:
# No "original" field, so do nothing.
return
# Set the "uppercase" field.
print(f"Uppercasing {event.params['pushId']}: {original}")
upper = original.upper()
event.data.reference.update({"uppercase": upper})
"বড় হাতের অক্ষরে লিখুন" ফাংশনটি কার্যকর হয় যখন Cloud Firestore-এ লেখা হয়, যা শোনার জন্য ডকুমেন্টকে সংজ্ঞায়িত করে। পারফর্ম্যান্সের কারণে, আপনাকে যতটা সম্ভব নির্দিষ্ট হতে হবে।
ব্র্যাকেট—যেমন, {documentId}—"প্যারামিটার" ঘিরে থাকে, ওয়াইল্ডকার্ড
যা কলব্যাকে তাদের মিলে যাওয়া ডেটা প্রকাশ করে। নতুন মেসেজ যোগ করা হলে, Cloud Firestore
কলব্যাক ট্রিগার করে।
Node.js-এ, Cloud Firestore ইভেন্টের মতো ইভেন্ট-চালিত ফাংশনগুলি
অ্যাসিঙ্ক্রোনাস। কলব্যাক ফাংশনটি হয় null, একটি অবজেক্ট,
অথবা একটি Promise রিটার্ন করবে।
আপনি কিছু রিটার্ন না করলে, ফাংশন টাইম-আউট হয়ে যায়, সমস্যা হয়েছে বলে সিগন্যাল দেয় এবং
আবার চেষ্টা করা হয়। সিঙ্ক, এসিঙ্ক ও প্রমিস দেখুন।
আপনার ফাংশনের এক্সিকিউশন এমুলেট করুন
Firebase Local Emulator Suite আপনাকে Firebase প্রোজেক্টে ডিপ্লয় করার পরিবর্তে আপনার লোকাল মেশিনে অ্যাপ তৈরি ও পরীক্ষা করার অনুমতি দেয়। ডেভেলপমেন্টের সময় লোকাল টেস্টিং করার জন্য বিশেষভাবে সাজেস্ট করা হয়, কারণ এটি কোডিংয়ের ভুলের ঝুঁকি কমায়, যার ফলে প্রোডাকশন এনভায়রনমেন্টে খরচ হতে পারে (যেমন, ইনফিনিট লুপ)।
আপনার ফাংশন এমুলেট করতে:
firebase emulators:startরান করুন এবং Emulator Suite UI-এর URL-এর জন্য আউটপুট চেক করুন। এটি ডিফল্ট হিসেবে localhost:4000-এ সেট করা থাকে, তবে আপনার মেশিনের অন্য কোনও পোর্টে হোস্ট করা হতে পারে। Emulator Suite UI খুলতে আপনার ব্রাউজারে সেই URL লিখুন।HTTP ফাংশনের URL-এর জন্য
firebase emulators:startকমান্ডের আউটপুট চেক করুন। এটিhttp://localhost:5001/MY_PROJECT/us-central1/addMessage-এর মতো দেখতে হবে, তবে:MY_PROJECT-এর জায়গায় আপনার প্রোজেক্ট আইডি বসানো হবে।- আপনার লোকাল মেশিনে পোর্ট আলাদা হতে পারে।
ফাংশনের URL-এর শেষে কোয়েরি স্ট্রিং
?text=uppercasemeযোগ করুন। এটি দেখতে অনেকটা এইরকম হবে:http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme. বিকল্প হিসেবে, আপনি "uppercaseme" মেসেজটি পরিবর্তন করে কাস্টম মেসেজ করতে পারেন।আপনার ব্রাউজারে নতুন ট্যাবে URL খুলে নতুন মেসেজ তৈরি করুন।
Emulator Suite UI-এ ফাংশনের প্রভাব দেখুন:
লগ ট্যাবে, আপনি নতুন লগ দেখতে পাবেন যা ইঙ্গিত করে যে আপনার HTTP ফাংশন সফলভাবে রান করেছে:
i functions: Beginning execution of "addMessage"i functions: Beginning execution of "makeUppercase"Firestore ট্যাবে, আপনি একটি ডকুমেন্ট দেখতে পাবেন যাতে আপনার আসল মেসেজ এবং মেসেজের আপারকেস ভার্সন থাকবে (যদি এটি আসল "uppercaseme" হয়, তাহলে আপনি "UPPERCASEME" দেখতে পাবেন)।
প্রোডাকশন এনভায়রনমেন্টে ফাংশন ডিপ্লয় করা
এমুলেটরে আপনার ফাংশনগুলি আপনার ইচ্ছা অনুযায়ী কাজ করলে, আপনি প্রোডাকশন এনভায়রনমেন্টে সেগুলি ডিপ্লয়, পরীক্ষা এবং রান করার জন্য এগিয়ে যেতে পারেন। মনে রাখবেন যে প্রোডাকশনে ডিপ্লয় করতে, আপনার প্রোজেক্ট অবশ্যই Blaze প্রাইসিং প্ল্যানে থাকতে হবে। Cloud Functions-এর দাম দেখুন।
টিউটোরিয়াল সম্পূর্ণ করতে, আপনার ফাংশন ডিপ্লয় করুন এবং তারপরে সেগুলি এক্সিকিউট করুন।
আপনার ফাংশন ডিপ্লয় করতে এই কমান্ড রান করুন:
firebase deploy --only functions
আপনি এই কমান্ড রান করার পরে, Firebase CLI যেকোনও HTTP ফাংশন এন্ডপয়েন্টের জন্য URL আউটপুট করে। আপনার টার্মিনালে, আপনি নিম্নলিখিত লাইনের মতো একটি লাইন দেখতে পাবেন:
Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessageURL-এ আপনার প্রোজেক্ট আইডি এবং HTTP ফাংশনের জন্য একটি অঞ্চল রয়েছে। যদিও আপনাকে এখন এটি নিয়ে চিন্তা করতে হবে না, কিছু প্রোডাকশন HTTP ফাংশনে নেটওয়ার্ক লেটেন্সি কমানোর জন্য লোকেশন নির্দিষ্ট করতে হবে।
আপনি যদি "প্রোজেক্টে অ্যাক্সেস অনুমোদন করা যাচ্ছে না" এর মতো অ্যাক্সেস সংক্রান্ত সমস্যার সম্মুখীন হন, তাহলে আপনার প্রোজেক্টের উপনাম চেক করে দেখুন।
CLI-এর মাধ্যমে আউটপুট করা URL ব্যবহার করে, একটি টেক্সট কোয়েরি প্যারামিটার যোগ করুন, এবং এটি একটি ব্রাউজারে খুলুন:
https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetooফাংশনটি এক্সিকিউট হয় এবং ব্রাউজারকে Firebase কনসোলে ডেটাবেস লোকেশনে রিডাইরেক্ট করে যেখানে টেক্সট স্ট্রিং স্টোর করা আছে। এই রাইট ইভেন্ট "আপারকেস করুন" ফাংশন ট্রিগার করে, যা স্ট্রিংয়ের আপারকেস ভার্সন লেখে।
ফাংশন ডিপ্লয় ও এক্সিকিউট করার পরে, আপনি Google Cloud কনসোলে লগ দেখতে পারবেন। ডেভেলপমেন্ট বা প্রোডাকশনে ফাংশন মুছে দিতে হলে, Firebase CLI ব্যবহার করুন।
প্রোডাকশনে, আপনি ফাংশনের পারফর্ম্যান্স অপ্টিমাইজ করতে এবং রান করার জন্য ইনস্ট্যান্সের ন্যূনতম ও সর্বাধিক সংখ্যা সেট করে খরচ নিয়ন্ত্রণ করতে চাইতে পারেন। এইসব রানটাইম বিকল্প সম্পর্কে আরও তথ্যের জন্য স্কেলিং আচরণ নিয়ন্ত্রণ করুন দেখুন।
পরবর্তী ধাপ
এই ডকুমেন্টেশন থেকে আপনি Cloud Functions-এর জন্য কীভাবে ফাংশন ম্যানেজ করবেন এবং Cloud Functions-এর মাধ্যমে কাজ করে এমন সব ধরনের ইভেন্ট কীভাবে ম্যানেজ করবেন সেই সম্পর্কে আরও জানতে পারবেন।
Cloud Functions সম্পর্কে আরও জানতে, আপনি নিম্নলিখিত কাজগুলিও করতে পারেন:
- Cloud Functions-এর ব্যবহারিক ক্ষেত্র সম্পর্কে পড়ুন।
- Cloud Functions কোডল্যাব ব্যবহার করে দেখুন।
- GitHub-এ কোডের স্যাম্পেল পর্যালোচনা ও রান করুন