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 ইনস্টল করুন ।
আপনার প্রোজেক্ট ইনিশিয়ালাইজ করা
আপনি Firebase-এর জন্য SDK Cloud Functions ইনিশিয়ালাইজ করলে, আপনি একটি খালি প্রোজেক্ট তৈরি করেন যার মধ্যে নির্ভরতা ও কিছু ন্যূনতম নমুনা কোড থাকে। আপনি Node.js ব্যবহার করলে, ফাংশন কম্পোজ করার জন্য TypeScript বা JavaScript-এর মধ্যে যেকোনও একটি বেছে নিতে পারবেন। এই টিউটোরিয়ালের উদ্দেশ্যের জন্য, আপনাকে Cloud Firestore-ও ইনিশিয়ালাইজ করতে হবে।
আপনার প্রোজেক্ট শুরু করতে:
- ব্রাউজারের মাধ্যমে লগ-ইন করতে এবং CLI-কে যাচাই করতে
firebase loginরান করান। Firebase - আপনার Firebase প্রোজেক্ট ডিরেক্টরিতে যান।
- রান
firebase init firestoreএই টিউটোরিয়ালের জন্য, Firestore নিয়ম ও ইন্ডেক্স ফাইলের জন্য প্রম্পট করা হলে, আপনি ডিফল্ট মান গ্রহণ করতে পারেন। আপনি এই প্রোজেক্টে এখনও Cloud Firestore ব্যবহার না করে থাকলে, আপনাকে Cloud Firestore-এর সাথে শুরু করুন নিবন্ধে বর্ণিত Firestore-এর জন্য একটি শুরুর মোড ও লোকেশন বেছে নিতে হবে। - রান
firebase init functionsCLI আপনাকে আগে থেকে থাকা কোডবেস বেছে নিতে বা নতুন কোডবেস ইনিশিয়ালাইজ ও নাম দিতে প্রম্পট করে। আপনি সবে শুরু করলে, ডিফল্ট লোকেশনে একটি কোডবেস হলেই চলবে; পরে, আপনার ইমপ্লিমেন্টেশন বাড়লে, আপনি কোডবেসে ফাংশন সাজাতে চাইতে পারেন। 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 পরিবর্তন করা যায়।
Admin SDK যেখানে কাজ করে, যেমন
FCM, Authentication ও Firebase Realtime Database-এর ক্ষেত্রে, এটি Cloud Functions ব্যবহার করে Firebase ইন্টিগ্রেট করার একটি
শক্তিশালী উপায় প্রদান করে।
আপনি প্রোজেক্ট ইনিশিয়ালাইজ করলে, Firebase CLI অটোমেটিক Firebase Admin SDK এবং Firebase মডিউলের জন্য Cloud Functions 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 ব্যবহার করে কাজ পিছিয়ে দিতে হবে। "মেসেজ যোগ করুন"
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, কোনও Object,
বা 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-এ কোড স্যাম্পেল পর্যালোচনা ও রান করা