Wenn Sie eine Erweiterung erstellen, schreiben Sie die Logik mit 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
. Wenn Nutzer Ihre Erweiterung installieren, werden diese Funktionen in ihrem Projekt bereitgestellt.
Allgemeine Informationen zur Verwendung von Cloud Functions finden Sie in der Cloud Functions-Dokumentation.
1. und 2. Generation Cloud Functions
Firebase unterstützt sowohl Cloud Functions der 1. als auch der 2. Generation. Bei Firebase-Erweiterungen gelten derzeit jedoch einige Einschränkungen im Hinblick darauf, welche Generation von Cloud Functions-Funktionen Sie mit bestimmten Triggertypen verwenden können. Aus diesem Grund enthalten viele Erweiterungen eine Mischung aus Funktionen der 1. und 2. Generation.
Unten finden Sie Informationen zur Unterstützung der Funktionsgenerierung für jeden Triggertyp.
Besondere Hinweise
Für einige Funktionsdefinitionen müssen Sie Informationen angeben, die auch in der Datei
extension.yaml
angegeben sind. Cloud Firestore hat beispielsweise einedocument()
-Methode, mit der das zu überwachende Dokumentmuster angegeben wird. Die entsprechende Deklaration inextension.yaml
enthält einresource
-Feld, das dasselbe angibt.In diesen Fällen wird die in der Datei
extension.yaml
angegebene Konfiguration verwendet und die in der Funktionsdefinition angegebene Konfiguration wird ignoriert.Aus Dokumentationsgründen ist es üblich, den konfigurierten Wert in der Funktionsdefinition anzugeben. Die Beispiele auf dieser Seite folgen diesem Muster.
Das Cloud Functions SDK der 1. Generation bietet die Methode
functions.config()
und den Befehlfunctions:config:set
, mit denen Sie mit parametrisierten Werten in Funktionen der 1. Generation arbeiten können. Diese Methode ist in Cloud Functions veraltet und funktioniert in einer Erweiterung gar nicht. Verwenden Sie stattdessen das Modulfunctions.params
(empfohlen) oderprocess.env
.
TypeScript verwenden
In den meisten Dokumentationen 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. In diesen Erweiterungen finden Sie einige Best Practices für die Verwendung von TypeScript.
Wenn Sie die Funktionen Ihrer Erweiterung in TypeScript schreiben, müssen Sie vor der Installation der Erweiterung Folgendes tun:
Kompilieren Sie den Quellcode der Funktionen Ihrer Erweiterung in JavaScript.
Mit dem Befehl
firebase ext:dev:init
können Sie TypeScript zum Schreiben Ihrer Funktionen auswählen. Der Befehl liefert eine vollständige, installierbare Erweiterung sowie ein Build-Script, das Sie mitnpm run build
ausführen können.Achten Sie darauf, dass in der Datei
package.json
das Feldmain
auf das generierte JavaScript verweist.Wenn Sie Ihre Erweiterung aus einer lokalen Quelle installieren oder hochladen, kompilieren Sie zuerst Ihre TypeScript-Dateien.
Unterstützte Funktionstrigger
HTTP-Trigger
Eine HTTP-ausgelöste Funktion wird auf einem öffentlichen https
-Endpunkt bereitgestellt und ausgeführt, wenn auf den Endpunkt zugegriffen wird.
Weitere Informationen zum Schreiben von HTTP-ausgelösten 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 HTTP-ausgelösten Funktionen, implementieren aber ein Protokoll, das sie über clientseitigen Code bequem aufrufen lässt.
Informationen zur Verwendung aufrufbarer Funktionen finden Sie in der Cloud Functions-Dokumentation unter Funktionen über mobile Apps 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. Dieses Feld kann Strings akzeptieren, die eine der beiden Syntaxen verwenden (das Umschließen in einfache Anführungszeichen ist erforderlich):
|
timeZone (optional) |
Die Zeitzone, in der der Zeitplan ausgeführt wird.
|
Wenn Sie möchten, dass Nutzer den Zeitplan bei der Installation der Erweiterung selbst konfigurieren können, fügen Sie der Datei extension.yaml
einen neuen Parameter hinzu und verweisen Sie in der Deklaration resource
der Funktion auf diesen 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
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 Schreiben von Funktionen, die Lebenszyklusereignisse verarbeiten, finden Sie unter Lebenszyklusereignisse einer Erweiterung verarbeiten.
Informationen zum Schreiben von Funktionen für Aufgabenwarteschlangen 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
-Eigenschaftsgruppe entweder auf {}
oder auf eine Zuordnung von Optionen fest, mit denen die Ratenlimits und das Wiederholungsverhalten der Aufgabenwarteschlange optimiert 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 von 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 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 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 authentifizierte Funktion wird ausgeführt, wenn ein Nutzer erstellt oder gelöscht wird.
Informationen zum Erstellen von authentifizierten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Firebase Authentication triggers.
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 wird beschrieben, 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 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 wird beschrieben, wie die einzelnen unterstützten Cloud Firestore-Ereignistypen angegeben werden:
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 wurde erstellt, gelöscht oder aktualisiert |
Wenn Nutzer den Dokumentpfad 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/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 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 Pub/Sub-Thema 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: 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.
Informationen zum Schreiben von RTDB-ausgelösten Funktionen finden Sie unter Realtime Database-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: ...
In der folgenden Tabelle wird beschrieben, wie die einzelnen unterstützten Cloud Firestore-Ereignistypen angegeben werden:
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 |
Erstellte, gelöschte oder aktualisierte Daten |
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 Remote Config-ausgelöste Funktion wird ausgeführt, wenn die Parametervorlage eines Projekts aktualisiert wird.
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 gelöscht wird oder wenn sich seine Metadaten ändern.
Informationen zum Schreiben von Cloud Storage-Trigger-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: ...
In der folgenden Tabelle wird beschrieben, wie die einzelnen unterstützten Cloud Storage-Ereignistypen angegeben werden:
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 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: 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 die Tests einer Testmatrix abgeschlossen sind.
Informationen zum Erstellen von Test Lab-ausgelösten Funktionen finden Sie in der Cloud Functions-Dokumentation unter Firebase Test Lab-Trigger.
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 von Crashlytics ausgelöste Funktion wird ausgeführt, wenn Crashlytics 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 {
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 Performance Monitoring-ausgelöste Funktion wird ausgeführt, wenn Performance Monitoring 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 { 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 Trigger für Benachrichtigungen
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
Benutzerdefinierte Ereignistrigger (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 durch Eventarc ausgelösten 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 die Erweiterung installiert wird. Wenn Sie beispielsweise auf benutzerdefinierte Ereignisse von einer anderen Erweiterung angewiesen sind, die den Kanal erstellt, weisen Sie Ihre Nutzer an, zuerst diese Erweiterung zu installieren.
Das obige Beispiel würde einen benutzerdefinierten Ereignistrigger für den Firebase-Kanal „Standard“ in der Region us-central1
erstellen. Mithilfe von Parametern können Sie den Kanalnamen und die Region anpassbar machen. 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}