כשיוצרים תוסף, כותבים את הלוגיקה שלו באמצעות Cloud Functions, בדומה מאוד לכתיבת פונקציה שתשמש רק בפרויקט שלכם. מצהירים על הפונקציות בקובץ extension.yaml
, וכשהמשתמשים מתקינים את התוסף, הפונקציות האלה נפרסות בפרויקט שלהם.
למידע כללי על השימוש ב-Cloud Functions, אפשר לעיין בתיעוד של Cloud Functions.
דור ראשון ודור שני של Cloud Functions
פלטפורמת Firebase תומכת ב-1st-generation וב-2nd-generation Cloud Functions. עם זאת, יש כרגע הגבלות מסוימות על השימוש בתוספים של Firebase עם דורות מסוימים של פונקציות בענן ועם סוגים מסוימים של טריגרים. לכן, תוספים רבים כוללים שילוב של פונקציות מהדור הראשון ומהדור השני.
בהמשך מפורטות תכונות שנתמכות בכל סוג של טריגר.
שיקולים מיוחדים
חלק מהגדרות הפונקציות מחייבות לציין מידע שמופיע גם בקובץ
extension.yaml
. לדוגמה, ל-Cloud Firestore יש שיטהdocument()
שמציינת את תבנית המסמך למעקב, וההצהרה התואמת שלה ב-extension.yaml
כוללת שדהresource
שמציין את אותה תבנית.במקרים כאלה, נעשה שימוש בהגדרה שצוינה בקובץ
extension.yaml
, וההגדרה שצוינה בהגדרת הפונקציה מתעלמת.מקובל לציין את הערך שהוגדר בהגדרת הפונקציה בכל מקרה, לצורך תיעוד. הדוגמאות בדף הזה פועלות לפי התבנית הזו.
ב-SDK מדור ראשון יש מתודה Cloud Functions ופקודת CLI
functions:config:set
שאפשר להשתמש בהן כדי לעבוד עם ערכים עם פרמטרים בפונקציות מדור ראשון.functions.config()
הטכניקה הזו הוצאה משימוש בגרסה Cloud Functions ולא תפעל בכלל בתוסף. במקום זאת, אפשר להשתמש במודולfunctions.params
(מומלץ) או ב-process.env
.
שימוש ב-TypeScript
רוב התיעוד לפיתוח תוסף משלכם מתאר תהליכי עבודה באמצעות JavaScript ל-Cloud Functions for Firebase. עם זאת, אפשר לכתוב את הפונקציות באמצעות TypeScript.
למעשה, כל התוספים הרשמייםFirebase כתובים ב-TypeScript. כדאי לעיין בתוספים האלה כדי לקבל כמה שיטות מומלצות לשימוש ב-TypeScript בתוסף.
אם כותבים את הפונקציות של התוסף ב-TypeScript, צריך לבצע את הפעולות הבאות לפני התקנת התוסף:
קומפילציה של קוד המקור של הפונקציות של התוסף ל-JavaScript.
הפקודה
firebase ext:dev:init
command מאפשרת לכם לבחור ב-TypeScript כדי לכתוב את הפונקציות. הפקודה מספקת תוסף מלא שניתן להתקנה וכן סקריפט build שאפשר להריץ באמצעותnpm run build
.בקובץ
package.json
, מוודאים שהשדהmain
מצביע על קובץ ה-JavaScript שנוצר.אם אתם מתקינים או מעלים את התוסף ממקור מקומי, צריך קודם לקמפל את קובצי ה-TypeScript.
טריגרים נתמכים של פונקציות
טריגרים של HTTP
פונקציה שמופעלת על ידי HTTP נפרסת בנקודת קצה (endpoint) ציבורית https
ומופעלת כשניגשים לנקודת הקצה.
מידע על כתיבת פונקציות שמופעלות על ידי HTTP מופיע במאמר קריאה לפונקציות באמצעות בקשות HTTP במסמכי התיעוד של Cloud Functions.
הגדרת הפונקציה (רק בדור הראשון)
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 נרשם ביומן.
במסמכי 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
פונקציה שמופעלת על ידי אימות רצה כשמשתמש נוצר או נמחק.
במאמר טריגרים של אימות ב-Firebase במסמכי התיעוד של Cloud Functions אפשר לקרוא מידע על כתיבת פונקציות שמופעלות על ידי אימות.
הגדרת הפונקציה (רק בדור הראשון)
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 פועלת כשמסמך נוצר, מעודכן או נמחק.
מידע על כתיבת פונקציות שמופעלות על ידי Firestore זמין במאמר טריגרים של Cloud Firestore במסמכי התיעוד של Cloud Functions.
הגדרת הפונקציה (רק בדור הראשון)
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 Google Analytics:
טריגר לאירוע (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
פונקציה שמופעלת על ידי Realtime Database פועלת כשנוצר, מעודכן או נמחק נתיב שתואם לתבנית שצוינה.
מידע על כתיבת פונקציות שמופעלות על ידי RTDB זמין במאמר בנושא טריגרים של Realtime Database במסמכי התיעוד של Cloud Functions.
הגדרת הפונקציה (רק בדור הראשון)
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 Google Analytics:
טריגר לאירוע (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
פונקציה שמופעלת על ידי 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 פועלת כשיוצרים, מעבירים לארכיון או מוחקים אובייקט, או כשמשנים את המטא-נתונים שלו.
מידע על כתיבת פונקציות שמופעלות על ידי Storage מופיע במאמר בנושא טריגרים של Cloud Storage במסמכי התיעוד של Cloud Functions.
הגדרת הפונקציה (רק בדור הראשון)
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 Google Analytics:
טריגר לאירוע (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 פועלת כשמטריצת בדיקות מסיימת את הבדיקות שלה.
מידע על כתיבת פונקציות שמופעלות על ידי Test Lab זמין במאמר טריגרים של Firebase Test Lab במסמכי התיעוד של Cloud Functions.
הגדרת הפונקציה (רק בדור הראשון)
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 מפרסם התראה.
במאמר טריגרים של התראות Firebase בתיעוד של Cloud Functions יש מידע על כתיבת פונקציות שמופעלות על ידי התראות.
הגדרת הפונקציה (רק בדור השני)
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)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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.newFatalIssue
crashlytics.newNonfatalIssue
crashlytics.regression
crashlytics.stabilityDigest
crashlytics.velocity
crashlytics.newAnrIssue
Performance Monitoring טריגרים של התראות
פונקציה שמופעלת על ידי Performance Monitoring פועלת כש-Performance Monitoring מפרסם התראה.
במאמר טריגרים של התראות Firebase בתיעוד של Cloud Functions יש מידע על כתיבת פונקציות שמופעלות על ידי התראות.
הגדרת הפונקציה (רק בדור השני)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
הצהרת משאבים (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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 מפרסם התראה.
במאמר טריגרים של התראות Firebase בתיעוד של Cloud Functions יש מידע על כתיבת פונקציות שמופעלות על ידי התראות.
הגדרת הפונקציה (רק בדור השני)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
הצהרת משאבים (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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.newTesterIosDevice
appDistribution.inAppFeedback
טריגרים של אירועים מותאמים אישית (Eventarc)
פונקציה שמופעלת על ידי Eventarc פועלת כשסוג אירוע ספציפי מתפרסם בערוץ ספציפי.
במאמר יצירה וטיפול בטריגרים של אירועים בהתאמה אישית במסמכי התיעוד של Cloud Functions אפשר לקרוא מידע על כתיבת פונקציות שמופעלות על ידי Eventarc.
אפשר גם לפרסם אירועים מהתוספים כדי לאפשר למשתמשים להוסיף לוגיקה מותאמת אישית לתוסף. אפשר לעיין במאמר בנושא שימוש בלוגיקה מותאמת אישית שסופקה על ידי מפתח בתוסף.
הגדרת הפונקציה (רק בדור השני)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
הצהרת משאבים (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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: ...
הערוץ צריך כבר להתקיים כשמתקינים את התוסף. לדוגמה, אם אתם מסתמכים על אירועים מותאמים אישית מתוסף אחר שיוצר את הערוץ, אתם צריכים להנחות את המשתמשים להתקין את התוסף הזה קודם.
בדוגמה שלמעלה, נוצר אירוע מותאם אישית להפעלת המעקב עבור הערוץ 'default' ב-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}