Podczas tworzenia rozszerzenia logikę piszesz za pomocą Cloud Functions, podobnie jak funkcję, która będzie używana tylko w Twoim projekcie. Funkcje deklarujesz w pliku extension.yaml
, a gdy użytkownicy zainstalują rozszerzenie, zostaną one wdrożone do ich projektu.
Ogólne informacje o używaniu usługi Cloud Functions znajdziesz w dokumentacji Cloud Functions.
Pierwsza i druga generacja Cloud Functions
Firebase obsługuje zarówno urządzenia pierwszej, jak i drugiej generacjiCloud Functions. Rozszerzenia Firebase mają jednak obecnie pewne ograniczenia dotyczące generacji funkcji w chmurze, których można używać z określonymi typami reguł. Z tego powodu wiele rozszerzeń zawiera funkcje 1 i 2 generacji.
Poniżej znajdziesz informacje o obsługiwanych funkcjach w przypadku poszczególnych typów reguł.
Uwagi specjalne
Niektóre definicje funkcji wymagają podania informacji, które są również określone w pliku
extension.yaml
. Na przykład Cloud Firestore ma metodędocument()
, która określa wzór dokumentu do obserwowania, a odpowiadająca jej deklaracja w funkcjiextension.yaml
zawiera poleresource
, które określa to samo.W takich sytuacjach używana jest konfiguracja określona w pliku
extension.yaml
, a konfiguracja określona w definicji funkcji jest ignorowana.Zwyczajoną praktyką jest jednak podawanie skonfigurowanej wartości w definicji funkcji ze względu na dokumentację. Przykłady na tej stronie są zgodne z tym wzorcem.
Pakiet SDK Cloud Functions pierwszej generacji zawiera metodę
functions.config()
i polecenie CLIfunctions:config:set
, których można używać do pracy z wartościami parametrycznymi w funkcjach pierwszej generacji. Ta technika jest wycofana w Cloud Functions i w ogóle nie będzie działać w rozszerzeniu. Zamiast tego użyj modułufunctions.params
(zalecany) lubprocess.env
.
Korzystanie z TypeScript
Większość dokumentacji dotyczącej tworzenia własnych rozszerzeń opisuje przepływy pracy korzystające z JavaScriptu w przypadku Cloud Functions for Firebase. Możesz jednak zamiast tego napisać swoje funkcje za pomocą TypeScript.
W zasadzie wszystkie oficjalne Firebaserozszerzenia są napisane w TypeScript. Możesz je przejrzeć, aby poznać sprawdzone metody korzystania z TypeScript w rozszerzeniu.
Jeśli funkcje rozszerzenia są napisane w języku TypeScript, przed zainstalowaniem rozszerzenia musisz wykonać te czynności:
Skompiluj kod źródłowy funkcji rozszerzenia na kod JavaScript.
Polecenie
firebase ext:dev:init
pozwala wybrać TypeScript do pisania funkcji. Ten polecenie umożliwia stworzenie kompletnego, instalowanego rozszerzenia oraz skryptu kompilacji, który możesz uruchomić za pomocąnpm run build
.W pliku
package.json
ustaw polemain
tak, aby wskazywało na wygenerowany kod JavaScript.Jeśli instalujesz lub przesyłasz rozszerzenie z źródła lokalnego, najpierw skompiluj pliki TypeScript.
Obsługiwane funkcje aktywatora
Aktywatory HTTP
Funkcja wywoływana przez HTTP jest wdrażana w publicznym punkcie końcowym https
i wykonywana, gdy nastąpi dostęp do tego punktu końcowego.
Aby dowiedzieć się więcej o pisaniu funkcji aktywowanych przez HTTP, zapoznaj się z artykułem Wywoływanie funkcji za pomocą żądań HTTP w dokumentacji Cloud Functions.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Deklaracja zasobu (plik extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Funkcje wywoływane
Funkcje wywoływane są podobne do funkcji wywoływanych przez HTTP, ale implementują protokół, który ułatwia ich wywoływanie z kodu po stronie klienta.
Informacje o używaniu funkcji wywoływalnych znajdziesz w dokumentacji Cloud Functions w sekcji Wywoływanie funkcji z aplikacji.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Deklaracja zasobu (plik extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Zaplanowane aktywatory funkcji
Funkcja zaplanowana jest uruchamiana wielokrotnie zgodnie z dostosowywanym harmonogramem.
Informacje o tworzeniu zaplanowanych funkcji znajdziesz w dokumentacji Cloud Functions (sekcja Planowanie funkcji).
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Deklaracja zasobu (plik extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
Oto dostępne pola podrzędne w przypadku pola scheduleTrigger
:
Pole | Opis |
---|---|
schedule (wymagane) |
Częstotliwość, z jaką funkcja ma być wykonywana. W tym polu można używać ciągów znaków w różnych składniach (wymagane jest otaczanie cudzysłowem):
|
timeZone (opcjonalnie) |
Strefa czasowa, w której będzie działać harmonogram.
|
Jeśli chcesz, aby użytkownicy mogli skonfigurować harmonogram podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołaj się do niego w deklaracji funkcji resource
:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: ${SCHEDULE_FREQUENCY}
- name: anotherFunction
type: ...
params:
- param: SCHEDULE_FREQUENCY
label: Schedule
description: How often do you want to run yourFunctionName()?
type: string
default: 'every 5 minutes' # Specifying a default is optional.
required: true
Aktywatory kolejki zadań
Funkcja kolejki zadań jest wywoływana w wydarzeniach cyklu życia rozszerzenia lub gdy zostanie ręcznie dodana do kolejki zadań rozszerzenia za pomocą metodyTaskQueue.enqueue()
w administracyjnym interfejsie programistycznym (SDK).
Więcej informacji o pisaniu funkcji obsługujących zdarzenia cyklu życia rozszerzenia znajdziesz w artykule Obsługa zdarzeń cyklu życia rozszerzenia.
Informacje o tworzeniu funkcji kolejki zadań znajdziesz w dokumentacji Cloud Functions Enqueue functions with Cloud Tasks (Funkcje kolejk zadań z Cloud Tasks).
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Deklaracja zasobu (plik extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
Ustaw zbiór właściwości taskQueueTrigger
na {}
lub mapę opcji, które dostosowują limity szybkości i zachowanie prób ponownego wykonania kolejki zadań (patrz Dostosowanie kolejki zadań).
Jeśli chcesz, aby funkcja była wywoływana w ramach zdarzeń cyklu życia rozszerzenia, dodaj rekordy lifecycleEvents
z nazwą funkcji i opcjonalną wiadomością przetwarzania, która będzie wyświetlana w konsoli Firebase po rozpoczęciu przetwarzania.
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
Funkcja wywoływana przez Analytics jest wykonywana, gdy zostanie zarejestrowane określone zdarzenie Analytics.
Więcej informacji o pisaniu funkcji wywoływanych przez zdarzenia Google Analytics znajdziesz w dokumentacji Cloud Functions.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Deklaracja zasobu (plik 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: ...
Jeśli chcesz, aby użytkownicy mogli skonfigurować zdarzenie Analytics do nasłuchiwania, gdy instalują Twoje rozszerzenie, dodaj do pliku extension.yaml
nowy parametr i odwołaj się do niego w deklaracji funkcji resource
:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
- name: anotherFunction
type: ...
params:
- param: EVENT_NAME
label: Analytics event
description: What event do you want to respond to?
type: string
default: ga_event # Specifying a default is optional.
required: true
Authentication
Funkcja wywoływana przez uwierzytelnianie działa, gdy tworzysz lub usuwasz użytkownika.
Informacje o pisaniu funkcji wywoływanych przez mechanizm uwierzytelniania znajdziesz w dokumentacji Cloud Functions dotyczącej reguł Uwierzytelniania Firebase.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Deklaracja zasobu (plik 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: ...
W tabeli poniżej znajdziesz informacje o sposobie określania poszczególnych obsługiwanych typów zdarzeń Authentication:
Cloud Functions aktywatorów zdarzeń | eventType |
Opis |
---|---|---|
onCreate() |
providers/firebase.auth/eventTypes/user.create |
Utworzono nowego użytkownika |
onDelete() |
providers/firebase.auth/eventTypes/user.delete |
Użytkownik został usunięty |
Cloud Firestore
Funkcja aktywowana przez Cloud Firestore jest wykonywana, gdy dokument zostanie utworzony, zaktualizowany lub usunięty.
Więcej informacji o tworzeniu funkcji aktywowanych przez Firestore znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji za pomocą Cloud Firestore.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
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.
// ...
});
Deklaracja zasobu (plik 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: ...
W tabeli poniżej znajdziesz opis sposobu określania poszczególnych obsługiwanych typów zdarzeń Cloud Firestore:
Cloud Functions aktywatorów zdarzeń | eventType |
Opis |
---|---|---|
onCreate() |
providers/cloud.firestore/eventTypes/document.create |
Utworzono nowy dokument |
onDelete() |
providers/cloud.firestore/eventTypes/document.delete |
Dokument został usunięty |
onUpdate() |
providers/cloud.firestore/eventTypes/document.update |
Dokument został zaktualizowany |
onWrite() |
providers/cloud.firestore/eventTypes/document.write |
Dokument został utworzony, usunięty lub zmodyfikowany. |
Jeśli chcesz, aby użytkownicy mogli skonfigurować ścieżkę dokumentu podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołuj się do niego w deklaracji funkcji resource
:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
- name: anotherFunction
type: ...
params:
- param: YOUR_DOCUMENT_PATH
label: Cloud Firestore path
description: Where do you want to watch for changes?
type: string
default: path/to/{documentID} # Specifying a default is optional.
required: true
Pub/Sub
Funkcja aktywowana przez Pub/Sub jest wykonywana, gdy wiadomość zostanie opublikowana w określonym temacie.
Informacje o pisaniu funkcji wywoływanych przez Pub/Sub znajdziesz w dokumentacji Pub/Sub (Cloud Functions).
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Deklaracja zasobu (plik 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: ...
Jeśli chcesz, aby użytkownicy mogli skonfigurować temat Pub/Sub podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołaj się do niego w deklaracji funkcji resource
:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
- name: anotherFunction
type: ...
params:
- param: PUBSUB_TOPIC
label: Pub/Sub topic
description: Which Pub/Sub topic do you want to watch for messages?
type: string
default: topic-name # Specifying a default is optional.
required: true
Realtime Database
Funkcja wywoływana przez bazę danych w czasie rzeczywistym jest wykonywana, gdy ścieżka pasująca do określonego wzorca zostanie utworzona, zaktualizowana lub usunięta.
Informacje o pisaniu funkcji wywoływanych przez bazodanowe aktywatory RTDB znajdziesz w dokumentacji Cloud Functions.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
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.
// ...
});
Deklaracja zasobu (plik 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: ...
W tabeli poniżej znajdziesz opis sposobu określania poszczególnych obsługiwanych typów zdarzeń Cloud Firestore:
Cloud Functions aktywatorów zdarzeń | eventType |
Opis |
---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Data utworzenia |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
Usunięto dane |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
Data aktualizacji |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
dane utworzone, usunięte lub zaktualizowane; |
Jeśli chcesz, aby użytkownicy mogli skonfigurować ścieżkę do obserwowania podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołaj się do niego w deklaracji resource
funkcji:
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
Funkcja wywoływana przez Zdalną konfigurację jest wykonywana, gdy szablon parametrów projektu zostanie zaktualizowany.
Więcej informacji o tworzeniu funkcji wywoływanych przez Zdalną konfigurację znajdziesz w dokumentacji Cloud Functions (sekcja Remote Config triggers).
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Deklaracja zasobu (plik 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
Funkcja aktywowana przez Cloud Storage jest wykonywana, gdy obiekt jest tworzony, archiwizowany lub usuwany albo gdy zmieniają się jego metadane.
Więcej informacji o pisaniu funkcji aktywowanych przez Cloud Storage znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji Cloud Storage.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
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) => {
// ...
});
Deklaracja zasobu (plik 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: ...
W tabeli poniżej znajdziesz opis sposobu określania poszczególnych obsługiwanych typów zdarzeń Cloud Storage:
Cloud Functions aktywatorów zdarzeń | eventType |
Opis |
---|---|---|
onFinalize() |
google.storage.object.finalize |
Obiekt został utworzony |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
Zaktualizowano metadane obiektu |
onArchive() |
google.storage.object.archive |
Obiekt został zarchiwizowany |
onDelete() |
google.storage.object.delete |
Obiekt został usunięty |
Jeśli chcesz, aby użytkownicy mogli skonfigurować zasobnik pamięci podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołaj się do niego w deklaracji funkcji resource
:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
resource: projects/_/buckets/${YOUR_BUCKET}
- name: anotherFunction
type: ...
params:
- param: YOUR_BUCKET
label: Cloud Storage bucket
description: Which bucket do you want to watch for changes?
type: selectResource
resourceType: storage.googleapis.com/Bucket
default: ${STORAGE_BUCKET} # Specifying a default is optional.
required: true
Test Lab
Funkcja wywoływana przez Laboratorium Firebase jest wykonywana, gdy zestaw testów zakończy testy.
Informacje o pisaniu funkcji wywoływanych przez Laboratorium Firebase znajdziesz w dokumentacji Cloud Functions.
Definicja funkcji (tylko w przypadku funkcji 1 generacji)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Deklaracja zasobu (plik 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 reguł alertów
Funkcja wywoływana przez Crashlytics jest wykonywana, gdy Crashlytics publikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Firebase Alerts triggers w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacji)
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) => {
// ...
});
Deklaracja zasobu (plik 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: ...
W przypadku wartości alerttype
możesz użyć tych wartości:
crashlytics.newFatalIssue
crashlytics.newNonfatalIssue
crashlytics.regression
crashlytics.stabilityDigest
crashlytics.velocity
crashlytics.newAnrIssue
Performance Monitoring reguł alertów
Funkcja wywoływana przez Performance Monitoring działa, gdy Performance Monitoring publikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Firebase Alerts triggers w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacji)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Deklaracja zasobu (plik 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 reguł alertów
Funkcja wywoływana przez App Distribution działa, gdy App Distribution publikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Firebase Alerts triggers w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacji)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Deklaracja zasobu (plik 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: ...
W przypadku wartości alerttype
możesz użyć tych wartości:
appDistribution.newTesterIosDevice
appDistribution.inAppFeedback
Niestandardowe aktywatory zdarzeń (Eventarc)
Funkcja wywoływana przez Eventarc jest wykonywana, gdy określony typ zdarzenia jest publikowany w konkretnym kanale.
Więcej informacji o pisaniu funkcji wywoływanych przez Eventarc znajdziesz w dokumentacji Cloud Functions na temat tworzenia i obsługiwania niestandardowych aktywatorów zdarzeń.
Możesz też publikować zdarzenia z rozszerzeń, aby umożliwić użytkownikom wstawianie niestandardowej logiki do rozszerzenia. Zapoznaj się z artykułem Używanie logiki niestandardowej udostępnionej przez dewelopera w rozszerzeniu.
Definicja funkcji (tylko 2 generacji)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Deklaracja zasobu (plik 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: ...
Kanał musi już istnieć, gdy zainstalujesz rozszerzenie. Jeśli na przykład zależy Ci na zdarzeniach niestandardowych z innego rozszerzenia, które tworzy kanał, poproś użytkowników, aby najpierw zainstalowali to rozszerzenie.
W tym przykładzie reguła niestandardowa zostałaby utworzona dla kanału Firebase „domyślny” w regionie us-central1
. Za pomocą parametrów możesz dostosować nazwę kanału i region. Przykład:
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}