Podczas tworzenia rozszerzenia piszesz jego logikę za pomocą Cloud Functions, w podobny sposób jak w przypadku funkcji, która będzie używana tylko w Twoim projekcie. Funkcje deklarujesz w pliku extension.yaml. Gdy użytkownicy zainstalują rozszerzenie, te funkcje zostaną wdrożone w ich projekcie.
Ogólne informacje o korzystaniu z Cloud Functions znajdziesz w dokumentacji Cloud Functions.
1 i 2 generacja Cloud Functions
Firebase obsługuje zarówno 1 generacjęCloud Functions, jak i 2 generacjęCloud Functions. Rozszerzenia Firebase mają jednak obecnie pewne ograniczenia dotyczące tego, której generacji funkcji chmury możesz używać w przypadku niektórych typów reguł. Z tego powodu wiele rozszerzeń zawiera funkcje 1 i 2 generacji.
Obsługa generowania funkcji jest podana poniżej dla każdego typu wyzwalacza.
Specjalne uwagi
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 obserwowania, a odpowiednia deklaracja wextension.yamlma 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.Ze względu na dokumentację często określa się skonfigurowaną wartość w definicji funkcji. Przykłady na tej stronie są zgodne z tym wzorcem.
Pakiet SDK 1 generacji ma
functions.config()metodę ifunctions:config:setpolecenie CLI, których możesz używać do pracy z wartościami sparametryzowanymi w funkcjach 1 generacji.Cloud Functions Ta technika jest wycofana w Cloud Functions i w rozszerzeniu nie będzie działać. Zamiast tego użyj modułufunctions.params(zalecane) lubprocess.env.
Korzystanie z TypeScriptu
Większość dokumentacji dotyczącej tworzenia własnego rozszerzenia opisuje przepływy pracy z użyciem JavaScriptu w przypadku Cloud Functions for Firebase. Możesz jednak pisać funkcje w TypeScript.
Wszystkie oficjalne Firebaserozszerzenia są napisane w TypeScript. Możesz zapoznać się z tymi rozszerzeniami, aby poznać sprawdzone metody korzystania z TypeScriptu w rozszerzeniu.
Jeśli funkcje rozszerzenia są napisane w TypeScript, przed zainstalowaniem rozszerzenia musisz wykonać te czynności:
Skompiluj kod źródłowy funkcji rozszerzenia do JavaScriptu.
firebase ext:dev:initPolecenie umożliwia wybór języka TypeScript do pisania funkcji. Polecenie udostępnia kompletne rozszerzenie z możliwością zainstalowania oraz skrypt kompilacji, który możesz uruchomić za pomocą narzędzianpm run build.W pliku
package.jsonupewnij się, że polemainwskazuje wygenerowany kod JavaScript.Jeśli instalujesz lub przesyłasz rozszerzenie z lokalnego źródła, najpierw skompiluj pliki TypeScript.
Obsługiwane aktywatory funkcji
Aktywatory HTTP
Funkcja wywoływana przez HTTP jest wdrażana w publicznym punkcie końcowym https i uruchamiana, gdy uzyskuje się do niego dostęp.
Więcej informacji o pisaniu funkcji aktywowanych przez HTTP znajdziesz w artykule Wywoływanie funkcji za pomocą żądań HTTP w Cloud Functionsdokumentacji.
Definicja funkcji (tylko 1 generacja)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Deklaracja zasobu (extension.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 wywoływanych przez HTTP, ale implementują protokół, który ułatwia wywoływanie ich z kodu po stronie klienta.
Informacje o korzystaniu z funkcji wywoływanych znajdziesz w sekcji Wywoływanie funkcji z aplikacji w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacja)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Aktywatory zaplanowanych funkcji
Zaplanowana funkcja jest uruchamiana wielokrotnie zgodnie z harmonogramem, który można dostosować.
Informacje o tworzeniu funkcji harmonogramu znajdziesz w sekcji Planowanie funkcji 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 (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 parametru scheduleTrigger:
| Pole | Opis |
|---|---|
schedule(wymagane) |
Częstotliwość, z jaką ma być uruchamiana funkcja. W tym polu można używać ciągów znaków z dowolną składnią (wymagane jest umieszczenie w pojedynczych cudzysłowach):
|
timeZone(opcjonalnie) |
Strefa czasowa, w której będzie uruchamiany 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
Wyzwalacze kolejki zadań
Funkcja kolejki zadań jest wywoływana w przypadku zdarzeń cyklu życia rozszerzenia lub gdy zostanie ręcznie dodana do kolejki zadań rozszerzenia za pomocą metody TaskQueue.enqueue() pakietu Admin SDK.
Informacje o pisaniu funkcji obsługujących zdarzenia cyklu życia znajdziesz w artykule Obsługa zdarzeń cyklu życia rozszerzenia.
Więcej informacji o pisaniu funkcji kolejki zadań znajdziesz w sekcji Kolejkowanie funkcji za pomocą 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 (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 wartość {} lub mapę opcji, które dostrajają limity szybkości i zachowanie kolejki zadań w przypadku ponawiania (patrz Dostrajanie kolejki zadań).
Jeśli chcesz wywoływać funkcję w przypadku zdarzeń cyklu życia rozszerzenia, dodaj rekordy lifecycleEvents z nazwą funkcji i opcjonalną wiadomością o przetwarzaniu, 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 aktywowana przez Analytics jest uruchamiana, gdy zostanie zarejestrowane określone zdarzenie Analytics.
Informacje o pisaniu funkcji wywoływanych przez Analytics znajdziesz w dokumentacji 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 (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 konfigurować zdarzenie Analytics, które ma być nasłuchiwane 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: 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 jest uruchamiana, gdy użytkownik jest tworzony lub usuwany.
Więcej informacji o pisaniu funkcji wywoływanych przez uwierzytelnianie znajdziesz w dokumentacji dotyczącej wyzwalaczy Uwierzytelniania Firebase.Cloud Functions
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 (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 tym, jak określać poszczególne obsługiwane typy zdarzeńAuthentication:
| Aktywator zdarzeń Cloud Functions | 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 wywoływana przez Cloud Firestore jest uruchamiana, gdy dokument zostanie utworzony, zaktualizowany lub usunięty.
Informacje o pisaniu funkcji aktywowanych przez Firestore znajdziesz w sekcji Aktywatory Cloud Firestore w dokumentacji Cloud Functions.
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 (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 informacje o tym, jak określać poszczególne obsługiwane Cloud Firestoretypy zdarzeń:
| Aktywator zdarzeń Cloud Functions | 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 zaktualizowany |
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 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 uruchamiana, gdy w określonym temacie zostanie opublikowana wiadomość.
Więcej informacji o pisaniu funkcji wyzwalanych przez Pub/Sub znajdziesz w dokumentacji Cloud Functions w sekcji Aktywatory Pub/Sub.
Definicja funkcji (tylko 1 generacja)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Deklaracja zasobu (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 pisaniu funkcji wywoływanych przez Bazę danych czasu rzeczywistego znajdziesz w artykule Aktywatory Bazy danych czasu rzeczywistego w Cloud Functions dokumentacji.
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 (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 informacje o tym, jak określać poszczególne obsługiwane Cloud Firestoretypy zdarzeń:
| Aktywator zdarzeń Cloud Functions | 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 |
Dane zostały zaktualizowane |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
Dane zostały utworzone, usunięte lub zaktualizowane |
Jeśli chcesz, aby użytkownicy mogli konfigurować ścieżkę do obserwowania 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: 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 uruchamiana, gdy szablon parametru projektu zostanie zaktualizowany.
Informacje o pisaniu funkcji wywoływanych przez Zdalną konfigurację znajdziesz w sekcji Triggery 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 (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 uruchamiana, gdy obiekt zostanie utworzony, zarchiwizowany lub usunięty albo gdy zmienią się jego metadane.
Więcej informacji o pisaniu funkcji aktywowanych przez Cloud Storage znajdziesz w sekcji Aktywatory 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 (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 informacje o tym, jak określać poszczególne obsługiwane Cloud Storagetypy zdarzeń:
| Aktywator zdarzeń Cloud Functions | eventType |
Opis |
|---|---|---|
onFinalize() |
google.storage.object.finalize |
Utworzono obiekt |
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 konfigurować 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
Test Lab
Funkcja wywołana przez Laboratorium Firebase jest uruchamiana, gdy zestaw testów zakończy testy.
Informacje o pisaniu funkcji wywoływanych przez Laboratorium znajdziesz w sekcji Aktywatory Laboratorium Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacja)
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 reguły alertów
Funkcja wywoływana przez Crashlytics jest uruchamiana, gdy Crashlytics opublikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Aktywatory alertów Firebase 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 (extension.yaml)
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 parametru alerttype możesz użyć tych wartości:
crashlytics.newFatalIssuecrashlytics.newNonfatalIssuecrashlytics.regressioncrashlytics.stabilityDigestcrashlytics.velocitycrashlytics.newAnrIssue
Performance Monitoring reguły alertów
Funkcja wywoływana przez Performance Monitoring jest uruchamiana, gdy Performance Monitoring opublikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Aktywatory alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacji)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Deklaracja zasobu (extension.yaml)
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ły alertów
Funkcja wywoływana przez App Distribution jest uruchamiana, gdy App Distribution opublikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Aktywatory alertów Firebase 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 (extension.yaml)
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 parametru alerttype możesz użyć tych wartości:
appDistribution.newTesterIosDeviceappDistribution.inAppFeedback
Aktywatory zdarzeń niestandardowych (Eventarc)
Funkcja wywoływana przez Eventarc jest uruchamiana, gdy określony typ zdarzenia zostanie opublikowany w określonym kanale.
Informacje o pisaniu funkcji wywoływanych przez Eventarc znajdziesz w artykule Tworzenie i obsługa aktywatorów zdarzeń niestandardowych w Cloud Functionsdokumentacji.
Możesz też publikować zdarzenia z rozszerzeń, aby umożliwić użytkownikom wstawianie niestandardowej logiki do rozszerzenia. Zobacz Używanie w rozszerzeniu niestandardowej logiki dostarczonej przez dewelopera.
Definicja funkcji (tylko 2 generacji)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Deklaracja zasobu (extension.yaml)
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 instalacji rozszerzenia. Jeśli na przykład korzystasz ze zdarzeń niestandardowych z innego rozszerzenia, które tworzy kanał, poproś użytkowników o najpierw zainstalowanie tego rozszerzenia.
W przykładzie powyżej utworzyliśmy regułę opartą na zdarzeniu niestandardowym dla kanału Firebase „default” w regionie us-central1. Możesz dostosować nazwę i region kanału za pomocą parametrów. 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}