Cloud Functions für eine Erweiterung schreiben

Wenn Sie eine Erweiterung erstellen, schreiben Sie die Logik mit Cloud Functions. Das ist ähnlich wie beim Schreiben einer Funktion, die nur in Ihrem eigenen Projekt verwendet wird. 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 von Cloud Functions finden Sie in der Dokumentation zu Cloud Functions.

1. und 2. Generation Cloud Functions

Firebase unterstützt sowohl Funktionen der 1. Generation als auch Funktionen der 2. GenerationCloud Functions. Für Firebase-Erweiterungen gelten derzeit jedoch einige Einschränkungen hinsichtlich der Generation von Cloud-Funktionen, die Sie mit bestimmten Triggertypen verwenden können. Aus diesem Grund enthalten viele Erweiterungen eine Mischung aus Funktionen der 1. und 2. Generation.

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

Besonderheiten

  • Bei einigen Funktionsdefinitionen müssen Sie Informationen angeben, die auch in der Datei extension.yaml angegeben sind. Cloud Firestore hat beispielsweise die Methode document(), mit der das zu beobachtende Dokumentmuster angegeben wird. Die entsprechende Deklaration in extension.yaml hat ein Feld resource, in dem dasselbe angegeben wird.

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

    Es ist üblich, den konfigurierten Wert unabhängig davon in der Funktionsdefinition anzugeben, um die Dokumentation zu verbessern. Die Beispiele auf dieser Seite folgen diesem Muster.

  • Das Cloud Functions-SDK der 1. Generation enthält die Methode functions.config() und den CLI-Befehl functions:config:set, mit denen Sie parametrisierte Werte in Funktionen der 1. Generation verwenden können. Diese Technik ist in Cloud Functions veraltet und funktioniert in einer Erweiterung überhaupt nicht. Verwenden Sie stattdessen das Modul functions.params (empfohlen) oder process.env.

TypeScript verwenden

In der meisten Dokumentation zur Entwicklung eigener Erweiterungen werden Workflows mit JavaScript für Cloud Functions for Firebase beschrieben. Sie können Ihre Funktionen jedoch stattdessen mit TypeScript schreiben.

Tatsächlich sind alle offiziellen Firebase-Erweiterungen in TypeScript geschrieben. Dort finden Sie einige Best Practices für die Verwendung von TypeScript für Ihre Erweiterung.

Wenn Sie die Funktionen Ihrer Erweiterung in TypeScript schreiben, müssen Sie vor der Installation der Erweiterung Folgendes tun:

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

    Mit dem firebase ext:dev:init-Befehl können Sie TypeScript zum Schreiben Ihrer Funktionen auswählen. Der Befehl stellt Ihnen eine vollständige, installierbare Erweiterung sowie ein Build-Skript zur Verfügung, das Sie mit npm run build ausführen können.

  2. Achten Sie darauf, dass das Feld main in der Datei package.json auf den generierten JavaScript-Code verweist.

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

Unterstützte Funktionstrigger

HTTP-Trigger

Eine HTTP-getriggerte Funktion wird an einem öffentlichen https-Endpunkt bereitgestellt und ausgeführt, wenn auf den Endpunkt zugegriffen wird.

Informationen zum Schreiben von HTTP-getriggerten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Funktionen über HTTP-Anfragen aufrufen.

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 aber ein Protokoll, das den Aufruf über Ihren clientseitigen Code erleichtert.

Informationen zur Verwendung aufrufbarer Funktionen finden Sie in der Cloud Functions-Dokumentation unter Funktionen über Ihre App aufrufen.

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.

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

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

Folgende Unterfelder sind für scheduleTrigger verfügbar:

Feld Beschreibung
schedule
(erforderlich)

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

In diesem Feld können Strings mit beiden Syntaxen verwendet werden (die einfachen Anführungszeichen sind erforderlich):

timeZone
(optional)

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

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

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
Mit

Trigger für Aufgabenwarteschlangen

Eine Task-Warteschlangenfunktion wird entweder bei den Lebenszyklusereignissen Ihrer Erweiterung oder durch manuelles Hinzufügen zur Task-Warteschlange Ihrer Erweiterung mit der TaskQueue.enqueue()-Methode des Admin SDK ausgelöst.

Informationen zum Schreiben von Funktionen, die Lebenszyklusereignisse verarbeiten, finden Sie unter Lebenszyklusereignisse der Erweiterung verarbeiten.

Informationen zum Schreiben von Funktionen für die Aufgabenwarteschlange finden Sie in der Cloud Functions-Dokumentation unter Funktionen mit Cloud Tasks in die Warteschlange stellen.

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: {}

Legen Sie die taskQueueTrigger-Eigenschaft auf {} oder eine Map mit Optionen fest, mit denen die Ratenbeschränkungen und das Wiederholungsverhalten der Aufgabenwarteschlange angepasst werden (siehe Aufgabenwarteschlange optimieren).

Wenn Sie Ihre Funktion bei Lebenszyklusereignissen Ihrer Erweiterung auslösen möchten, fügen Sie lifecycleEvents-Einträge mit dem Namen der Funktion und einer optionalen Verarbeitungsmeldung hinzu, die in der Firebase-Konsole angezeigt wird, wenn 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 durch Analytics ausgelöste Funktion wird ausgeführt, wenn ein bestimmtes Analytics-Ereignis protokolliert wird.

Informationen zum Schreiben von Funktionen, die durch Google Analytics ausgelöst werden, finden Sie in der Cloud Functions-Dokumentation unter Google Analytics-Trigger.

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 auf den Parameter:

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 die Authentifizierung ausgelöste Funktion wird ausgeführt, wenn ein Nutzer erstellt oder gelöscht wird.

Informationen zum Schreiben von Funktionen, die durch die Authentifizierung ausgelöst werden, finden Sie in der Cloud Functions-Dokumentation unter Firebase-Authentifizierungstrigger.

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

In der folgenden Tabelle sehen Sie, wie die einzelnen unterstützten Authentication-Ereignistypen angegeben werden:

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

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

In der folgenden Tabelle sehen Sie, wie Sie die einzelnen unterstützten Cloud Firestore-Ereignistypen angeben:

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 Nutzer den Dokumentpfad bei der Installation Ihrer Erweiterung konfigurieren können sollen, fügen Sie Ihrer Datei extension.yaml einen neuen Parameter hinzu und verweisen Sie in der resource-Deklaration Ihrer Funktion auf den Parameter:

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.

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

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 Nutzer das Thema Pub/Sub 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 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 durch die Realtime Database ausgelöste Funktion wird ausgeführt, wenn ein Pfad, der einem angegebenen Muster entspricht, erstellt, aktualisiert oder gelöscht wird.

Informationen zum Schreiben von Funktionen, die von der RTDB ausgelöst werden, finden Sie in der Cloud Functions-Dokumentation unter Realtime Database-Trigger.

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

In der folgenden Tabelle sehen Sie, wie Sie die einzelnen unterstützten Cloud Firestore-Ereignistypen angeben:

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 werden erstellt, gelöscht oder aktualisiert

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

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

Informationen zum Schreiben von Funktionen, die durch Remote Config ausgelöst werden, 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 gelöscht wird oder wenn sich seine Metadaten ändern.

Informationen zum Schreiben von Funktionen, die durch Storage ausgelöst werden, 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: ...

In der folgenden Tabelle sehen Sie, wie Sie die einzelnen unterstützten Cloud Storage-Ereignistypen angeben:

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 Nutzer den Speicher-Bucket 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 auf den Parameter:

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 durch Test Lab ausgelöste Funktion wird ausgeführt, wenn eine Testmatrix ihre Tests abgeschlossen hat.

Informationen zum Schreiben von Funktionen, die durch Test Lab ausgelöst werden, finden Sie unter Firebase Test Lab-Trigger in der Cloud Functions-Dokumentation.

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 Benachrichtigungstrigger

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

Informationen zum Schreiben von Funktionen, die durch Benachrichtigungen ausgelöst werden, finden Sie in der Cloud Functions-Dokumentation unter Firebase Alerts-Trigger.

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 Benachrichtigungstrigger

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

Informationen zum Schreiben von Funktionen, die durch Benachrichtigungen ausgelöst werden, finden Sie in der Cloud Functions-Dokumentation unter Firebase Alerts-Trigger.

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 durch App Distribution ausgelöste Funktion wird ausgeführt, wenn App Distribution eine Benachrichtigung veröffentlicht.

Informationen zum Schreiben von Funktionen, die durch Benachrichtigungen ausgelöst werden, finden Sie in der Cloud Functions-Dokumentation unter Firebase Alerts-Trigger.

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 bestimmten Kanal veröffentlicht wird.

Informationen zum Schreiben von Eventarc-getriggerten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Benutzerdefinierte Ereignistrigger erstellen und verarbeiten.

Sie können auch Ereignisse aus Ihren Erweiterungen veröffentlichen, damit Nutzer benutzerdefinierte Logik in Ihre Erweiterung einfügen können. Weitere Informationen finden Sie unter Von Entwicklern bereitgestellte benutzerdefinierte Logik in einer Erweiterung verwenden.

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 Channel muss bereits vorhanden sein, wenn Ihre Erweiterung installiert wird. Wenn Sie beispielsweise benutzerdefinierte Ereignisse aus einer anderen Erweiterung benötigen, mit der der Channel erstellt wird, weisen Sie Ihre Nutzer an, diese Erweiterung zuerst zu installieren.

Im obigen Beispiel wird ein Trigger für ein benutzerdefiniertes Ereignis für den Firebase-Standardchannel in der Region us-central1 erstellt. Sie können den Kanalnamen und die Region 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}