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 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. Jednak rozszerzenia Firebase mają obecnie pewne ograniczenia dotyczące tego, którego generowania funkcji w chmurze można używać z określonymi typami aktywatorów. 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 określonych również 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
ma 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.Powszechną praktyką jest określenie skonfigurowanego wartości w definicji funkcji niezależnie od tego ze względu na dokumentację. Przykłady na tej stronie są zgodne z tym wzorcem.
Pakiet SDK Cloud Functions 1 generacji zawiera metodę
functions.config()
i polecenie interfejsu wiersza poleceńfunctions:config:set
, których można używać do pracy z wartościami sparametryzowanymi w funkcjach 1 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 związane z użyciem JavaScriptu na potrzeby 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 się z nimi zapoznać i sprawdzić, jak stosować w nich język TypeScript.
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ą narzędzianpm run build
.W pliku
package.json
umieść polemain
w wygenerowanym kodzie JavaScript.Jeśli instalujesz lub przesyłasz rozszerzenie ze ź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.
Informacje o tworzeniu funkcji wywoływanych przez HTTP znajdziesz w sekcji Wywoływanie funkcji przez żądania 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 harmonogramem, który można dostosować.
Informacje o tworzeniu funkcji zaplanowanych znajdziesz w artykule Funkcje planowania w dokumentacji Cloud Functions.
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 dla scheduleTrigger
:
Pole | Opis |
---|---|
schedule (wymagane) |
Częstotliwość, z jaką funkcja ma być wykonywana. To pole może akceptować ciągi tekstowe używane w dowolnej składni (wymagane jest umieszczenie cudzysłowów pojedynczych):
|
timeZone (opcjonalnie) |
Strefa czasowa, w której będzie działać harmonogram.
|
Jeśli chcesz, aby użytkownicy mogli konfigurować harmonogram 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:
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: Umieszczanie funkcji w kolejce za pomocą 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 (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
Ustaw właściwość taskQueueTrigger
na {}
lub mapę opcji, które dostrajają limity szybkości i ponowne działanie kolejki zadań (patrz Dostrajanie kolejki zadań).
Jeśli chcesz, aby funkcja była wywoływana w reakcji na zdarzenia 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.
Informacje o tworzeniu funkcji wywoływanych przez Analytics znajdziesz w artykule o regułach Google Analytics w dokumentacji Cloud Functions.
Definicja funkcji (tylko 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 podczas instalacji 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/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 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 (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 reguła zdarzenia | 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 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 zdarzenia | 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 konfigurować ścieżkę dokumentu podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołaj się do niego w deklaracji resource
swojej funkcji:
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 aktywowanych przez Pub/Sub znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji Pub/Sub.
Definicja funkcji (tylko 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 czasu rzeczywistego jest uruchamiana, gdy ścieżka pasująca do określonego wzorca zostanie utworzona, zaktualizowana lub usunięta.
Informacje o tworzeniu funkcji wywoływanych przez bazy danych czasu rzeczywistego znajdziesz w sekcji Aktywatory bazy danych czasu rzeczywistego 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 zdarzenia | eventType |
Opis |
---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Data utworzenia |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
Dane zostały usunięte |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
Dane zostały zaktualizowane |
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 wywoływana przez Cloud Storage jest wykonywana, gdy tworzysz, archiwizujesz lub usuwasz obiekt albo gdy zmieniają się jego metadane.
Informacje o tworzeniu funkcji aktywowanych przez Cloud Storage znajdziesz w sekcji Aktywatory Cloud Storage w dokumentacji Cloud Functions.
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 zdarzenia | eventType |
Opis |
---|---|---|
onFinalize() |
google.storage.object.finalize |
Obiekt został utworzony |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
Metadane obiektu zostały zaktualizowane |
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 (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 aktywatora alertów
Funkcja wywoływana przez Crashlytics jest wykonywana, gdy Crashlytics publikuje alert.
Informacje o tworzeniu funkcji wywoływanych przez alerty znajdziesz w sekcji Reguły alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (dotyczy tylko funkcji 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 (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 wyzwalana przez Performance Monitoring jest uruchamiana po opublikowaniu alertu Performance Monitoring.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji alertów Firebase.
Definicja funkcji (dotyczy tylko funkcji 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 dokumentacji Cloud Functions dotyczącej aktywacji alertów Firebase.
Definicja funkcji (dotyczy tylko funkcji 2 generacji)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Deklaracja zasobu (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 zostanie opublikowany w konkretnym kanale.
Więcej informacji o pisaniu funkcji wywoływanych przez zdarzenia Eventarc znajdziesz w dokumentacji Cloud Functions Tworzenie i obsługa 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ć w chwili zainstalowania rozszerzenia. 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}