Schreiben Sie Cloud Functions für eine Erweiterung

Wenn Sie eine Erweiterung erstellen, schreiben Sie deren Logik mithilfe von Cloud Functions, ähnlich wie Sie eine Funktion schreiben würden, die nur in Ihrem eigenen Projekt verwendet wird. Sie deklarieren Ihre Funktionen in der Datei extension.yaml und wenn Benutzer Ihre Erweiterung installieren, werden diese Funktionen in ihrem Projekt bereitgestellt.

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

Cloud-Funktionen der 1. und 2. Generation

Firebase unterstützt Cloud Functions der ersten und zweiten Generation . Allerdings unterliegen Firebase-Erweiterungen derzeit einigen Einschränkungen hinsichtlich der Generation von Cloud-Funktionen, die Sie mit bestimmten Triggertypen verwenden können. Aus diesem Grund beinhalten viele Erweiterungen einen Mix aus Funktionen der 1. und 2. Generation.

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

Besondere Überlegungen

  • Bei einigen Funktionsdefinitionen müssen Sie Informationen angeben, die auch in der Datei extension.yaml angegeben sind. Cloud Firestore verfügt beispielsweise über eine document() Methode, die das zu überwachende Dokumentmuster angibt, und die entsprechende Deklaration in extension.yaml verfügt über ein resource , das dasselbe angibt.

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

    Aus Dokumentationsgründen ist es üblich, den konfigurierten Wert trotzdem in der Funktionsdefinition anzugeben. Die Beispiele auf dieser Seite folgen diesem Muster.

  • Das Cloud Functions SDK der 1. Generation verfügt über die Methode functions.config() und den CLI-Befehl functions:config:set , mit denen Sie mit parametrisierten Werten in Funktionen der 1. Generation arbeiten 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 .

Verwendung von TypeScript

Der Großteil der Dokumentation zur Entwicklung Ihrer eigenen Erweiterung beschreibt Arbeitsabläufe mit JavaScript für Cloud Functions für Firebase. Sie können Ihre Funktionen jedoch stattdessen auch mit TypeScript schreiben.

Tatsächlich sind alle offiziellen Firebase-Erweiterungen in TypeScript geschrieben. Sie können sich diese Erweiterungen ansehen, um einige Best Practices für die Verwendung von TypeScript für Ihre Erweiterung zu finden.

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

  1. Kompilieren Sie den Funktionsquellcode Ihrer Erweiterung in JavaScript.

    Mit dem firebase ext:dev:init 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. Stellen Sie in Ihrer package.json Datei sicher, dass das main auf das generierte JavaScript verweist.

  3. Wenn Sie Ihre Erweiterung von einer lokalen Quelle installieren oder hochladen, kompilieren Sie zuerst Ihre TypeScript-Dateien.

Unterstützte Funktionsauslöser

HTTP-Trigger

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

Informationen zum Schreiben von HTTP-ausgelösten Funktionen finden Sie unter Aufrufen von Funktionen über HTTP-Anfragen in der Cloud Functions-Dokumentation.

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 HTTP-ausgelösten Funktionen, implementieren jedoch ein Protokoll, das den Aufruf über Ihren clientseitigen Code erleichtert.

Informationen zur Verwendung aufrufbarer Funktionen finden Sie unter Aufrufen von Funktionen aus Ihrer App in der Cloud Functions-Dokumentation.

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 Funktionsauslöser

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

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

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

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

Feld Beschreibung
schedule
(erforderlich)

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

Dieses Feld kann Zeichenfolgen akzeptieren, die eine der beiden Syntaxen verwenden (Einschluss in einfache Anführungszeichen ist erforderlich):

timeZone
(Optional)

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

Wenn Sie möchten, dass Benutzer den Zeitplan bei der Installation Ihrer Erweiterung konfigurieren können, fügen Sie Ihrer Datei extension.yaml einen neuen Parameter hinzu und verweisen Sie auf den Parameter in der resource Ihrer 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

Auslöser der Aufgabenwarteschlange

Eine Aufgabenwarteschlangenfunktion wird entweder bei den Lebenszyklusereignissen Ihrer Erweiterung oder beim manuellen Hinzufügen zur Aufgabenwarteschlange Ihrer Erweiterung mithilfe der TaskQueue.enqueue() Methode des Admin SDK ausgelöst.

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

Informationen zum Schreiben von Aufgabenwarteschlangenfunktionen finden Sie unter „Funktionen mit Cloud Tasks in die Warteschlange stellen“ in der Cloud Functions-Dokumentation.

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

Setzen Sie die Eigenschaft taskQueueTrigger entweder auf {} oder auf eine Optionszuordnung, die die Ratenbegrenzungen und das Wiederholungsverhalten der Aufgabenwarteschlange optimieren (siehe Optimieren der Aufgabenwarteschlange ).

Wenn Sie Ihre Funktion bei den Lebenszyklusereignissen Ihrer Erweiterung auslösen möchten, fügen Sie lifecycleEvents Datensätze 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

Analytik

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

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

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 Sie möchten, dass Benutzer das Analytics-Ereignis konfigurieren können, auf das sie bei der Installation Ihrer Erweiterung warten sollen, fügen Sie Ihrer Datei extension.yaml einen neuen Parameter hinzu und verweisen Sie auf den Parameter in der resource Ihrer Funktion:

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

Authentifizierung

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

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

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 Sie die einzelnen unterstützten Authentifizierungsereignistypen angeben:

Cloud Functions-Ereignisauslöser eventType Beschreibung
onCreate() providers/firebase.auth/eventTypes/user.create Neuer Benutzer erstellt
onDelete() providers/firebase.auth/eventTypes/user.delete Benutzer 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 unter Cloud Firestore-Trigger in der Cloud Functions-Dokumentation.

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 Sie die einzelnen unterstützten Cloud Firestore-Ereignistypen angeben:

Cloud Functions-Ereignisauslöser 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 Benutzer den Dokumentpfad konfigurieren können, wenn sie Ihre Erweiterung installieren, fügen Sie Ihrer Datei extension.yaml einen neuen Parameter hinzu und verweisen Sie auf den Parameter in der resource Ihrer 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 zu einem bestimmten Thema veröffentlicht wird.

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

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 Benutzer das Pub/Sub-Thema bei der Installation Ihrer Erweiterung konfigurieren können, fügen Sie Ihrer Datei extension.yaml einen neuen Parameter hinzu und verweisen Sie auf den Parameter in der resource Ihrer Funktion:

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

Echtzeitdatenbank

Eine durch eine Echtzeitdatenbank ausgelöste Funktion wird ausgeführt, wenn ein Pfad, der einem angegebenen Muster entspricht, erstellt, aktualisiert oder gelöscht wird.

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

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 Sie die einzelnen unterstützten Cloud Firestore-Ereignistypen angeben:

Cloud Functions-Ereignisauslöser 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 Sie möchten, dass Benutzer den Pfad konfigurieren können, der bei der Installation Ihrer Erweiterung überwacht werden soll, fügen Sie Ihrer Datei extension.yaml einen neuen Parameter hinzu und verweisen Sie auf den Parameter in der resource Ihrer Funktion:

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

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

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

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

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 Storage-ausgelösten Funktionen finden Sie unter Cloud Storage-Trigger in der Cloud Functions-Dokumentation.

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 Sie jeden der unterstützten Cloud Storage-Ereignistypen angeben:

Cloud Functions-Ereignisauslöser eventType Beschreibung
onFinalize() google.storage.object.finalize Objekt erstellt
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 Benutzer den Speicher-Bucket konfigurieren können, wenn sie Ihre Erweiterung installieren, fügen Sie Ihrer Datei extension.yaml einen neuen Parameter hinzu und verweisen Sie auf den Parameter in der resource Ihrer 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

Testlabor

Eine vom Testlabor ausgelöste Funktion wird ausgeführt, wenn eine Testmatrix ihre Tests abschließt.

Informationen zum Schreiben von durch Test Lab ausgelösten Funktionen 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-Warnung wird ausgelöst

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

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

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

Auslöser von Leistungsüberwachungswarnungen

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

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

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

Auslöser der App-Verteilungswarnung

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

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

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

Benutzerdefinierte Ereignisauslöser (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-ausgelösten Funktionen finden Sie unter Erstellen und Behandeln von benutzerdefinierten Ereignisauslösern in der Cloud Functions-Dokumentation.

Sie können auch Ereignisse aus Ihren Erweiterungen veröffentlichen , um Benutzern die Möglichkeit zu geben, benutzerdefinierte Logik in Ihre Erweiterung einzufügen. Siehe Vom Entwickler 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 Kanal muss bereits vorhanden sein, wenn Ihre Erweiterung installiert wird. Wenn Sie beispielsweise auf benutzerdefinierte Ereignisse einer anderen Erweiterung angewiesen sind, die den Kanal erstellt, weisen Sie Ihre Benutzer an, diese Erweiterung zuerst zu installieren.

Das obige Beispiel würde einen benutzerdefinierten Ereignisauslöser für den „Standard“-Firebase-Kanal in der Region us-central1 erstellen. Sie können den Kanalnamen und die Region mithilfe von Parametern anpassbar machen. Zum 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}