כתוב פונקציות ענן עבור הרחבה

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

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

פונקציות ענן מהדור הראשון והשני

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

תמיכה ביצירת פונקציות מצוינת עבור כל סוג טריגר, להלן.

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

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

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

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

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

באמצעות TypeScript

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

למעשה, כל ההרחבות הרשמיות של Firebase כתובות ב-TypeScript. אתה יכול לעיין בהרחבות אלה כדי לקבל כמה שיטות עבודה מומלצות לשימוש ב-TypeScript עבור התוסף שלך.

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

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

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

  2. בקובץ package.json שלך, הקפד להפנות את השדה main ל-JavaScript שנוצר.

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

מפעילי פונקציות נתמכות

מפעילי HTTP

פונקציה מופעלת ב-HTTP נפרסת לנקודת קצה https ציבורית ופועלת כאשר מתבצעת גישה לנקודת הקצה.

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

ראה פונקציות שיחה מהאפליקציה שלך בתיעוד פונקציות ענן למידע על שימוש בפונקציות הניתנות להתקשרות.

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

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: ...

הפעלת פונקציות מתוזמנות

פונקציה מתוזמנת פועלת שוב ושוב על סמך לוח זמנים הניתן להתאמה אישית.

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

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

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 של 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 שצוין נרשם ביומן.

עיין בטריגרים של Google Analytics בתיעוד של פונקציות הענן למידע על כתיבת פונקציות המופעלות על ידי 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

אימות

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

ראה מפעילי אימות 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: ...

הטבלה הבאה מראה כיצד לציין כל אחד מסוגי אירועי האימות הנתמכים:

טריגר אירוע של 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 בתיעוד 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

מסד נתונים בזמן אמת

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

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

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

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

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 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

מעבדת בדיקות

פונקציה המופעלת ממעבדת בדיקה פועלת כאשר מטריצת בדיקה מסיימת את הבדיקות שלה.

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

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

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

מפעילי התראה של ניטור ביצועים

פונקציה המופעלת ניטור ביצועים פועלת כאשר ניטור ביצועים מפרסם התראה.

ראה מפעילי התראות Firebase בתיעוד פונקציות ענן למידע על כתיבת פונקציות שהופעלו התראות.

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

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: ...

מופעלות התראות על הפצת אפליקציות

פונקציה מופעלת בהפצת אפליקציות פועלת כאשר הפצת אפליקציות מפרסמת התראה.

ראה מפעילי התראות Firebase בתיעוד פונקציות ענן למידע על כתיבת פונקציות שהופעלו התראות.

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

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: ...

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

הדוגמה שלמעלה תיצור טריגר אירוע מותאם אישית עבור ערוץ 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}