編寫擴充功能的 Cloud Functions

建立擴充功能時,您會使用 Cloud Functions 編寫邏輯,與編寫只會在自己專案中使用的函式非常相似。您可以在 extension.yaml 檔案中宣告函式,使用者安裝擴充功能時,這些函式就會部署到他們的專案中。

如要瞭解如何使用 Cloud Functions,請參閱 Cloud Functions 說明文件。

第 1 代和第 2 代 Cloud Functions

Firebase 支援第 1 代和第 2 代Cloud Functions。不過,Firebase 擴充功能目前對特定觸發條件類型可搭配使用的雲端函式代有限制。因此,許多擴充功能會混合使用第 1 代和第 2 代函式。

下表列出各觸發條件類型是否支援函式生成功能。

特殊注意事項

  • 部分函式定義需要您指定資訊,而這些資訊也會在 extension.yaml 檔案中指定。舉例來說,Cloud Firestore 有 document() 方法可指定要監看的檔案模式,而 extension.yaml 中的對應宣告則有 resource 欄位,可指定相同模式。

    在這些情況下,系統會使用 extension.yaml 檔案中指定的設定,並忽略函式定義中指定的設定。

    為了方便記錄,無論如何,一般都會在函式定義中指定設定值。本頁的範例遵循這個模式。

  • 第 1 代 SDK 具有 functions.config() 方法和 functions:config:set CLI 指令,可用於處理第 1 代函式中的參數化值。Cloud Functions這項技術已在 Cloud Functions 中淘汰,且完全無法在擴充功能中使用。請改用 functions.params 模組 (建議) 或 process.env

使用 TypeScript

開發專屬擴充功能的大部分說明文件,都描述了使用 JavaScript 的工作流程 Cloud Functions for Firebase。不過,您可以使用 TypeScript 編寫函式。

事實上,所有官方Firebase擴充功能都是以 TypeScript 撰寫。您可以查看這些擴充功能,瞭解如何以 TypeScript 撰寫擴充功能。

如果您以 TypeScript 撰寫擴充功能的函式,請務必先完成下列步驟,再安裝擴充功能:

  1. 將擴充功能的函式原始碼編譯為 JavaScript。

    您可以使用 firebase ext:dev:init 指令 選擇以 TypeScript 編寫函式。這項指令會提供完整的可安裝擴充功能,以及可透過 npm run build 執行的建構指令碼。

  2. package.json 檔案中,請務必將 main 欄位指向產生的 JavaScript。

  3. 如要從本機來源安裝或上傳擴充功能,請先編譯 TypeScript 檔案。

支援的函式觸發條件

HTTP 觸發條件

系統會將 HTTP 觸發函式部署至公開 https 端點,並在存取該端點時執行函式。

如要瞭解如何撰寫 HTTP 觸發的函式,請參閱 Cloud Functions說明文件中的「透過 HTTP 要求呼叫函式」。

函式定義 (僅限第 1 代)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});

資源宣告 (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

可呼叫的函式

可呼叫函式與 HTTP 觸發函式類似,但實作的通訊協定可讓您從用戶端程式碼輕鬆呼叫。

如要瞭解如何使用可呼叫函式,請參閱 Cloud Functions 說明文件中的「從應用程式呼叫函式」。

函式定義 (僅限第 1 代)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});

資源宣告 (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

排定函式觸發條件

排定函式會根據可自訂的排程重複執行。

如要瞭解如何編寫排程函式,請參閱 Cloud Functions 說明文件中的「排程函式」。

函式定義 (僅限第 1 代)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});

資源宣告 (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...

以下是 scheduleTrigger 的可用子欄位:

欄位 說明
schedule
(必要)

您希望函式執行的頻率。

這個欄位可接受使用任一語法的字串 (必須以單引號括住):

timeZone
(選填)

排程執行的時區。

如要讓使用者在安裝擴充功能時設定時間表,請在 extension.yaml 檔案中新增參數,並在函式的 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

工作佇列觸發條件

工作佇列函式會在擴充功能的生命週期事件中觸發,或使用 Admin SDK 的 TaskQueue.enqueue() 方法手動新增至擴充功能的工作佇列時觸發。

如要瞭解如何編寫處理生命週期事件的函式,請參閱「處理擴充功能的生命週期事件」。

如要瞭解如何編寫工作佇列函式,請參閱Cloud Functions說明文件中的「使用 Cloud Tasks 將函式加入佇列」。

函式定義 (僅限第 1 代)

import { tasks } from "firebase-functions/v1";

export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});

資源宣告 (extension.yaml)

resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}

taskQueueTrigger 屬性集設為 {} 或選項對應的地圖,用來調整工作佇列的速率限制和重試行為 (請參閱「調整工作佇列」)。

如要在擴充功能的生命週期事件中觸發函式,請加入 lifecycleEvents 記錄,其中包含函式名稱和選用的處理訊息 (處理開始時會顯示在 Firebase 控制台中)。

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

當系統記錄指定的 Analytics 事件時,就會執行 Analytics 觸發的函式。

如要瞭解如何編寫 Analytics 觸發函式,請參閱 Cloud Functions 說明文件中的 Google Analytics 觸發條件

函式定義 (僅限第 1 代)

import { analytics } from "firebase-functions/v1";

export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});

資源宣告 (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: ...

如要讓使用者在安裝擴充功能時,設定 Analytics 事件的監聽對象,請在 extension.yaml 檔案中新增參數,並在函式的 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

建立或刪除使用者時,系統會執行驗證觸發函式。

如要瞭解如何編寫以驗證觸發的函式,請參閱 Cloud Functions 說明文件中的「Firebase 驗證觸發條件」。

函式定義 (僅限第 1 代)

import { auth } from "firebase-functions/v1";

export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});

export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});

資源宣告 (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: ...

下表說明如何指定各支援的 Authentication 事件類型:

Cloud Functions 事件觸發條件 eventType 說明
onCreate() providers/firebase.auth/eventTypes/user.create 已建立新使用者
onDelete() providers/firebase.auth/eventTypes/user.delete 已刪除使用者

Cloud Firestore

當文件建立、更新或刪除時,系統會執行 Cloud Firestore 觸發的函式。

如要瞭解如何編寫由 Firestore 觸發的函式,請參閱 Cloud Functions 說明文件中的「Cloud Firestore 觸發條件」。

函式定義 (僅限第 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.
    // ...
  });

資源宣告 (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: ...

下表說明如何指定各個支援的Cloud Firestore事件類型:

Cloud Functions 事件觸發條件 eventType 說明
onCreate() providers/cloud.firestore/eventTypes/document.create 已建立新文件
onDelete() providers/cloud.firestore/eventTypes/document.delete 文件已刪除
onUpdate() providers/cloud.firestore/eventTypes/document.update 文件已更新
onWrite() providers/cloud.firestore/eventTypes/document.write 文件已建立、刪除或更新

如要讓使用者在安裝擴充功能時設定文件路徑,請在 extension.yaml 檔案中新增參數,並在函式的 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

當訊息發布至特定主題時,系統會執行 Pub/Sub 觸發函式。

如要瞭解如何編寫由 Pub/Sub 觸發的函式,請參閱 Cloud Functions 說明文件中的「Pub/Sub 觸發條件」。

函式定義 (僅限第 1 代)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

資源宣告 (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: ...

如要讓使用者在安裝擴充功能時設定 Pub/Sub 主題,請在 extension.yaml 檔案中新增參數,並在函式的 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

當建立、更新或刪除符合指定模式的路徑時,系統會執行以 Realtime Database 觸發的函式。

如要瞭解如何編寫 RTDB 觸發函式,請參閱 Cloud Functions 說明文件中的「即時資料庫觸發條件」。

函式定義 (僅限第 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.
    // ...
  });

資源宣告 (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: ...

下表說明如何指定各個支援的Cloud Firestore事件類型:

Cloud Functions 事件觸發條件 eventType 說明
onCreate() providers/google.firebase.database/eventTypes/ref.create 建立日期
onDelete() providers/google.firebase.database/eventTypes/ref.delete 資料已刪除
onUpdate() providers/google.firebase.database/eventTypes/ref.update 資料已更新
onWrite() providers/google.firebase.database/eventTypes/ref.write 建立、刪除或更新資料

如要讓使用者在安裝擴充功能時設定要監看的路徑,請在 extension.yaml 檔案中新增參數,並在函式的 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

專案的參數範本更新時,系統會執行遠端設定觸發的函式。

如要瞭解如何編寫遠端設定觸發的函式,請參閱 Cloud Functions 說明文件中的「遠端設定觸發條件」。

函式定義 (僅限第 1 代)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

資源宣告 (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 觸發的函式。

如要瞭解如何編寫由 Storage 觸發的函式,請參閱 Cloud Functions 說明文件中的「Cloud Storage 觸發條件」。

函式定義 (僅限第 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) => {
  // ...
});

資源宣告 (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: ...

下表說明如何指定各個支援的Cloud Storage事件類型:

Cloud Functions 事件觸發條件 eventType 說明
onFinalize() google.storage.object.finalize 已建立物件
onMetadataUpdate() google.storage.object.metadataUpdate 物件中繼資料已更新
onArchive() google.storage.object.archive 已封存物件
onDelete() google.storage.object.delete 物件已刪除

如要讓使用者在安裝擴充功能時設定儲存空間值區,請在 extension.yaml 檔案中新增參數,並在函式的 resource 宣告中參照該參數:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.storage.object.finalize
        resource: projects/_/buckets/${YOUR_BUCKET}
  - name: anotherFunction
    type: ...

params:
  - param: YOUR_BUCKET
    label: Cloud Storage bucket
    description: Which bucket do you want to watch for changes?
    type: selectResource
    resourceType: storage.googleapis.com/Bucket
    default: ${STORAGE_BUCKET}  # Specifying a default is optional.
    required: true

Test Lab

測試矩陣完成測試後,系統會執行 Test Lab 觸發的函式。

如要瞭解如何編寫 Test Lab 觸發的函式,請參閱 Cloud Functions 說明文件中的「Firebase Test Lab 觸發條件」。

函式定義 (僅限第 1 代)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

資源宣告 (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 警示觸發條件

Crashlytics 發布快訊時,系統會執行 Crashlytics 觸發的函式。

如要瞭解如何編寫由快訊觸發的函式,請參閱 Cloud Functions 說明文件中的「Firebase 快訊觸發條件」。

函式定義 (僅限第 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) => {
  // ...
});

資源宣告 (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 使用下列值

  • crashlytics.newFatalIssue
  • crashlytics.newNonfatalIssue
  • crashlytics.regression
  • crashlytics.stabilityDigest
  • crashlytics.velocity
  • crashlytics.newAnrIssue

Performance Monitoring 警示觸發條件

Performance Monitoring 發布快訊時,系統會執行 Performance Monitoring 觸發的函式。

如要瞭解如何編寫由快訊觸發的函式,請參閱 Cloud Functions 說明文件中的「Firebase 快訊觸發條件」。

函式定義 (僅限第 2 代)

import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";

export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});

資源宣告 (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 警示觸發條件

App Distribution 發布快訊時,系統會執行 App Distribution 觸發的函式。

如要瞭解如何編寫由快訊觸發的函式,請參閱 Cloud Functions 說明文件中的「Firebase 快訊觸發條件」。

函式定義 (僅限第 2 代)

import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";

export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});

export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});

資源宣告 (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 使用下列值

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

自訂事件觸發條件 (Eventarc)

當特定事件類型發布至特定管道時,系統會執行 Eventarc 觸發的函式。

如要瞭解如何編寫 Eventarc 觸發函式,請參閱 Cloud Functions 說明文件中的「建立及處理自訂事件觸發條件」。

您也可以從擴充功能發布事件,讓使用者將自訂邏輯插入擴充功能。請參閱「在擴充功能中使用開發人員提供的自訂邏輯」。

函式定義 (僅限第 2 代)

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});

資源宣告 (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: ...

安裝擴充功能時,頻道必須已存在。舉例來說,如果您依賴其他擴充功能建立管道的自訂事件,請先指示使用者安裝該擴充功能。

上述範例會在 us-central1 地區的「default」Firebase 管道中,建立自訂事件觸發條件。你可以使用參數自訂頻道名稱和地區。例如:


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}