Bir uzantı oluşturduğunuzda mantığını Cloud Functions kullanarak,
yalnızca herhangi bir yerde kullanılacak bir fonksiyon yazmakla aynı şekilde
kendi projenize ekleyebilirsiniz. İşlevlerinizi extension.yaml
dosyasında açıklamışsınızdır ve
Kullanıcılar uzantınızı yüklediğinde bu işlevler,
belirler.
Kullanım hakkında genel bilgiler için Cloud Functions dokümanlarına bakın Cloud Functions.
1. ve 2. nesil Cloud Functions
Firebase her ikisini de destekler 1. nesil ve 2. nesil Cloud Functions. Ancak Firebase, Uzantılar, şu anda hangi bulut oluşturma işlemiyle ilgili bazı kısıtlamalar söz konusudur? işlevinden emin olun. Bu nedenle, Uzantılar, 1. ve 2. nesil işlevlerinin bir karışımını içerir.
İşlev oluşturma desteği aşağıda her tetikleyici türü için belirtilmiştir.
Dikkat edilmesi gereken noktalar
Bazı işlev tanımları,
extension.yaml
dosyasında belirtilir. Örneğin, Cloud Firestore'dadocument()
yöntemi ile izlenecek doküman desenini veextension.yaml
öğesine karşılık gelen beyanda bulunanresource
alanı aynısını belirtir.Böyle durumlarda,
extension.yaml
bölümünde belirtilen yapılandırma dosyası kullanılır ve fonksiyon tanımında belirtilen yapılandırma yoksayıldı.İşlevde yapılandırılmış değerin belirtilmesi yaygın bir uygulamadır. artık daha iyi kavrayacaksınız. Bu konudaki örnekler bu kalıbı izler.
Cloud Functions 1. nesil SDK'sı
functions.config()
yöntemine ve Çalışmak için kullanabileceğinizfunctions:config:set
CLI komutu 1. nesil işlevlerde parametre haline getirilmiş değerleri içerir. Bu teknik için desteğin sonlandırılması: Cloud Functions ve uzantılarda hiç çalışmaz. Bunun yerinefunctions.params
modülü (önerilen) veyaprocess.env
.
TypeScript'i Kullanma
Kendi uzantınızı geliştirmeye yönelik belgelerin çoğu, iş akışlarını açıklar Cloud Functions for Firebase için JavaScript kullanılıyor. Ancak isterseniz TypeScript kullanarak işlevlerinizi oluşturun.
Aslında resmi Firebase uzantısı TypeScript'te yazılır. Bu uzantıları inceleyerek en iyi performansı nasıl kullanacağınızı göstereceğim.
Uzantınızın işlevlerini TypeScript'te yazacaksanız aşağıdaki adımları uygulamanız gerekir:
Uzantınızın işlevleri kaynak kodunu JavaScript'te derleyin.
firebase ext:dev:init
komut işlevlerinizi yazmak için TypeScript'i seçmenize olanak tanır. Komut size eksiksiz, yüklenebilir bir uzantı ve ayrıcanpm run build
ile çalıştırabileceğiniz komut dosyası oluşturun.package.json
dosyanızdamain
alanını JavaScript'le oluşturulmuştu.Uzantınızı yerel kaynaktan yüklüyor veya yüklüyorsanız önce TypeScript dosyalarınızı derleyin.
Desteklenen işlev tetikleyicileri
HTTP tetikleyicileri
HTTP tetiklenen bir işlev, herkese açık https
uç noktasına dağıtılır ve
izin verilmez.
Cloud Functions'daki HTTP istekleri aracılığıyla çağrı işlevleri bölümüne bakın. dokümanlarına göz atın.
İşlev tanımı (yalnızca 1. nesil)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Çağrılabilir işlevler
Çağrılabilir işlevler HTTP tetiklenmiş işlevlere benzer ancak çağrılarını kolaylaştıran, istemci taraflı kodunuzdan çağrılmasına olanak tanıyan bir protokol kullanın.
Cloud Functions dokümanlarında Uygulamanızdan çağrı işlevleri bölümüne bakın bakın.
İşlev tanımı (yalnızca 1. nesil)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Planlanmış işlev tetikleyicileri
Planlanan bir işlev, özelleştirilebilir bir programa göre sürekli olarak çalışır.
Aşağıdakiler için Cloud Functions dokümanlarındaki Program işlevleri bölümüne bakın: zamanlanmış fonksiyonlar yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 1. nesil)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
scheduleTrigger
için kullanılabilir alt alanlar şunlardır:
Alan | Açıklama |
---|---|
schedule (zorunlu) |
İşlevin çalışmasını istediğiniz sıklık. Bu alan, tek tırnak gereklidir):
|
timeZone (isteğe bağlı) |
Programın çalışacağı saat dilimi.
|
Kullanıcıların
uzantısına sahipseniz extension.yaml
dosyanıza yeni bir parametre ekleyin ve
parametresini işlevinizin resource
bildirimindeki gibi değiştirebilirsiniz:
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
Görev sırası tetikleyicileri
Bir görev sırası işlevi, uzantınızın yaşam döngüsünde tetiklenir
etkinlikleri veya Yönetici
SDK'nın TaskQueue.enqueue()
yöntemi.
Yazma hakkında bilgi edinmek için Uzantınızın yaşam döngüsü olaylarını işleme bölümüne bakın yaşam döngüsü olaylarını işleyen fonksiyonlar hakkındadır.
Cloud Functions dokümanındaki Cloud Tasks ile işlevleri sıraya koyma bölümüne bakın dokümanlarına göz atabilirsiniz.
İşlev tanımı (yalnızca 1. nesil)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
taskQueueTrigger
özelliğini {}
olarak ayarlayın veya
hız sınırlarını ve görev sırasının yeniden deneme davranışını ayarlayın (bkz. Görevi ayarlama
sıra) tıklayın.
İşlevinizi, uzantınızın yaşam döngüsü etkinliklerinde tetiklemek isterseniz
lifecycleEvents
, işlevin adını ve isteğe bağlı
aşağıdaki işlemler gerçekleştirildiğinde Firebase konsolunda görüntülenecektir
işlemeye başlar.
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
Belirli bir Analytics etkinliği gerçekleştiğinde Analytics tarafından tetiklenen bir işlev günlüğe kaydedildi.
Aşağıdakiler için Cloud Functions belgelerindeki Google Analytics tetikleyicileri bölümüne bakın: Analytics tarafından tetiklenen işlevleri yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 1. nesil)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Kaynak bildirimi (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: ...
Kullanıcıların Analytics etkinliğini dinleyecek şekilde yapılandırabilmesini istiyorsanız
Uzantınızı yükledikten sonra, extension.yaml
dosyasını açın ve fonksiyonunuzun resource
bildirimindeki parametreye referans verin:
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
Bir kullanıcı oluşturulduğunda veya silindiğinde kimlik doğrulama tarafından tetiklenen bir işlev çalıştırılır.
Cloud Functions adresindeki Firebase Authentication tetikleyicileri bölümüne bakın dokümanlarına göz atın.
İşlev tanımı (yalnızca 1. nesil)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tabloda, desteklenen Authentication etkinliklerinin her birinin nasıl belirtileceği gösterilmektedir türler:
Cloud Functions etkinlik tetikleyicisi | eventType |
Açıklama |
---|---|---|
onCreate() |
providers/firebase.auth/eventTypes/user.create |
Yeni kullanıcı oluşturuldu |
onDelete() |
providers/firebase.auth/eventTypes/user.delete |
Kullanıcı silindi |
Cloud Firestore
Cloud Firestore tarafından tetiklenen bir işlev, belge oluşturulduğunda, güncellendiğinde veya silinmiş olabilir.
Şu uygulama için Cloud Functions dokümanlarındaki Cloud Firestore tetikleyicileri bölümüne bakın: Firestore tarafından tetiklenen işlevleri yazmayla ilgili bilgiler.
İşlev tanımı (yalnızca 1. nesil)
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.
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tabloda, desteklenen her bir Cloud Firestore öğesinin nasıl belirtileceği gösterilmektedir etkinlik türleri:
Cloud Functions etkinlik tetikleyicisi | eventType |
Açıklama |
---|---|---|
onCreate() |
providers/cloud.firestore/eventTypes/document.create |
Yeni doküman oluşturuldu |
onDelete() |
providers/cloud.firestore/eventTypes/document.delete |
Doküman silindi |
onUpdate() |
providers/cloud.firestore/eventTypes/document.update |
Doküman güncellendi |
onWrite() |
providers/cloud.firestore/eventTypes/document.write |
Doküman oluşturuldu, silindi veya güncellendi |
Kullanıcıların yükleme yaptıklarında doküman yolunu yapılandırabilmelerini istiyorsanız
uzantınızı göstermek için extension.yaml
dosyanıza yeni bir parametre ekleyip
fonksiyonunuzun resource
bildirimindeki parametre:
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
Pub/Sub tarafından tetiklenen bir işlev, belirli bir konu.
Şu sürüm için Cloud Functions dokümanlarındaki Pub/Sub tetikleyicileri bölümüne bakın: ve Pub/Sub tarafından tetiklenen işlevleri yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 1. nesil)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Kaynak bildirimi (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: ...
Kullanıcıların aşağıdaki işlemleri gerçekleştirirken Pub/Sub konusunu yapılandırabilmesini istiyorsanız:
uzantınızı yüklerlerse extension.yaml
dosyanıza yeni bir parametre eklerler
ve işlevinizin resource
bildirimindeki parametreye referans verin:
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
Belirtilen bir yol ile eşleşen bir yol olduğunda, Gerçek Zamanlı Veritabanı tarafından tetiklenen işlevler oluşturulduğundan, güncellendiğinden veya silindiğinden emin olun.
Cloud Functions belgelerindeki Realtime Database tetikleyicileri bölümüne bakın inceleyin.
İşlev tanımı (yalnızca 1. nesil)
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.
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tabloda, desteklenen her bir Cloud Firestore öğesinin nasıl belirtileceği gösterilmektedir etkinlik türleri:
Cloud Functions etkinlik tetikleyicisi | eventType |
Açıklama |
---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Oluşturulan veriler |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
Veriler silindi |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
Veriler güncellendi |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
Oluşturulan, silinen veya güncellenen veriler |
Kullanıcıların uygulamayı yüklerken izleyecekleri yolu yapılandırabilirler.
uzantınızı göstermek için extension.yaml
dosyanıza yeni bir parametre ekleyip
fonksiyonunuzun resource
bildirimindeki parametre:
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
Remote Config tarafından tetiklenen bir işlev, projenin parametre şablonu güncellendi.
Remote Config tetikleyicileri ile ilgili olarak Cloud Functions dokümanlarındaki Remote Config tarafından tetiklenen işlevleri yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 1. nesil)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Kaynak bildirimi (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
Cloud Storage tarafından tetiklenen işlevler, bir nesne oluşturulduğunda, arşivlendiğinde veya silme veya meta verileri değiştiğinde.
Aşağıdakiler için Cloud Functions belgelerindeki Cloud Storage tetikleyicileri'ne bakın: Storage tarafından tetiklenen işlevleri yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 1. nesil)
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) => {
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tabloda, desteklenen her bir Cloud Storage öğesinin nasıl belirtileceği gösterilmektedir etkinlik türleri:
Cloud Functions etkinlik tetikleyicisi | eventType |
Açıklama |
---|---|---|
onFinalize() |
google.storage.object.finalize |
Nesne oluşturuldu |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
Nesne meta verileri güncellendi |
onArchive() |
google.storage.object.archive |
Nesne arşivlendi |
onDelete() |
google.storage.object.delete |
Nesne silindi |
Kullanıcıların yükleme yaptıklarında depolama paketini yapılandırabilmelerini istiyorsanız
uzantınızı göstermek için extension.yaml
dosyanıza yeni bir parametre ekleyip
fonksiyonunuzun resource
bildirimindeki parametre:
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
Test Lab tarafından tetiklenen bir işlev, test matrisi testlerini tamamladığında çalışır.
Cloud Functions dokümanlarındaki Firebase Test Lab tetikleyicileri bölümüne bakın inceleyin.
İşlev tanımı (yalnızca 1. nesil)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Kaynak bildirimi (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 uyarı tetikleyicisi
Crashlytics tarafından tetiklenen bir işlev, Crashlytics tarafından tetiklenen bir uyarı.
Şu uygulama için Cloud Functions dokümanlarındaki Firebase Alerts tetikleyicileri'ne bakın: uyarı tetiklenen işlevleri yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 2. nesil)
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) => {
// ...
});
Kaynak bildirimi (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: ...
alerttype
için aşağıdaki değerleri kullanabilirsiniz
crashlytics.newFatalIssue
crashlytics.newNonfatalIssue
crashlytics.regression
crashlytics.stabilityDigest
crashlytics.velocity
crashlytics.newAnrIssue
Performance Monitoring uyarı tetikleyicisi
Performance Monitoring bir uyarı yayınladığında Performance Monitoring tarafından tetiklenen bir işlev çalıştırılır.
Şu uygulama için Cloud Functions dokümanlarındaki Firebase Alerts tetikleyicileri'ne bakın: uyarı tetiklenen işlevleri yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 2. nesil)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Kaynak bildirimi (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 uyarı tetikleyicisi
App Distribution bir uyarı yayınladığında App Distribution tarafından tetiklenen bir işlev çalıştırılır.
Şu uygulama için Cloud Functions dokümanlarındaki Firebase Alerts tetikleyicileri'ne bakın: uyarı tetiklenen işlevleri yazma hakkında bilgi edinin.
İşlev tanımı (yalnızca 2. nesil)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Kaynak bildirimi (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: ...
alerttype
için aşağıdaki değerleri kullanabilirsiniz
appDistribution.newTesterIosDevice
appDistribution.inAppFeedback
Özel etkinlik tetikleyicileri (Eventarc)
Eventarc tarafından tetiklenen bir işlev, belirli bir etkinlik türü görebilirsiniz.
Cloud Functions dokümanında Özel etkinlik tetikleyicileri oluşturma ve işleme konusuna bakın. dokümanlarına göz atın.
Ayrıca, kullanıcılara uzantılardan öğe ekleme olanağı sunmak için uzantılarınızdaki etkinlikleri yayınlayabilirsiniz. özel mantık ilkelerinize uygun olarak ekleyebilirsiniz. Geliştirici tarafından sağlanan özel mantığı uzantısı ekleyin.
İşlev tanımı (yalnızca 2. nesil)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Kaynak bildirimi (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: ...
Uzantınız yüklendiğinde kanalın zaten mevcut olması gerekir. Örneğin, Kanalı oluşturan başka bir uzantıdaki özel etkinliklere bağlı kalırsanız Kullanıcılarınıza öncelikle bu uzantıyı yüklemeleri gerekir.
Yukarıdaki örnek, "default" için bir özel etkinlik tetikleyicisi oluşturur Firebase
us-central1
bölgede yayınlıyorsunuz. Kanalınızın adını ve bölgesini seçebilirsiniz.
özelleştirilebilir olması gerekir. Örneğin:
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}