כתיבת Cloud Functions לתוסף

כשיוצרים תוסף, כותבים את הלוגיקה שלו באמצעות Cloud Functions, ב בדיוק כמו שכותבים פונקציה שמשתמשים בה רק לפרויקט משלך. אתם מצהירים על הפונקציות בקובץ extension.yaml, וגם כשמשתמשים מתקינים את התוסף, הפונקציות האלה פרוסות פרויקט.

במסמכי התיעוד של Cloud Functions יש מידע כללי על השימוש Cloud Functions.

Cloud Functions מדור ראשון ושני

ב-Firebase יש תמיכה בשני הרכיבים דור ראשון ודור שני Cloud Functions. אבל ב-Firebase, לתוספים יש כרגע כמה מגבלות על יצירת הענן שאפשר להשתמש בה עם סוגי טריגר מסוימים. לכן, הרבה התוספים כוללים שילוב של פונקציות מדור ראשון ודור שני.

תמיכה ביצירת פונקציות מצוינת לכל סוג טריגר שבהמשך.

שיקולים מיוחדים

  • חלק מהגדרות הפונקציות מחייבות לציין מידע שצוינו בקובץ extension.yaml. לדוגמה, ב-Cloud Firestore יש שיטה document() שמציינת את תבנית המסמך לצפייה, בהצהרה התואמת ב-extension.yaml יש שדה resource ש מציין את ההערה.

    במקרים כאלה, המערכת משתמשת בתצורה שצוינה בקובץ extension.yaml ומתעלם מהתצורה שצוינה בהגדרת הפונקציה.

    מקובל לציין את הערך שהוגדר בפונקציה ללא קשר להגדרה, לצורך התיעוד. הדוגמאות כתובים בדפוס הזה.

  • ל-Cloud Functions SDK מדור ראשון יש שיטת functions.config() וגם אפשר להשתמש בפקודת CLI functions:config:set שאפשר להשתמש בה כדי לעבוד איתה בערכים עם פרמטרים בפונקציות של דור ראשון. הטכניקה הזו הוצאה משימוש ב-Cloud Functions, והיא לא תפעל בכלל בתוסף. במקום זאת, השתמשו המודול functions.params (מומלץ) או process.env.

שימוש ב-TypeScript

רוב התיעוד עבור פיתוח תוסף משלך מתאר את תהליכי העבודה באמצעות JavaScript עבור Cloud Functions for Firebase. אבל אפשר במקום זאת לכתוב את הפונקציות באמצעות TypeScript.

למעשה, כל תוספים רשמיים של Firebase כתובות ב-TypeScript. אפשר לבדוק את התוספים האלה שיטות לשימוש ב-TypeScript עבור התוסף.

אם תכתוב את הפונקציות של התוסף ב-TypeScript, עליך לבצע את לפני שמתקינים את התוסף:

  1. מעתיקים את קוד המקור של הפונקציות של התוסף ל-JavaScript.

    הפקודה firebase ext:dev:init מאפשרת לבחור ב-TypeScript לכתיבה של הפונקציות. הפקודה מספק לך תוסף מלא להתקנה, וגרסה שאפשר להריץ באמצעות npm run build.

  2. בקובץ package.json, חשוב להצביע על השדה main אל JavaScript שנוצר.

  3. אם אתם מתקינים או מעלים את התוסף ממקור מקומי, קודם צריך להדר את קובצי ה-TypeScript.

טריגרים נתמכים של פונקציות

טריגרים ב-HTTP

פונקציה שמופעל על ידי HTTP נפרסת בנקודת קצה 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

טריגרים בתור משימות

פונקציה של תור המשימות מופעלת במחזור החיים של התוסף אירועים או כאשר הם מתווספים באופן ידני לתור המשימות של התוסף באמצעות מנהל המערכת ה-method TaskQueue.enqueue() של ה-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

פונקציה שמופעל על ידי אימות פועלת כשיוצרים או מוחקים משתמש.

מידע נוסף זמין בקטע טריגרים לאימות ב-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 פועלת כשמסמך נוצר, מתעדכן, או שנמחקו.

ראו טריגרים של 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

פונקציה שמופעל על ידי 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. מידע על כתיבת פונקציות שמופעלות על ידי האחסון.

הגדרת פונקציה (דור ראשון בלבד)

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 מפרסם התראה.

ניתן לעיין בקטע טריגרים של התראות 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}