Cloud Functions für eine Erweiterung schreiben

Wenn Sie eine Erweiterung erstellen, schreiben Sie ihre Logik mit Cloud Functions in so wie Sie eine Funktion schreiben würden, die nur in für Ihr eigenes Projekt erstellen. Sie deklarieren Ihre Funktionen in der Datei extension.yaml. Wenn Nutzer Ihre Erweiterung installieren, werden diese Funktionen in ihrem Projekt bereitgestellt.

Allgemeine Informationen zur Verwendung finden Sie in der Dokumentation zu Cloud Functions Cloud Functions.

Cloud Functions (1. und 2. Generation)

Firebase unterstützt sowohl Cloud Functions der 1. als auch der 2. Generation. Bei Firebase-Erweiterungen gibt es jedoch derzeit einige Einschränkungen bei der Generation der Cloud-Funktion, die Sie mit bestimmten Triggertypen verwenden können. Aus diesem Grund Erweiterungen enthalten eine Mischung aus Funktionen der 1. und 2. Generation.

Die Unterstützung der Funktionsgenerierung ist für jeden Triggertyp unten angegeben.

Besondere Überlegungen

  • Bei einigen Funktionsdefinitionen müssen Informationen angegeben werden, die auch in der Datei extension.yaml angegeben. Cloud Firestore hat beispielsweise document()-Methode, die das zu beobachtende Dokumentmuster und dessen die entsprechende Deklaration in extension.yaml das Feld resource enthält, das gibt dasselbe an.

    In diesen Fällen wird die in der Datei extension.yaml angegebene Konfiguration verwendet und die in der Funktionsdefinition angegebene Konfiguration wird ignoriert.

    Es ist jedoch üblich, den konfigurierten Wert in der Funktionsdefinition anzugeben, um die Dokumentation zu vervollständigen. Die Beispiele zu diesem Thema Seite diesem Muster folgen.

  • Das Cloud Functions SDK der 1. Generation hat eine functions.config()-Methode und functions:config:set-Befehlszeilenbefehl, mit dem Sie arbeiten können in 1st gen-Funktionen parametrisiert. Dieses Verfahren wurde eingestellt in Cloud Functions und funktioniert in einer Erweiterung überhaupt nicht. Verwenden Sie stattdessen das Modul functions.params (empfohlen) oder process.env.

TypeScript verwenden

Der größte Teil der Dokumentation zum Entwickeln eigener Erweiterungen beschreibt Workflows mit JavaScript für Cloud Functions for Firebase. Sie können jedoch auch Ihre Funktionen mithilfe von TypeScript.

Alle offizielle Firebase-Erweiterungen sind in TypeScript verfasst. Diese Erweiterungen finden Sie Best Practices für die Verwendung von TypeScript für Ihre Erweiterung.

Wenn Sie die Funktionen Ihrer Erweiterung in TypeScript schreiben, müssen Sie bevor Sie die Erweiterung installieren:

  1. Kompilieren Sie den Quellcode der Funktionen Ihrer Erweiterung in JavaScript.

    Die firebase ext:dev:init Befehl können Sie TypeScript zum Schreiben Ihrer Funktionen verwenden. Der Befehl bietet Ihnen eine vollständige, installierbare Erweiterung sowie einen Build Skript, das Sie mit npm run build ausführen können.

  2. Achten Sie darauf, dass das Feld main in der Datei package.json auf die generiertem JavaScript-Code.

  3. Wenn Sie Ihre Erweiterung aus einer lokalen Quelle installieren oder hochladen, müssen Sie zuerst Ihre TypeScript-Dateien kompilieren.

Unterstützte Funktionstrigger

HTTP-Trigger

Eine durch HTTP ausgelöste Funktion wird auf einem öffentlichen https-Endpunkt bereitgestellt und ausgeführt wenn auf den Endpunkt zugegriffen wird.

Siehe Aufruffunktionen über HTTP-Anfragen in der Cloud Functions Dokumentation zum Schreiben von durch HTTP ausgelösten Funktionen.

Funktionsdefinition (nur 1. Generation)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});

Ressourcendeklaration (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Aufrufbare Funktionen

Aufrufbare Funktionen ähneln durch HTTP ausgelösten Funktionen, implementieren jedoch ein -Protokoll, mit dem sie bequem über Ihren clientseitigen Code aufgerufen werden können.

Weitere Informationen finden Sie unter Funktionen aus Ihrer App aufrufen in der Cloud Functions-Dokumentation. finden Sie weitere Informationen zur Verwendung aufrufbarer Funktionen.

Funktionsdefinition (nur 1. Generation)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});

Ressourcendeklaration (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Geplante Funktionstrigger

Eine geplante Funktion wird basierend auf einem anpassbaren Zeitplan wiederholt ausgeführt.

Weitere Informationen finden Sie in der Cloud Functions-Dokumentation unter Funktionen planen. zum Schreiben geplanter Funktionen.

Funktionsdefinition (nur 1. Generation)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});

Ressourcendeklaration (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...

Dies sind die verfügbaren Unterfelder für scheduleTrigger:

Feld Beschreibung
schedule
(erforderlich)

Die Häufigkeit, mit der die Funktion ausgeführt werden soll.

In diesem Feld sind Strings mit beiden Syntaxen zulässig (einfache Anführungszeichen sind erforderlich):

timeZone
(optional)

Die Zeitzone, in der der Zeitplan ausgeführt wird.

Wenn Sie möchten, dass Nutzer den Zeitplan bei der Installation Erweiterung hinzu, fügen Sie einen neuen Parameter zu Ihrer extension.yaml-Datei hinzu und verweisen Sie auf den -Parameter in der resource-Deklaration der Funktion:

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

Trigger für Aufgabenwarteschlangen

Eine Task-Warteschlangenfunktion wird entweder bei den Lebenszyklusereignissen Ihrer Erweiterung oder dann ausgelöst, wenn sie der Task-Warteschlange Ihrer Erweiterung manuell mit der TaskQueue.enqueue()-Methode des Admin SDK hinzugefügt wird.

Informationen zum Erstellen von Funktionen, die Lebenszyklusereignisse verarbeiten, finden Sie unter Lifecycle-Ereignisse Ihrer Erweiterung verarbeiten.

Siehe Enqueue-Funktionen mit Cloud Tasks in der Cloud Functions für Informationen zum Schreiben von Funktionen für Aufgabenwarteschlangen.

Funktionsdefinition (nur 1. Generation)

import { tasks } from "firebase-functions/v1";

export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});

Ressourcendeklaration (extension.yaml)

resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}

Lege die taskQueueTrigger-Eigenschaft entweder auf {} oder eine Karte mit Optionen fest, die Passen Sie die Ratenbegrenzungen und das Wiederholungsverhalten der Aufgabenwarteschlange an. Weitere Informationen finden Sie unter Aufgaben abstimmen Wiedergabeliste.

Wenn Sie die Funktion für die Lebenszyklus-Ereignisse der Erweiterung auslösen möchten, fügen Sie lifecycleEvents-Datensätze mit dem Namen der Funktion und einem optionalen Verarbeitungsmeldung, die in der Firebase-Konsole angezeigt wird, die Verarbeitung beginnt.

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

Eine von Analytics ausgelöste Funktion wird ausgeführt, wenn ein angegebenes Analytics-Ereignis protokolliert.

Siehe Google Analytics-Trigger in der Cloud Functions-Dokumentation für Informationen zum Schreiben von durch Analytics ausgelösten Funktionen.

Funktionsdefinition (nur 1. Generation)

import { analytics } from "firebase-functions/v1";

export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});

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

Wenn Nutzer das Analytics-Ereignis konfigurieren können sollen, auf das gewartet werden soll, wenn sie Ihre Erweiterung installieren, fügen Sie Ihrer extension.yaml-Datei einen neuen Parameter hinzu und verweisen Sie in der resource-Deklaration Ihrer Funktion darauf:

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

Eine durch Authentifizierung ausgelöste Funktion wird ausgeführt, wenn ein Nutzer erstellt oder gelöscht wird.

Siehe Firebase Authentication-Trigger in der Cloud Functions Dokumentation mit Informationen zum Schreiben von durch Auth ausgelösten Funktionen.

Funktionsdefinition (nur 1. Generation)

import { auth } from "firebase-functions/v1";

export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});

export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});

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

Die folgende Tabelle zeigt, wie die einzelnen unterstützten Authentication-Ereignisse angegeben werden Typen:

Cloud Functions Ereignistrigger eventType Beschreibung
onCreate() providers/firebase.auth/eventTypes/user.create Der neue Nutzer wurde erstellt.
onDelete() providers/firebase.auth/eventTypes/user.delete Nutzer gelöscht

Cloud Firestore

Eine durch Cloud Firestore ausgelöste Funktion wird ausgeführt, wenn ein Dokument erstellt, aktualisiert oder gelöscht wurden.

Informationen zum Schreiben von durch Firestore ausgelösten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Cloud Firestore-Trigger.

Funktionsdefinition (nur 1. Generation)

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.
    // ...
  });

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

Die folgende Tabelle zeigt, wie die einzelnen unterstützten Cloud Firestore angegeben werden Ereignistypen:

Cloud Functions-Ereignistrigger eventType Beschreibung
onCreate() providers/cloud.firestore/eventTypes/document.create Neues Dokument erstellt
onDelete() providers/cloud.firestore/eventTypes/document.delete Dokument gelöscht
onUpdate() providers/cloud.firestore/eventTypes/document.update Dokument aktualisiert
onWrite() providers/cloud.firestore/eventTypes/document.write Dokument erstellt, gelöscht oder aktualisiert

Wenn Sie möchten, dass Nutzer den Dokumentpfad bei der Installation konfigurieren können Erweiterung hinzufügen, fügen Sie der Datei extension.yaml einen neuen Parameter hinzu den Parameter in der resource-Deklaration der Funktion:

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

Eine durch Pub/Sub ausgelöste Funktion wird ausgeführt, wenn eine Nachricht in einem bestimmten Thema veröffentlicht wird.

Weitere Informationen finden Sie in der Cloud Functions-Dokumentation unter Pub/Sub-Trigger für Informationen zum Schreiben von durch Pub/Sub ausgelösten Funktionen.

Funktionsdefinition (nur 1. Generation)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

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

Wenn Sie möchten, dass Nutzer das Thema Pub/Sub konfigurieren können, wenn installiert Ihre Erweiterung. Fügen Sie der Datei extension.yaml einen neuen Parameter hinzu. und verweisen Sie in der resource-Deklaration der Funktion auf den Parameter:

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

Eine von der Realtime Database ausgelöste Funktion wird ausgeführt, wenn ein Pfad erstellt, aktualisiert oder gelöscht wird, der einem bestimmten Muster entspricht.

Siehe Realtime Database-Trigger in der Cloud Functions-Dokumentation finden Sie Informationen zum Schreiben von RTDB-ausgelösten Funktionen.

Funktionsdefinition (nur 1. Generation)

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.
    // ...
  });

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

Die folgende Tabelle zeigt, wie die einzelnen unterstützten Cloud Firestore angegeben werden Ereignistypen:

Cloud Functions-Ereignistrigger eventType Beschreibung
onCreate() providers/google.firebase.database/eventTypes/ref.create Daten erstellt
onDelete() providers/google.firebase.database/eventTypes/ref.delete Daten gelöscht
onUpdate() providers/google.firebase.database/eventTypes/ref.update Daten aktualisiert
onWrite() providers/google.firebase.database/eventTypes/ref.write Daten erstellt, gelöscht oder aktualisiert

Wenn Nutzer den Pfad für die Wiedergabe bei der Installation Ihrer Erweiterung konfigurieren können sollen, fügen Sie Ihrer extension.yaml-Datei einen neuen Parameter hinzu und verweisen Sie in der resource-Deklaration Ihrer Funktion darauf:

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

Eine durch Remote Config ausgelöste Funktion wird ausgeführt, wenn die Parametervorlage eines Projekts aktualisiert.

Informationen zum Erstellen von Remote Config-ausgelösten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Remote Config-Trigger.

Funktionsdefinition (nur 1. Generation)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

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

Eine durch Cloud Storage ausgelöste Funktion wird ausgeführt, wenn ein Objekt erstellt, archiviert oder oder wenn sich die Metadaten ändern.

Informationen zum Schreiben von durch Storage ausgelösten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Cloud Storage-Trigger.

Funktionsdefinition (nur 1. Generation)

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) => {
  // ...
});

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

Die folgende Tabelle zeigt, wie die einzelnen unterstützten Cloud Storage angegeben werden Ereignistypen:

Cloud Functions Ereignistrigger eventType Beschreibung
onFinalize() google.storage.object.finalize Erstellung eines Objekts
onMetadataUpdate() google.storage.object.metadataUpdate Objektmetadaten aktualisiert
onArchive() google.storage.object.archive Objekt wurde archiviert
onDelete() google.storage.object.delete Objekt gelöscht

Wenn Sie möchten, dass Nutzer den Storage-Bucket bei der Installation konfigurieren können Erweiterung hinzufügen, fügen Sie der Datei extension.yaml einen neuen Parameter hinzu den Parameter in der resource-Deklaration der Funktion:

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

Eine von Test Lab ausgelöste Funktion wird ausgeführt, wenn eine Testmatrix ihre Tests abgeschlossen hat.

Siehe Firebase Test Lab-Trigger in der Cloud Functions-Dokumentation finden Sie Informationen zum Schreiben von durch Test Lab ausgelösten Funktionen.

Funktionsdefinition (nur 1. Generation)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

Ressourcendeklaration (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 Trigger für Benachrichtigungen

Eine von Crashlytics ausgelöste Funktion wird ausgeführt, wenn Crashlytics eine Benachrichtigung veröffentlicht.

Siehe Firebase Alerts-Trigger in der Cloud Functions-Dokumentation für Informationen zum Schreiben von durch Benachrichtigungen ausgelösten Funktionen.

Funktionsdefinition (nur 2. Generation)

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) => {
  // ...
});

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

Sie können die folgenden Werte für alerttype verwenden

  • crashlytics.newFatalIssue
  • crashlytics.newNonfatalIssue
  • crashlytics.regression
  • crashlytics.stabilityDigest
  • crashlytics.velocity
  • crashlytics.newAnrIssue

Performance Monitoring Trigger für Benachrichtigungen

Eine Performance Monitoring-ausgelöste Funktion wird ausgeführt, wenn Performance Monitoring eine Benachrichtigung veröffentlicht.

Siehe Firebase Alerts-Trigger in der Cloud Functions-Dokumentation für Informationen zum Schreiben von durch Benachrichtigungen ausgelösten Funktionen.

Funktionsdefinition (nur 2. Generation)

import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";

export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});

Ressourcendeklaration (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 Benachrichtigungstrigger

Eine App Distribution-ausgelöste Funktion wird ausgeführt, wenn App Distribution eine Benachrichtigung veröffentlicht.

Informationen zum Erstellen von durch Benachrichtigungen ausgelösten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Firebase-Benachrichtigungstrigger.

Funktionsdefinition (nur 2. Generation)

import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";

export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});

export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});

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

Sie können die folgenden Werte für alerttype verwenden

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

Trigger für benutzerdefinierte Ereignisse (Eventarc)

Eine durch Eventarc ausgelöste Funktion wird ausgeführt, wenn ein bestimmter Ereignistyp in einem auf bestimmte Kanäle beschränkt.

Weitere Informationen finden Sie unter Benutzerdefinierte Ereignistrigger erstellen und verarbeiten im Cloud Functions. Dokumentation mit Informationen zum Schreiben von durch Eventarc ausgelösten Funktionen.

Sie können auch Ereignisse aus Ihren Erweiterungen veröffentlichen, damit Nutzer die Möglichkeit haben, benutzerdefinierte Logik in Ihre Erweiterung integrieren. Weitere Informationen finden Sie unter Vom Entwickler bereitgestellte benutzerdefinierte Logik in einer Erweiterung.

Funktionsdefinition (nur 2. Generation)

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});

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

Der Kanal muss bereits vorhanden sein, wenn die Erweiterung installiert wird. Wenn Sie beispielsweise benutzerdefinierte Ereignisse aus einer anderen Erweiterung benötigen, mit der der Channel erstellt wird, bitten Sie Ihre Nutzer, diese Erweiterung zuerst zu installieren.

Mit dem obigen Beispiel wird ein Trigger für ein benutzerdefiniertes Ereignis für „Standard“ erstellt. Firebase Kanal in Region us-central1. Du kannst den Kanalnamen und die Region festlegen, mithilfe von Parametern anpassen. Beispiel:


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}