כשיוצרים תוסף, כותבים את הלוגיקה שלו באמצעות Cloud Functions, בדומה לכתיבת פונקציה שתשמש רק בפרויקט שלכם. אתם מצהירים על הפונקציות בקובץ extension.yaml, וכשהמשתמשים מתקינים את התוסף, הפונקציות האלה נפרסות בפרויקט שלהם.
במסמכי התיעוד של Cloud Functions מופיע מידע כללי על השימוש ב-Cloud Functions.
Cloud Functions דור ראשון ודור שני
Firebase תומך בCloud Functions מהדור הראשון ומהדור השני. עם זאת, כרגע יש בתוספים ל-Firebase כמה הגבלות על הדור של פונקציית Cloud Functions שאפשר להשתמש בו עם סוגים מסוימים של טריגרים. לכן, תוספים רבים כוללים שילוב של פונקציות מהדור הראשון ומהדור השני.
התמיכה ביצירת פונקציות מצוינת לכל סוג טריגר, בהמשך.
שיקולים מיוחדים
בחלק מהגדרות הפונקציות צריך לציין מידע שצוין גם בקובץ
extension.yaml. לדוגמה, ל-Cloud Firestore יש שיטה בשםdocument()שמציינת את תבנית המסמך שצריך לעקוב אחריה, וההצהרה התואמת שלה ב-extension.yamlכוללת שדה בשםresourceשמציין את אותו הדבר.במצבים כאלה, המערכת משתמשת בהגדרות שצוינו בקובץ
extension.yamlומתעלמת מההגדרות שצוינו בהגדרת הפונקציה.למטרות תיעוד, נהוג לציין את הערך שהוגדר בהגדרת הפונקציה בכל מקרה. הדוגמאות בדף הזה פועלות לפי התבנית הזו.
ב-SDK של Cloud Functions דור ראשון יש את ה-method
functions.config()ואת הפקודהfunctions:config:setב-CLI, שמאפשרות לעבוד עם ערכי פרמטרים בפונקציות של דור ראשון. השיטה הזו הוצאה משימוש ב-Cloud Functions והיא לא תעבוד בכלל בתוסף. במקום זאת, השתמשו במודולfunctions.params(מומלץ) או ב-process.env.
שימוש ב-TypeScript
רוב התיעוד לפיתוח תוסף משלכם מתאר תהליכי עבודה באמצעות JavaScript ל-Cloud Functions for Firebase. עם זאת, אתם יכולים לכתוב את הפונקציות באמצעות TypeScript.
למעשה, כל התוספים הרשמיים של Firebase כתובים ב-TypeScript. אתם יכולים לעיין בתוספים האלה כדי לראות כמה שיטות מומלצות לשימוש ב-TypeScript בתוסף שלכם.
אם אתם כותבים את הפונקציות של התוסף ב-TypeScript, אתם צריכים לבצע את הפעולות הבאות לפני התקנת התוסף:
ממירים את קוד המקור של הפונקציות של התוסף ל-JavaScript.
הפקודה
firebase ext:dev:initמאפשרת לכם לבחור ב-TypeScript לכתיבת הפונקציות. הפקודה מספקת תוסף מלא שניתן להתקנה וגם סקריפט build שאפשר להריץ באמצעותnpm run build.בקובץ
package.json, חשוב לוודא שהשדהmainמפנה ל-JavaScript שנוצר.אם אתם מתקינים או מעלים את התוסף ממקור מקומי, קודם צריך לקמפל את קובצי ה-TypeScript.
טריגרים נתמכים של פונקציות
טריגרים מסוג HTTP
פונקציה שמופעלת על ידי HTTP נפרסת בנקודת קצה (endpoint) ציבורית של https, ופועלת כשניגשים לנקודת הקצה.
במאמר קריאה לפונקציות באמצעות בקשות HTTP שבמסמכי התיעוד של Cloud Functions מוסבר איך לכתוב פונקציות שמופעלות על ידי HTTP.
הגדרת פונקציה (דור ראשון בלבד)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
פונקציות שניתן להפעיל
פונקציות שניתן להפעיל דומות לפונקציות שמופעלות באמצעות HTTP, אבל הן מיישמות פרוטוקול שמאפשר להפעיל אותן בקלות מהקוד בצד הלקוח.
במסמכי התיעוד של Cloud Functions, בקטע קריאה לפונקציות מהאפליקציה, מוסבר איך להשתמש בפונקציות שניתנות לקריאה.
הגדרת פונקציה (דור ראשון בלבד)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
טריגרים של פונקציות מתוזמנות
פונקציה מתוזמנת פועלת שוב ושוב לפי לוח זמנים שניתן להתאמה אישית.
במאמר תזמון פונקציות במסמכי התיעוד של Cloud Functions מוסבר איך כותבים פונקציות מתוזמנות.
הגדרת פונקציה (דור ראשון בלבד)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
אלה שדות המשנה הזמינים של scheduleTrigger:
| שדה | תיאור |
|---|---|
schedule(חובה) |
התדירות שבה רוצים שהפונקציה תפעל. השדה הזה יכול לקבל מחרוזות שמשתמשות בכל אחד מהתחבירים (חובה להוסיף מירכאות בודדות):
|
timeZone(אופציונלי) |
אזור הזמן שבו לוח הזמנים יפעל.
|
אם רוצים שהמשתמשים יוכלו להגדיר את לוח הזמנים כשהם מתקינים את התוסף, צריך להוסיף פרמטר חדש לקובץ extension.yaml ולהפנות לפרמטר בהצהרה resource של הפונקציה:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: ${SCHEDULE_FREQUENCY}
- name: anotherFunction
type: ...
params:
- param: SCHEDULE_FREQUENCY
label: Schedule
description: How often do you want to run yourFunctionName()?
type: string
default: 'every 5 minutes' # Specifying a default is optional.
required: true
טריגרים של תור משימות
פונקציה של תור משימות מופעלת באירועים במחזור החיים של התוסף, או כשמוסיפים אותה ידנית לתור המשימות של התוסף באמצעות השיטה TaskQueue.enqueue() של Admin SDK.
במאמר טיפול באירועים במחזור החיים של התוסף מוסבר איך לכתוב פונקציות שמטפלות באירועים במחזור החיים.
במאמר הוספת פונקציות לתור באמצעות Cloud Tasks שבמסמכי התיעוד של Cloud Functions מוסבר איך לכתוב פונקציות של תור משימות.
הגדרת פונקציה (דור ראשון בלבד)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
מגדירים את המאפיין taskQueueTrigger כ-{} או כמפה של אפשרויות לכוונון הגבלת קצב של יצירת בקשות והתנהגות הניסיון החוזר של תור המשימות (ראו כוונון תור המשימות).
אם רוצים להפעיל את הפונקציה באירועים של מחזור החיים של התוסף, מוסיפים רשומות lifecycleEvents עם שם הפונקציה והודעת עיבוד אופציונלית, שתוצג במסוף Firebase כשהעיבוד יתחיל.
lifecycleEvents:
onInstall:
function: myTaskFunction
processingMessage: Resizing your existing images
onUpdate:
function: myOtherTaskFunction
processingMessage: Setting up your extension
onConfigure:
function: myOtherTaskFunction
processingMessage: Setting up your extension
Analytics
פונקציה שמופעלת על ידי Analytics פועלת כשאירוע Analytics מסוים נרשם ביומן.
במאמר טריגרים של Google Analytics במסמכי התיעוד של Cloud Functions מוסבר איך לכתוב פונקציות שמופעלות על ידי Analytics.
הגדרת פונקציה (דור ראשון בלבד)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/ga_event
- name: anotherFunction
type: ...
אם אתם רוצים שהמשתמשים יוכלו להגדיר את האירוע Analytics כך שיאזין להתקנת התוסף, הוסיפו פרמטר חדש לקובץ extension.yaml והפנו לפרמטר בהצהרת resource של הפונקציה:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
- name: anotherFunction
type: ...
params:
- param: EVENT_NAME
label: Analytics event
description: What event do you want to respond to?
type: string
default: ga_event # Specifying a default is optional.
required: true
Authentication
פונקציה שמופעלת על ידי אימות פועלת כשמשתמש נוצר או נמחק.
במסמכי התיעוד של Cloud Functions, בקטע טריגרים של אימות ב-Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי אימות.
הגדרת פונקציה (דור ראשון בלבד)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/firebase.auth/eventTypes/user.create
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
בטבלה הבאה מוסבר איך לציין כל אחד מסוגי האירועים הנתמכים ב-Authentication:
| טריגר לאירוע Cloud Functions | eventType |
תיאור |
|---|---|---|
onCreate() |
providers/firebase.auth/eventTypes/user.create |
נוצר משתמש חדש |
onDelete() |
providers/firebase.auth/eventTypes/user.delete |
המשתמש נמחק |
Cloud Firestore
פונקציה שמופעלת על ידי Cloud Firestore פועלת כשמסמך נוצר, מתעדכן או נמחק.
במאמר טריגרים של Cloud Firestore שבמסמכי התיעוד של Cloud Functions מוסבר איך כותבים פונקציות שמופעלות על ידי Firestore.
הגדרת פונקציה (דור ראשון בלבד)
import { firestore } from "firebase-functions/v1";
export const yourFunctionName = firestore.document("collection/{doc_id}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = firestore.document("collection/{doc_id}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = firestore.document("collection/{doc_id}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = firestore.document("collection/{doc_id}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/collection/{documentID}
- name: anotherFunction
type: ...
בטבלה הבאה מוסבר איך לציין כל אחד מסוגי האירועים הנתמכים ב-Cloud Firestore:
| טריגר לאירוע Cloud Functions | eventType |
תיאור |
|---|---|---|
onCreate() |
providers/cloud.firestore/eventTypes/document.create |
נוצר מסמך חדש |
onDelete() |
providers/cloud.firestore/eventTypes/document.delete |
המסמך נמחק |
onUpdate() |
providers/cloud.firestore/eventTypes/document.update |
המסמך עודכן |
onWrite() |
providers/cloud.firestore/eventTypes/document.write |
מסמך נוצר, נמחק או עודכן |
אם רוצים שהמשתמשים יוכלו להגדיר את נתיב המסמך כשהם מתקינים את התוסף, צריך להוסיף פרמטר חדש לקובץ extension.yaml ולהפנות לפרמטר בהצהרה resource של הפונקציה:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
- name: anotherFunction
type: ...
params:
- param: YOUR_DOCUMENT_PATH
label: Cloud Firestore path
description: Where do you want to watch for changes?
type: string
default: path/to/{documentID} # Specifying a default is optional.
required: true
Pub/Sub
פונקציה שמופעלת על ידי Pub/Sub פועלת כשמפורסמת הודעה בנושא ספציפי.
במאמר טריגרים של Pub/Sub במסמכי התיעוד של Cloud Functions מוסבר איך לכתוב פונקציות שמופעלות על ידי Pub/Sub.
הגדרת פונקציה (דור ראשון בלבד)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/topic-name
- name: anotherFunction
type: ...
אם רוצים שהמשתמשים יוכלו להגדיר את הנושא Pub/Sub כשהם מתקינים את התוסף, צריך להוסיף פרמטר חדש לקובץ extension.yaml ולהפנות לפרמטר בהצהרה resource של הפונקציה:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
- name: anotherFunction
type: ...
params:
- param: PUBSUB_TOPIC
label: Pub/Sub topic
description: Which Pub/Sub topic do you want to watch for messages?
type: string
default: topic-name # Specifying a default is optional.
required: true
Realtime Database
פונקציה שמופעלת על ידי מסד נתונים בזמן אמת פועלת כשנוצר, מתעדכן או נמחק נתיב שתואם לתבנית מסוימת.
במסמכי התיעוד של Cloud Functions, בקטע טריגרים של מסד נתונים בזמן אמת, מוסבר איך לכתוב פונקציות שמופעלות על ידי טריגרים של RTDB.
הגדרת פונקציה (דור ראשון בלבד)
import { database } from "firebase-functions/v1";
export const yourFunctionName = database.ref("path/to/{item}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = database.ref("path/to/{item}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = database.ref("path/to/{item}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = database.ref("path/to/{item}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/path/to/{itemId}
- name: anotherFunction
type: ...
בטבלה הבאה מוסבר איך לציין כל אחד מסוגי האירועים הנתמכים ב-Cloud Firestore:
| טריגר לאירוע Cloud Functions | eventType |
תיאור |
|---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
הנתונים נוצרו |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
הנתונים נמחקו |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
הנתונים עודכנו |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
נתונים שנוצרו, נמחקו או עודכנו |
אם אתם רוצים שהמשתמשים יוכלו להגדיר את הנתיב למעקב כשהם מתקינים את התוסף, הוסיפו פרמטר חדש לקובץ extension.yaml והפנו לפרמטר בהצהרת resource של הפונקציה:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/${DB_PATH}
- name: anotherFunction
type: ...
params:
- param: DB_PATH
label: Realtime Database path
description: Where do you want to watch for changes?
type: string
default: path/to/{itemId} # Specifying a default is optional.
required: true
Remote Config
פונקציה שמופעלת על ידי הגדרת תצורה מרחוק פועלת כשמעדכנים את תבנית הפרמטרים של הפרויקט.
במאמר טריגרים של הגדרת תצורה מרחוק במסמכי התיעוד של Cloud Functions מוסבר איך לכתוב פונקציות שמופעלות על ידי טריגרים של הגדרת תצורה מרחוק.
הגדרת פונקציה (דור ראשון בלבד)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.firebase.remoteconfig.update
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
Cloud Storage
פונקציה שמופעלת על ידי Cloud Storage פועלת כשנוצר, נמחק או מועבר לארכיון אובייקט, או כשהמטא-נתונים שלו משתנים.
במאמר טריגרים של Cloud Storage שבמסמכי התיעוד של Cloud Functions מוסבר איך כותבים פונקציות שמופעלות על ידי טריגרים של Storage.
הגדרת פונקציה (דור ראשון בלבד)
import { storage } from "firebase-functions/v1";
export const yourFunctionName = storage.object().onFinalize((object, context) => {
// ...
});
export const yourFunctionName2 = storage.object().onMetadataUpdate((object, context) => {
// ...
});
export const yourFunctionName3 = storage.object().onArchive((object, context) => {
// ...
});
export const yourFunctionName4 = storage.object().onDelete((object, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
# STORAGE_BUCKET (project's default bucket) is an auto-populated
# parameter. You can also specify a bucket.
resource: projects/_/buckets/${STORAGE_BUCKET}
- name: anotherFunction
type: ...
בטבלה הבאה מוסבר איך לציין כל אחד מסוגי האירועים הנתמכים ב-Cloud Storage:
| טריגר לאירוע Cloud Functions | eventType |
תיאור |
|---|---|---|
onFinalize() |
google.storage.object.finalize |
האובייקט נוצר |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
המטא-נתונים של האובייקט עודכנו |
onArchive() |
google.storage.object.archive |
האובייקט הועבר לארכיון |
onDelete() |
google.storage.object.delete |
האובייקט נמחק |
אם אתם רוצים שהמשתמשים יוכלו להגדיר את קטגוריית האחסון כשהם מתקינים את התוסף, הוסיפו פרמטר חדש לקובץ extension.yaml והפנו לפרמטר בהצהרה resource של הפונקציה:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
resource: projects/_/buckets/${YOUR_BUCKET}
- name: anotherFunction
type: ...
params:
- param: YOUR_BUCKET
label: Cloud Storage bucket
description: Which bucket do you want to watch for changes?
type: selectResource
resourceType: storage.googleapis.com/Bucket
default: ${STORAGE_BUCKET} # Specifying a default is optional.
required: true
Test Lab
פונקציה שמופעלת על ידי Test Lab פועלת כשמטריצת בדיקה מסיימת את הבדיקות שלה.
במאמר טריגרים של Firebase Test Lab במסמכי התיעוד של Cloud Functions מוסבר איך לכתוב פונקציות שמופעלות על ידי Test Lab.
הגדרת פונקציה (דור ראשון בלבד)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.testing.testMatrix.complete
resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
- name: anotherFunction
type: ...
Crashlytics טריגרים של התראות
פונקציה שמופעלת על ידי Crashlytics פועלת כש-Crashlytics מפרסם התראה.
במסמכי התיעוד של Cloud Functions, בקטע טריגרים של התראות Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי התראות.
הגדרת הפונקציה (דור שני בלבד)
import {
onNewFatalIssuePublished,
onNewNonfatalIssuePublished,
onNewAnrIssuePublished,
onRegressionAlertPublished,
onVelocityAlertPublished,
onStabilityDigestPublished,
} from "firebase-functions/v2/alerts/crashlytics";
export const yourFunctionName = onNewFatalIssuePublished((event) => {
// ...
});
export const yourFunctionName2 = onNewNonfatalIssuePublished((event) => {
// ...
});
export const yourFunctionName3 = onNewAnrIssuePublished((event) => {
// ...
});
export const yourFunctionName4 = onRegressionAlertPublished((event) => {
// ...
});
export const yourFunctionName5 = onVelocityAlertPublished((event) => {
// ...
});
export const yourFunctionName6 = onStabilityDigestPublished((event) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: crashlytics.newFatalIssue
- name: anotherFunction
type: ...
אפשר להשתמש בערכים הבאים עבור alerttype
crashlytics.newFatalIssuecrashlytics.newNonfatalIssuecrashlytics.regressioncrashlytics.stabilityDigestcrashlytics.velocitycrashlytics.newAnrIssue
Performance Monitoring טריגרים של התראות
פונקציה שמופעלת על ידי Performance Monitoring פועלת כש-Performance Monitoring מפרסם התראה.
במסמכי התיעוד של Cloud Functions, בקטע טריגרים של התראות Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי התראות.
הגדרת הפונקציה (דור שני בלבד)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: performance.threshold
- name: anotherFunction
type: ...
App Distribution טריגרים של התראות
פונקציה שמופעלת על ידי App Distribution פועלת כש-App Distribution מפרסם התראה.
במסמכי התיעוד של Cloud Functions, בקטע טריגרים של התראות Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי התראות.
הגדרת הפונקציה (דור שני בלבד)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: appDistribution.inAppFeedback
- name: anotherFunction
type: ...
אפשר להשתמש בערכים הבאים עבור alerttype
appDistribution.newTesterIosDeviceappDistribution.inAppFeedback
טריגרים של אירועים בהתאמה אישית (Eventarc)
פונקציה שמופעלת על ידי Eventarc פועלת כשסוג אירוע ספציפי מתפרסם בערוץ ספציפי.
במאמר יצירה וטיפול בטריגרים של אירועים בהתאמה אישית שבמסמכי התיעוד של Cloud Functions מוסבר איך לכתוב פונקציות שמופעלות על ידי Eventarc.
אתם יכולים גם לפרסם אירועים מהתוספים שלכם כדי לאפשר למשתמשים להוסיף לוגיקה מותאמת אישית לתוסף. איך משתמשים בלוגיקה מותאמת אישית שסופקה על ידי המפתח בתוסף
הגדרת הפונקציה (דור שני בלבד)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
הצהרת משאבים (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
# LOCATION is a user-configured parameter value specified by the user
# during installation.
location: ${param:LOCATION}
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
timeoutSeconds: 60
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/us-central1/channels/firebase
- name: anotherFunction
type: ...
הערוץ כבר צריך להיות קיים כשהתוסף מותקן. לדוגמה, אם אתם מסתמכים על אירועים בהתאמה אישית מתוסף אחר שיוצר את הערוץ, אתם צריכים להנחות את המשתמשים להתקין קודם את התוסף הזה.
הדוגמה שלמעלה תיצור טריגר של אירוע בהתאמה אישית לערוץ Firebase שמוגדר כברירת מחדל באזור us-central1. אתם יכולים להשתמש בפרמטרים כדי להתאים אישית את שם הערוץ והאזור. לדוגמה:
params:
- param: EVENTARC_CHANNEL_NAME
label: Eventarc channel name
description: What is the name of the Eventarc channel.
default: firebase
type: string
required: true
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
location: ${param:LOCATION}
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/${param:LOCATION}/channels/${param:EVENTARC_CHANNEL_NAME}