Khi tạo một tiện ích, bạn sẽ viết logic của tiện ích đó bằng Cloud Functions, tương tự như cách bạn viết một hàm chỉ được sử dụng trong dự án của riêng mình. Bạn khai báo các hàm trong tệp extension.yaml
và khi người dùng cài đặt tiện ích, các hàm này sẽ được triển khai vào dự án của họ.
Hãy xem tài liệu về Cloud Functions để biết thông tin chung về cách sử dụng Cloud Functions.
Cloud Functions thế hệ 1 và 2
Firebase hỗ trợ cả Cloud Functions thế hệ 1 và 2. Tuy nhiên, Tiện ích Firebase hiện có một số hạn chế về thế hệ hàm trên đám mây mà bạn có thể sử dụng với một số loại trình kích hoạt nhất định. Vì lý do này, nhiều tiện ích bao gồm cả các hàm thế hệ 1 và 2.
Dưới đây là thông tin hỗ trợ tạo hàm cho từng loại trình kích hoạt.
Những điểm cần cân nhắc đặc biệt
Một số định nghĩa hàm yêu cầu bạn chỉ định thông tin cũng được chỉ định trong tệp
extension.yaml
. Ví dụ: Cloud Firestore có một phương thứcdocument()
chỉ định mẫu tài liệu cần xem, và phần khai báo tương ứng của phương thức đó trongextension.yaml
có một trườngresource
chỉ định giống nhau.Trong những trường hợp này, cấu hình được chỉ định trong tệp
extension.yaml
sẽ được sử dụng và cấu hình được chỉ định trong phần khai báo hàm sẽ bị bỏ qua.Để tài liệu được đầy đủ, bạn nên chỉ định giá trị đã định cấu hình trong phần khai báo hàm. Các ví dụ trên trang này tuân theo mẫu này.
SDK Cloud Functions thế hệ 1 có một phương thức
functions.config()
và lệnh CLIfunctions:config:set
mà bạn có thể sử dụng để xử lý các giá trị được tạo thông số trong các hàm thế hệ 1. Kỹ thuật này không còn được dùng trong Cloud Functions và sẽ hoàn toàn không hoạt động trong một tiện ích. Thay vào đó, hãy sử dụng mô-đunfunctions.params
(nên dùng) hoặcprocess.env
.
Sử dụng TypeScript
Hầu hết tài liệu về cách phát triển tiện ích của riêng bạn đều mô tả quy trình công việc sử dụng JavaScript cho Cloud Functions for Firebase. Tuy nhiên, bạn có thể viết các hàm bằng TypeScript.
Trên thực tế, tất cả tiện ích Firebase chính thức đều được viết bằng TypeScript. Bạn có thể xem xét các tiện ích đó để biết một số phương pháp hay nhất để sử dụng TypeScript cho tiện ích của mình.
Nếu viết các hàm của tiện ích bằng TypeScript, bạn phải làm như sau trước khi cài đặt tiện ích:
Biên dịch mã nguồn hàm của tiện ích thành JavaScript.
Lệnh
firebase ext:dev:init
cho phép bạn chọn TypeScript để viết hàm. Lệnh này cung cấp cho bạn một tiện ích hoàn chỉnh, có thể cài đặt cũng như một tập lệnh bản dựng mà bạn có thể chạy bằngnpm run build
.Trong tệp
package.json
, hãy nhớ trỏ trườngmain
đến JavaScript đã tạo.Nếu bạn đang cài đặt hoặc tải tiện ích lên từ nguồn cục bộ, trước tiên, hãy biên dịch các tệp TypeScript.
Trình kích hoạt hàm được hỗ trợ
Trình kích hoạt HTTP
Hàm được kích hoạt bằng HTTP được triển khai đến một điểm cuối https
công khai và chạy khi điểm cuối được truy cập.
Hãy xem phần Gọi hàm thông qua yêu cầu HTTP trong tài liệu về Cloud Functions để biết thông tin về cách viết hàm được kích hoạt bằng HTTP.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Khai báo tài nguyên (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Hàm có thể gọi
Hàm có thể gọi tương tự như các hàm được kích hoạt qua HTTP, nhưng các hàm này triển khai một giao thức giúp bạn gọi hàm một cách thuận tiện từ mã phía máy khách.
Hãy xem phần Gọi hàm từ ứng dụng trong tài liệu về Cloud Functions để biết thông tin về cách sử dụng các hàm có thể gọi.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Khai báo tài nguyên (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Điều kiện kích hoạt hàm được lên lịch
Hàm được lên lịch chạy lặp lại dựa trên lịch biểu có thể tuỳ chỉnh.
Xem phần Lên lịch hàm trong tài liệu về Cloud Functions để biết thông tin về cách viết hàm được lên lịch.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Khai báo tài nguyên (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
Dưới đây là các trường phụ có sẵn cho scheduleTrigger
:
Trường | Nội dung mô tả |
---|---|
schedule (bắt buộc) |
Tần suất bạn muốn hàm chạy. Trường này có thể chấp nhận các chuỗi sử dụng một trong hai cú pháp (bắt buộc phải gói trong dấu ngoặc đơn):
|
timeZone (không bắt buộc) |
Múi giờ mà lịch biểu sẽ chạy.
|
Nếu bạn muốn người dùng có thể định cấu hình lịch biểu khi họ cài đặt tiện ích, hãy thêm một tham số mới vào tệp extension.yaml
và tham chiếu tham số đó trong phần khai báo resource
của hàm:
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
Trình kích hoạt hàng đợi tác vụ
Hàm hàng đợi tác vụ được kích hoạt trên các sự kiện vòng đời của tiện ích hoặc khi được thêm theo cách thủ công vào hàng đợi tác vụ của tiện ích bằng phương thức TaskQueue.enqueue()
của SDK quản trị.
Hãy xem phần Xử lý các sự kiện trong vòng đời của tiện ích để biết thông tin về cách viết các hàm xử lý các sự kiện trong vòng đời.
Hãy xem phần Đưa hàm vào hàng đợi bằng Cloud Tasks trong tài liệu về Cloud Functions để biết thông tin về cách viết hàm hàng đợi tác vụ.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Khai báo tài nguyên (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
Đặt thuộc tính taskQueueTrigger
thành {}
hoặc bản đồ các tuỳ chọn để điều chỉnh giới hạn tốc độ và hành vi thử lại của hàng đợi tác vụ (xem phần Điều chỉnh hàng đợi tác vụ).
Nếu bạn muốn kích hoạt hàm trên các sự kiện trong vòng đời của tiện ích, hãy thêm bản ghi lifecycleEvents
có tên của hàm và thông báo xử lý không bắt buộc. Thông báo này sẽ hiển thị trong bảng điều khiển Firebase khi quá trình xử lý bắt đầu.
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
Hàm do Analytics kích hoạt sẽ chạy khi một sự kiện Analytics được chỉ định được ghi lại.
Xem trình kích hoạt Google Analytics trong tài liệu Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng Analytics.
Định nghĩa hàm (chỉ dành cho thế hệ thứ 1)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Khai báo tài nguyên (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: ...
Nếu bạn muốn người dùng có thể định cấu hình sự kiện Analytics để theo dõi khi họ cài đặt tiện ích của bạn, hãy thêm một tham số mới vào tệp extension.yaml
và tham chiếu đến tham số đó trong phần khai báo resource
của hàm:
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
Hàm được kích hoạt bằng xác thực sẽ chạy khi người dùng được tạo hoặc bị xoá.
Hãy xem phần Trình kích hoạt Xác thực Firebase trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng xác thực.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Khai báo tài nguyên (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: ...
Bảng sau đây cho biết cách chỉ định từng loại sự kiện Authentication được hỗ trợ:
Trình kích hoạt sự kiện Cloud Functions | eventType |
Mô tả |
---|---|---|
onCreate() |
providers/firebase.auth/eventTypes/user.create |
Đã tạo người dùng mới |
onDelete() |
providers/firebase.auth/eventTypes/user.delete |
Người dùng đã bị xoá |
Cloud Firestore
Một hàm được kích hoạt trên Cloud Firestore sẽ chạy khi một tài liệu được tạo, cập nhật hoặc xoá.
Hãy xem phần Trình kích hoạt Cloud Firestore trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng Firestore.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
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.
// ...
});
Khai báo tài nguyên (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: ...
Bảng sau đây cho biết cách chỉ định từng loại sự kiện Cloud Firestore được hỗ trợ:
Cloud Functions trình kích hoạt sự kiện | eventType |
Mô tả |
---|---|---|
onCreate() |
providers/cloud.firestore/eventTypes/document.create |
Đã tạo tài liệu mới |
onDelete() |
providers/cloud.firestore/eventTypes/document.delete |
Đã xoá tài liệu |
onUpdate() |
providers/cloud.firestore/eventTypes/document.update |
Đã cập nhật tài liệu |
onWrite() |
providers/cloud.firestore/eventTypes/document.write |
Tài liệu đã được tạo, xoá hoặc cập nhật |
Nếu bạn muốn người dùng có thể định cấu hình đường dẫn tài liệu khi họ cài đặt tiện ích, hãy thêm một tham số mới vào tệp extension.yaml
và tham chiếu đến tham số đó trong phần khai báo resource
của hàm:
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
Hàm được kích hoạt bằng Pub/Sub sẽ chạy khi một thông báo được phát hành cho một chủ đề cụ thể.
Xem phần Trình kích hoạt Pub/Sub trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng Pub/Sub.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Khai báo tài nguyên (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: ...
Nếu bạn muốn người dùng có thể định cấu hình chủ đề Pub/Sub khi họ cài đặt tiện ích, hãy thêm một tham số mới vào tệp extension.yaml
và tham chiếu tham số đó trong phần khai báo resource
của hàm:
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
Hàm được kích hoạt bằng Cơ sở dữ liệu theo thời gian thực sẽ chạy khi một đường dẫn khớp với mẫu được chỉ định được tạo, cập nhật hoặc xoá.
Xem phần Trình kích hoạt Cơ sở dữ liệu theo thời gian thực trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng RTDB.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
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.
// ...
});
Khai báo tài nguyên (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: ...
Bảng sau đây cho biết cách chỉ định từng loại sự kiện Cloud Firestore được hỗ trợ:
Cloud Functions trình kích hoạt sự kiện | eventType |
Mô tả |
---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Dữ liệu đã tạo |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
Đã xoá dữ liệu |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
Đã cập nhật dữ liệu |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
Dữ liệu đã tạo, xoá hoặc cập nhật |
Nếu bạn muốn người dùng có thể định cấu hình đường dẫn cần theo dõi khi họ cài đặt tiện ích của bạn, hãy thêm một tham số mới vào tệp extension.yaml
và tham chiếu đến tham số đó trong phần khai báo resource
của hàm:
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
Hàm được kích hoạt bằng Cấu hình từ xa sẽ chạy khi mẫu tham số của dự án được cập nhật.
Xem điều kiện kích hoạt Cấu hình từ xa trong tài liệu Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt Cấu hình từ xa.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Khai báo tài nguyên (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
Hàm được kích hoạt bằng Cloud Storage sẽ chạy khi một đối tượng được tạo, lưu trữ hoặc xoá, hoặc khi siêu dữ liệu của đối tượng đó thay đổi.
Xem Điều kiện kích hoạt Bộ nhớ trên đám mây trong tài liệu Cloud Functions để biết thông tin về cách viết hàm được kích hoạt Bộ nhớ.
Định nghĩa hàm (chỉ dành cho thế hệ 1)
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) => {
// ...
});
Khai báo tài nguyên (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: ...
Bảng sau đây cho biết cách chỉ định từng loại sự kiện Cloud Storage được hỗ trợ:
Trình kích hoạt sự kiện Cloud Functions | eventType |
Mô tả |
---|---|---|
onFinalize() |
google.storage.object.finalize |
Đã tạo đối tượng |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
Cập nhật siêu dữ liệu của đối tượng |
onArchive() |
google.storage.object.archive |
Đã lưu trữ đối tượng |
onDelete() |
google.storage.object.delete |
Đối tượng đã bị xoá |
Nếu bạn muốn người dùng có thể định cấu hình bộ chứa lưu trữ khi cài đặt tiện ích, hãy thêm một tham số mới vào tệp extension.yaml
và tham chiếu tham số đó trong phần khai báo resource
của hàm:
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
Hàm được kích hoạt bằng Phòng kiểm thử sẽ chạy khi một ma trận kiểm thử hoàn tất các kiểm thử.
Hãy xem phần Trình kích hoạt Phòng thử nghiệm Firebase trong tài liệu Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng Phòng thử nghiệm.
Định nghĩa hàm (chỉ dành cho thế hệ thứ 1)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Khai báo tài nguyên (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: ...
Điều kiện kích hoạt cảnh báo Crashlytics
Hàm được kích hoạt bằng Crashlytics sẽ chạy khi Crashlytics phát hành một cảnh báo.
Xem phần Trình kích hoạt cảnh báo Firebase trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng cảnh báo.
Định nghĩa hàm (chỉ dành cho thế hệ 2)
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) => {
// ...
});
Khai báo tài nguyên (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: ...
Bạn có thể sử dụng các giá trị sau cho alerttype
crashlytics.newFatalIssue
crashlytics.newNonfatalIssue
crashlytics.regression
crashlytics.stabilityDigest
crashlytics.velocity
crashlytics.newAnrIssue
Performance Monitoring lần kích hoạt cảnh báo
Hàm được kích hoạt bằng Performance Monitoring sẽ chạy khi Performance Monitoring phát hành cảnh báo.
Xem phần Trình kích hoạt cảnh báo Firebase trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng cảnh báo.
Định nghĩa hàm (chỉ dành cho thế hệ thứ 2)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Khai báo tài nguyên (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 lần kích hoạt cảnh báo
Một hàm được kích hoạt bằng App Distribution sẽ chạy khi App Distribution đăng một cảnh báo.
Xem phần Trình kích hoạt cảnh báo Firebase trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng cảnh báo.
Định nghĩa hàm (chỉ thế hệ thứ 2)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Khai báo tài nguyên (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: ...
Bạn có thể sử dụng các giá trị sau cho alerttype
appDistribution.newTesterIosDevice
appDistribution.inAppFeedback
Trình kích hoạt sự kiện tuỳ chỉnh (Eventarc)
Một hàm được kích hoạt Eventarc sẽ chạy khi một loại sự kiện cụ thể được phát hành lên một kênh cụ thể.
Hãy xem phần Tạo và xử lý trình kích hoạt sự kiện tuỳ chỉnh trong tài liệu về Cloud Functions để biết thông tin về cách viết các hàm được kích hoạt bằng Eventarc.
Bạn cũng có thể xuất bản sự kiện từ tiện ích để cung cấp cho người dùng cách chèn logic tuỳ chỉnh vào tiện ích của bạn. Xem phần Sử dụng logic tuỳ chỉnh do nhà phát triển cung cấp trong một tiện ích.
Định nghĩa hàm (chỉ dành cho thế hệ thứ 2)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Khai báo tài nguyên (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: ...
Kênh phải tồn tại khi bạn cài đặt tiện ích. Ví dụ: nếu bạn phụ thuộc vào các sự kiện tuỳ chỉnh từ một tiện ích khác tạo kênh, hãy hướng dẫn người dùng cài đặt tiện ích đó trước.
Ví dụ trên sẽ tạo một trình kích hoạt sự kiện tuỳ chỉnh cho kênh Firebase "mặc định" ở khu vực us-central1
. Bạn có thể tuỳ chỉnh tên kênh và khu vực bằng cách sử dụng các thông số. Ví dụ:
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}