Tworząc rozszerzenie, piszesz jego logikę za pomocą Cloud Functions, w podobny sposób, w jaki piszesz funkcję, która będzie używana tylko w Twoim własnym projekcie. Deklarujesz swoje funkcje w pliku extension.yaml
, a gdy użytkownicy instalują Twoje rozszerzenie, funkcje te zostaną wdrożone w ich projekcie.
Ogólne informacje na temat korzystania z Cloud Functions znajdziesz w dokumentacji Cloud Functions.
Funkcje chmurowe pierwszej i drugiej generacji
Firebase obsługuje funkcje chmurowe zarówno pierwszej, jak i drugiej generacji . Jednak rozszerzenia Firebase mają obecnie pewne ograniczenia dotyczące generowania funkcji chmury, których można używać z określonymi typami wyzwalaczy. Z tego powodu wiele rozszerzeń zawiera kombinację funkcji pierwszej i drugiej generacji.
Poniżej opisano obsługę generowania funkcji dla każdego typu wyzwalacza.
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 wzorzec dokumentu do obejrzenia, a odpowiadająca jej deklaracja wextension.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.Powszechną praktyką jest określanie skonfigurowanej wartości w definicji funkcji niezależnie od tego, dla celów dokumentacji. Przykłady na tej stronie są zgodne z tym wzorcem.
Pakiet SDK Cloud Functions pierwszej generacji zawiera metodęfunctions.config
functions.config()
i poleceniefunctions:config:set
CLI, których można używać do pracy ze sparametryzowanymi wartościami w funkcjach pierwszej generacji. Ta technika jest przestarzała w Cloud Functions i nie będzie w ogóle działać w rozszerzeniu. Zamiast tego użyjfunctions.params
(zalecane) lubprocess.env
.
Korzystanie z TypeScriptu
Większość dokumentacji dotyczącej tworzenia własnego rozszerzenia opisuje przepływy pracy przy użyciu JavaScript dla Cloud Functions dla Firebase. Zamiast tego możesz jednak pisać funkcje za pomocą TypeScript.
W rzeczywistości wszystkie oficjalne rozszerzenia Firebase są napisane w TypeScript. Możesz przejrzeć te rozszerzenia, aby poznać najlepsze praktyki używania TypeScriptu w swoim rozszerzeniu.
Jeśli napiszesz funkcje rozszerzenia w TypeScript, przed zainstalowaniem rozszerzenia musisz wykonać następujące czynności:
Skompiluj kod źródłowy funkcji rozszerzenia do JavaScript.
Polecenie
firebase ext:dev:init
pozwala wybrać TypeScript do pisania funkcji. Polecenie zapewnia kompletne rozszerzenie do zainstalowania , a także skrypt kompilacji, który można uruchomić za pomocąnpm run build
.W pliku
package.json
pamiętaj o wskazaniumain
pola na wygenerowany kod JavaScript.Jeśli instalujesz lub przesyłasz rozszerzenie z lokalnego źródła, najpierw skompiluj pliki TypeScript.
Obsługiwane wyzwalacze funkcji
Wyzwalacze HTTP
Funkcja wyzwalana przez protokół HTTP jest wdrażana w publicznym punkcie końcowym https
i uruchamiana po uzyskaniu dostępu do punktu końcowego.
Informacje na temat pisania funkcji wyzwalanych przez HTTP można znaleźć w artykule Wywoływanie funkcji za pośrednictwem żądań HTTP w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1. generacja)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Deklaracja zasobu (rozszerzenie.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Funkcje wywoływalne
Funkcje wywoływalne są podobne do funkcji wyzwalanych przez HTTP, ale implementują protokół, który ułatwia ich wywoływanie z kodu po stronie klienta.
Zobacz Funkcje wywoływania z aplikacji w dokumentacji Cloud Functions, aby uzyskać informacje na temat korzystania z funkcji wywoływalnych.
Definicja funkcji (tylko 1. generacja)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Zaplanowane wyzwalacze funkcji
Zaplanowana funkcja jest uruchamiana wielokrotnie w oparciu o konfigurowalny harmonogram.
Aby uzyskać informacje na temat pisania zaplanowanych funkcji, zobacz Funkcje planowania w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1. generacja)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
Oto dostępne podpola scheduleTrigger
:
Pole | Opis |
---|---|
schedule (wymagany) | Częstotliwość, z jaką funkcja ma działać. W tym polu można akceptować ciągi znaków o dowolnej składni (wymagane jest zawijanie w apostrofy ):
|
timeZone (opcjonalny) | Strefa czasowa, w której będzie uruchamiany 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
Wyzwalacze kolejki zadań
Funkcja kolejki zadań jest wyzwalana w wyniku zdarzeń cyklu życia rozszerzenia lub po ręcznym dodaniu do kolejki zadań rozszerzenia za pomocą metody TaskQueue.enqueue()
pakietu Admin SDK.
Zobacz Obsługa zdarzeń cyklu życia rozszerzenia , aby uzyskać informacje na temat pisania funkcji obsługujących zdarzenia cyklu życia.
Informacje na temat pisania funkcji kolejki zadań można znaleźć w sekcji Funkcje umieszczania w kolejce za pomocą zadań Cloud Tasks w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1. generacja)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.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 dostosowują limity szybkości i zachowanie kolejki zadań ponawiania (patrz Dostrajanie kolejki zadań ).
Jeśli chcesz uruchomić swoją funkcję na podstawie zdarzeń cyklu życia rozszerzenia, dodaj rekordy lifecycleEvents
z nazwą funkcji i opcjonalnym komunikatem dotyczącym przetwarzania, który będzie wyświetlany 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
Analityka
Funkcja uruchamiana przez Analytics jest uruchamiana po zarejestrowaniu określonego zdarzenia Analytics.
Informacje na temat pisania funkcji wyzwalanych przez Analytics znajdziesz w dokumentacji funkcji Cloud Functions dotyczącej wyzwalaczy Google Analytics.
Definicja funkcji (tylko 1. generacja)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.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, które będzie nasłuchiwane podczas instalowania Twojego 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.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
Uwierzytelnianie
Funkcja wyzwalana uwierzytelnianiem jest uruchamiana podczas tworzenia lub usuwania użytkownika.
Zobacz wyzwalacze uwierzytelniania Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych uwierzytelnianiem.
Definicja funkcji (tylko 1. generacja)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.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 poniższej tabeli pokazano, jak określić każdy z obsługiwanych typów zdarzeń uwierzytelniania:
Wyzwalacz zdarzenia Cloud Functions | eventType | Opis |
---|---|---|
onCreate() | providers/firebase.auth/eventTypes/user.create | Utworzono nowego użytkownika |
onDelete() | providers/firebase.auth/eventTypes/user.delete | Użytkownik usunięty |
Chmura Firestore
Funkcja wyzwalana przez Cloud Firestore jest uruchamiana po utworzeniu, zaktualizowaniu lub usunięciu dokumentu.
Zobacz wyzwalacze Cloud Firestore w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez Firestore.
Definicja funkcji (tylko 1. generacja)
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 (rozszerzenie.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: ...
Poniższa tabela pokazuje, jak określić każdy z obsługiwanych typów zdarzeń Cloud Firestore:
Wyzwalacz zdarzenia Cloud Functions | eventType | Opis |
---|---|---|
onCreate() | providers/cloud.firestore/eventTypes/document.create | Utworzono nowy dokument |
onDelete() | providers/cloud.firestore/eventTypes/document.delete | Dokument usunięty |
onUpdate() | providers/cloud.firestore/eventTypes/document.update | Dokument zaktualizowany |
onWrite() | providers/cloud.firestore/eventTypes/document.write | Dokument został utworzony, usunięty lub zaktualizowany |
Jeśli chcesz, aby użytkownicy mogli skonfigurować ścieżkę dokumentu 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/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 wyzwalana przez Pub/Sub jest uruchamiana, gdy wiadomość jest publikowana w określonym temacie.
Informacje na temat pisania funkcji wyzwalanych przez Pub/Sub znajdziesz w dokumentacji funkcji Cloud Functions.
Definicja funkcji (tylko 1. generacja)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.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 konfigurować temat Pub/Sub podczas instalowania Twojego 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: 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
Baza danych czasu rzeczywistego
Funkcja wyzwalana przez bazę danych Realtime Database jest uruchamiana, gdy ścieżka zgodna z określonym wzorcem jest tworzona, aktualizowana lub usuwana.
Informacje na temat pisania funkcji wyzwalanych przez RTDB można znaleźć w sekcji Wyzwalacze bazy danych czasu rzeczywistego w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1. generacja)
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 (rozszerzenie.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: ...
Poniższa tabela pokazuje, jak określić każdy z obsługiwanych typów zdarzeń Cloud Firestore:
Wyzwalacz zdarzenia Cloud Functions | eventType | Opis |
---|---|---|
onCreate() | providers/google.firebase.database/eventTypes/ref.create | Utworzono dane |
onDelete() | providers/google.firebase.database/eventTypes/ref.delete | Dane usunięte |
onUpdate() | providers/google.firebase.database/eventTypes/ref.update | Dane 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 parametru 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
Zdalna konfiguracja
Funkcja wyzwalana przez zdalną konfigurację jest uruchamiana po zaktualizowaniu szablonu parametrów projektu.
Informacje na temat pisania funkcji wyzwalanych przez Zdalną konfigurację można znaleźć w sekcji Wyzwalacze zdalnej konfiguracji w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1. generacja)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.firebase.remoteconfig.update
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
Magazyn w chmurze
Funkcja uruchamiana przez Cloud Storage jest uruchamiana, gdy obiekt jest tworzony, archiwizowany lub usuwany albo gdy zmieniają się jego metadane.
Informacje na temat pisania funkcji wyzwalanych przez magazyn można znaleźć w sekcji Wyzwalacze Cloud Storage w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1. generacja)
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 (rozszerzenie.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: ...
Poniższa tabela pokazuje, jak określić każdy z obsługiwanych typów zdarzeń Cloud Storage:
Wyzwalacz zdarzenia Cloud Functions | eventType | Opis |
---|---|---|
onFinalize() | google.storage.object.finalize | Obiekt utworzony |
onMetadataUpdate() | google.storage.object.metadataUpdate | Zaktualizowano metadane obiektu |
onArchive() | google.storage.object.archive | Obiekt został zarchiwizowany |
onDelete() | google.storage.object.delete | Obiekt 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 resource
funkcji:
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
Laboratorium Testowe
Funkcja wyzwalana przez laboratorium testowe jest uruchamiana po zakończeniu testów macierzy testowej.
Zobacz wyzwalacze Firebase Test Lab w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez laboratorium testowe.
Definicja funkcji (tylko 1. generacja)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Deklaracja zasobu (rozszerzenie.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.testing.testMatrix.complete
resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
- name: anotherFunction
type: ...
Wyzwalacze alertów Crashlytics
Funkcja wyzwalana przez Crashlytics jest uruchamiana, gdy Crashlytics publikuje alert.
Zobacz wyzwalacze alertów Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez alerty.
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 (rozszerzenie.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: ...
Można użyć następujących wartości dla alerttype
-
crashlytics.newFatalIssue
-
crashlytics.newNonfatalIssue
-
crashlytics.regression
-
crashlytics.stabilityDigest
-
crashlytics.velocity
-
crashlytics.newAnrIssue
Wyzwalacze alertów monitorowania wydajności
Funkcja wyzwalana przez monitorowanie wydajności jest uruchamiana, gdy monitorowanie wydajności publikuje alert.
Zobacz wyzwalacze alertów Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez alerty.
Definicja funkcji (tylko 2. generacji)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Deklaracja zasobu (rozszerzenie.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: ...
Wyzwalacze alertów dotyczących dystrybucji aplikacji
Funkcja wyzwalana przez App Distribution jest uruchamiana, gdy App Distribution opublikuje alert.
Zobacz wyzwalacze alertów Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez alerty.
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 (rozszerzenie.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: ...
Można użyć następujących wartości dla alerttype
-
appDistribution.newTesterIosDevice
-
appDistribution.inAppFeedback
Niestandardowe wyzwalacze zdarzeń (Eventarc)
Funkcja wyzwalana przez Eventarc jest uruchamiana, gdy określony typ zdarzenia zostanie opublikowany na określonym kanale.
Informacje na temat pisania funkcji wyzwalanych przez Eventarc znajdziesz w sekcji Tworzenie i obsługa niestandardowych wyzwalaczy zdarzeń w dokumentacji Cloud Functions.
Możesz także publikować zdarzenia ze swoich rozszerzeń, aby umożliwić użytkownikom wstawienie niestandardowej logiki do rozszerzenia. Zobacz Używanie niestandardowej logiki dostarczonej przez programistę w rozszerzeniu .
Definicja funkcji (tylko 2. generacji)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Deklaracja zasobu (rozszerzenie.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 momencie zainstalowania rozszerzenia. Na przykład, jeśli zależy Ci na zdarzeniach niestandardowych z innego rozszerzenia, które tworzy kanał, poinstruuj użytkowników, aby najpierw zainstalowali to rozszerzenie.
Powyższy przykład utworzyłby niestandardowy wyzwalacz zdarzenia dla „domyślnego” kanału Firebase w regionie us-central1
. Możesz dostosować nazwę kanału i region za pomocą parametrów. Na 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}