برای شروع کار با Cloud Functions، این آموزش را امتحان کنید، که با کارهای راهاندازی لازم شروع میشود و با ایجاد، آزمایش، و استقرار دو تابع مرتبط ادامه مییابد:
- تابع «افزودن پیام» که نشانی وبی را نشان میدهد که مقدار نوشتاری را میپذیرد و آن را در 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});
});
پایتون
# 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 فعال کنید (بهنام «Gemini در Firebase»)، که میتواند به شما کمک کند شروع کنید و فرایند توسعه خود را ساده کنید.
-
(اختیاری) Google Analytics را برای پروژهتان راهاندازی کنید، که تجربه بهینهای را بااستفاده از این محصولات Firebase فعال میکند: Firebase A/B Testing، Cloud Messaging، Crashlytics، In-App Messaging، و Remote Config (شامل شخصیسازی).
یا حساب Google Analytics موجودی را انتخاب کنید یا حساب جدیدی ایجاد کنید. اگر حساب جدیدی ایجاد میکنید، Analyticsمکان گزارشدهی خود را انتخاب کنید، سپس تنظیمات همرسانی داده و Google Analyticsشرایط پروژهتان را بپذیرید.
- روی ایجاد پروژه کلیک کنید.
Firebase پروژه شما را ایجاد میکند، برخی منابع اولیه را فراهم میکند، و میاناهای برنامهسازی کاربردی مهم را فعال میکند. وقتی فرایند تکمیل شد، به صفحه نمای کلی پروژه Firebase خود در کنسول Firebase هدایت میشوید.
پروژه Cloud موجود
اگر میخواهید استفاده از Firebase را با پروژه Google Cloud موجود شروع کنید، این مراحل را دنبال کنید. درباره «افزودن Firebase» به پروژه Google Cloud موجود بیشتر بدانید و آن را عیبیابی کنید.
- با حسابی که به شما امکان دسترسی به پروژه Google Cloud موجود را میدهد، به سیستم کنسول Firebase وارد شوید.
- برای ایجاد پروژه Firebase جدید، روی دکمه کلیک کنید.
- در پایین صفحه، روی افزودن Firebase به پروژه Google Cloud کلیک کنید.
- در فیلد نوشتاری، نام پروژه موجود را وارد کنید، سپس پروژه را از فهرست نمایشدادهشده انتخاب کنید.
- روی باز کردن پروژه کلیک کنید.
- اگر درخواست شد، شرایط Firebase را مرور و قبول کنید، سپس روی ادامه کلیک کنید.
- (اختیاری) کمک هوش مصنوعی را در کنسول Firebase فعال کنید (بهنام «Gemini در Firebase»)، که میتواند به شما کمک کند شروع کنید و فرایند توسعه خود را ساده کنید.
-
(اختیاری) 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
Node.js
برای نوشتن توابع به محیط Node.js نیاز دارید، و برای استقرار توابع در زمان اجرای Cloud Functions به Firebase CLI نیاز دارید. برای نصب Node.js و npm، Node Version Manager توصیه میشود.
پساز نصب Node.js و npm، Firebase CLI را ازطریق روش دلخواهتان نصب کنید. برای نصب CLI ازطریق npm، از این دستور استفاده کنید:
npm install -g firebase-tools
با این کار، فرمان firebase که بهطور سراسری دردسترس است نصب میشود. اگر
فرمان ناموفق بود، ممکن است لازم باشد
اجازههای npm را تغییر دهید.
برای بهروزرسانی به جدیدترین نسخه firebase-tools، همان فرمان را دوباره اجرا کنید.
پایتون
برای نوشتن توابع به محیط پایتون نیاز دارید،
و برای استقرار توابع در زمان اجرای Cloud Functions به میانای خط فرمان Firebase نیاز دارید. توصیه میکنیم از venv برای
جداسازی وابستگیها استفاده کنید. نسخههای Python از ۳.۱۰ تا ۳.۱۳ پشتیبانی میشوند،
و نسخه ۳.۱۳ زمان اجرای پیشفرض است.
پساز نصب Python، Firebase CLI را ازطریق روش دلخواهتان نصب کنید.
مقداردهی اولیه پروژه
وقتی «کیت توسعه نرمافزار» Firebase را برای Cloud Functions مقداردهی اولیه میکنید، پروژه خالیای ایجاد میکنید که حاوی وابستگیها و برخیاز کدهای نمونه حداقلی است. اگر از Node.js استفاده میکنید، میتوانید TypeScript یا JavaScript را برای نوشتن توابع انتخاب کنید. برای اهداف این آموزش، باید Cloud Firestore را نیز مقداردهی اولیه کنید.
برای مقداردهی اولیه پروژه:
firebase loginرا اجرا کنید تا ازطریق مرورگر به سیستم وارد شوید و Firebase CLI را اصالتسنجی کنید.- به فهرست راهنمای پروژه Firebase بروید.
-
firebase init firestoreرا اجرا کنید. برای این آموزش، میتوانید مقادیر پیشفرض را هنگام درخواست برای قوانین Firestore و فایلهای نمایه بپذیرید. اگر هنوز از Cloud Firestore در این پروژه استفاده نکردهاید، باید حالت شروع و مکان Firestore را نیز همانطور که در شروع به کار با Cloud Firestore شرح داده شده است انتخاب کنید. -
firebase init functionsرا اجرا کنید. رابط خط فرمان از شما میخواهد پایگاه کد موجودی را انتخاب کنید یا پایگاه کد جدیدی را مقداردهی اولیه و نامگذاری کنید. وقتی تازه شروع میکنید، یک پایگاه کد واحد در مکان پیشفرض کافی است؛ بعداً، با گسترش پیادهسازی، ممکن است بخواهید توابع را در پایگاههای کد سازماندهی کنید. CLI این گزینهها را برای پشتیبانی از زبان به شما میدهد:
- جاوا اسکریپت
- TypeScript
- پایتون
برای این آموزش، جاوا اسکریپت یا پایتون را انتخاب کنید. برای نوشتن در TypeScript، به نوشتن توابع با TypeScript مراجعه کنید.
رابط خط فرمان گزینهای برای نصب وابستگیها دراختیارتان قرار میدهد. اگر میخواهید وابستگیها را به روش دیگری مدیریت کنید، میتوانید این مورد را رد کنید.
پساز تکمیل موفقیتآمیز این فرمانها، ساختار پروژه شما بهصورت زیر خواهد بود:
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 شما را برای
نوشتن و استقرار توابع مشخص میکند. میتوانید
نسخههای پشتیبانیشده دیگری را انتخاب کنید.
پایتون
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();
پایتون
# 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 را اعمال کرد.
هرجا که پشتیبانی کیت توسعه نرمافزار سرپرست دردسترس باشد، همانطور که برای FCM، Authentication، و Firebase Realtime Database دردسترس است، روشی قدرتمند برای ادغام Firebase بااستفاده از Cloud Functions ارائه میدهد.
وقتی پروژهتان را مقداردهی اولیه میکنید، «واسط خط فرمان» Firebase بهطور خودکار «کیت توسعه نرمافزار Firebase Admin» و «کیت توسعه نرمافزار» Firebase را برای واحدهای Cloud Functions نصب میکند. برای اطلاعات بیشتر درباره افزودن کتابخانههای طرف سوم به پروژهتان، مدیریت وابستگیها را ببینید.
افزودن تابع «افزودن پیام»
برای عملکرد «افزودن پیام»، این خطوط را به فایل منبع خود اضافه کنید:
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.`});
});
پایتون
@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});
});
پایتون
@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 بررسی کنید. بهطور پیشفرض روی localhost:4000 است، اما ممکن است روی درگاه دیگری در دستگاهتان میزبانی شود. آن نشانی وب را در مرورگرتان وارد کنید تا Emulator Suite UI باز شود.خروجی فرمان
firebase emulators:startرا برای نشانی وب تابع HTTP بررسی کنید. این پیام شبیه بهhttp://localhost:5001/MY_PROJECT/us-central1/addMessageخواهد بود، با این تفاوت که:MY_PROJECTبا شناسه پروژه شما جایگزین خواهد شد.- ممکن است درگاه در ماشین محلی شما متفاوت باشد.
رشته پُرسمان
?text=uppercasemeرا به انتهای نشانی وب تابع اضافه کنید. این باید چیزی شبیه به این باشد:http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme. اختیاراً میتوانید پیام «uppercaseme» را به پیام سفارشی تغییر دهید.با باز کردن نشانی وب در برگه جدیدی در مرورگرتان، پیام جدیدی ایجاد کنید.
تأثیر عملکردها را در 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 خروجی میدهد. در پایانه، باید خطی مانند زیر ببینید:
Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessageنشانی وب حاوی شناسه پروژه شما و همچنین منطقهای برای تابع HTTP است. اگرچه اکنون نیازی نیست نگران آن باشید، برخیاز توابع HTTP تولید باید مکان را مشخص کنند تا تأخیر شبکه را بهحداقل برسانند.
اگر با خطاهای دسترسی مانند «دسترسی به پروژه مجاز نیست» مواجه شدید، نام مستعار پروژه خود را بررسی کنید.
بااستفاده از نشانی وب خروجی CLI، پارامتر پُرسمان نوشتاری اضافه کنید، و آن را در مرورگر باز کنید:
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 codelab را امتحان کنید.
- مرور و اجرای نمونه کدها در GitHub