參數是用戶自訂擴充功能的每個已安裝實例的機制。參數就像擴展的環境變數。參數值可以自動填入(由 Firebase 安裝後提供)或使用者配置(由使用者在安裝過程中指定)。
您可以在擴充功能的函數原始碼、 extension.yaml
檔案和POSTINSTALL.md
檔案中引用這些參數。以下是如何引用名為PARAMETER_NAME
的參數的語法:
在函數原始碼中,使用
params
模組(例如params.defineInt(" PARAMETER_NAME ")
)或process.env. PARAMETER_NAME
。在
extension.yaml
和POSTINSTALL.md
中,使用${param: PARAMETER_NAME }
。安裝後,Firebase 控制台會顯示
POSTINSTALL.md
檔案的內容,並使用已安裝實例的實際值填入所有參數參考。
自動填充參數
每個已安裝的擴充功能實例都可以自動存取 Firebase 提供的多個預設自動填入參數(請參閱下表)。這些參數值要么是 Firebase 項目的預設值(如預設儲存桶),要么是特定於擴充功能的值(如擴充功能的實例 ID)。
所有自動填入的參數值都是不可變的。它們是在專案建立或擴充安裝時設定的。
儘管 Firebase 會自動填入擴充功能的這些參數值,但 Firebase 不會在安裝過程中為使用者自動配置關聯的產品。安裝擴充功能的使用者必須在安裝之前在其項目中啟用關聯且適用的產品。例如,如果您的擴充功能涉及 Cloud Firestore,則使用者必須在其專案中設定 Cloud Firestore 。我們建議您在PREINSTALL.md
檔案中通知您的使用者這些要求。
自動填充參數參考 | 描述 | 參數值(由 Firebase 提供) |
---|---|---|
具有來自 Firebase 專案的預設值的參數 | ||
PROJECT_ID | 安裝擴充功能的 Firebase 專案的唯一標識符 | 通用格式: 範例值: |
DATABASE_URL | Firebase 專案的預設即時資料庫執行個體 URL | 通用格式: 範例值: |
DATABASE_INSTANCE | Firebase 專案的預設即時資料庫執行個體名稱 通常,該值與項目 ID 相同,或以 | 通用格式: 範例值: |
STORAGE_BUCKET | Firebase 專案的預設Cloud Storage 儲存分區名稱 | 通用格式: 範例值: |
擴充安裝中具有預設值的參數 | ||
EXT_INSTANCE_ID | 已安裝擴充實例的唯一標識符 該值是根據 | 第一個安裝實例的通用格式(由 Firebase 自動分配;使用者在安裝過程中無法修改): 範例值: 第二個安裝實例及以上實例的通用格式(由 Firebase 自動分配;使用者可以在安裝過程中進行修改): 範例值: |
使用者配置的參數
若要使用戶能夠自訂擴充功能的每個已安裝實例,您可以要求使用者在安裝過程中指定參數值。若要請求這些值,您可以在extension.yaml
檔案的params
部分中設定提示。
下面是一個範例params
部分,後面是描述所有可用參數欄位的表格。
# extension.yaml
...
# Parameters (environment variables) for which the user specifies values during installation
params:
- param: DB_PATH
label: Realtime Database path
description: >-
What is the Realtime Database path where you will write new text
for sentiment analysis?
type: string
validationRegex: ^\S+$
validationErrorMessage: Realtime Database path cannot contain spaces.
example: path/to/posts
required: true
- param: TEXT_KEY
label: Key for text
description: What is the name of the key that will contain text to be analyzed?
type: string
default: textToAnalyze
required: true
在extension.yaml
檔案的params
部分中,使用下列欄位來定義使用者配置的參數:
場地 | 類型 | 描述 | ||||
---|---|---|---|---|---|---|
param (必需的) | 細繩 | 參數名稱 | ||||
label (必需的) | 細繩 | 參數的簡短描述 當提示使用者輸入參數值時向使用者顯示 | ||||
description (選修的) | 細繩 | 參數詳細說明 當提示使用者輸入參數值時向使用者顯示 支持降價 | ||||
type (選修的) | 細繩 | 使用者如何設定參數值的輸入機制(例如,直接輸入文字或從下拉清單中選擇) 有效值包括以下內容:
如果省略該字段,則參數預設為 | ||||
options (如果參數 type 為select 或multiSelect 則為必需) | 清單 | 使用者可以從中選擇的值列表 在
| ||||
resourceType (如果參數 type 為selectResource 則為必要) | 細繩 | 提示使用者選擇的 Firebase 資源類型。目前,僅 Cloud Storage 儲存桶支援資源選擇器:
未知的 | ||||
example (選修的) | 細繩 | 參數值範例 | ||||
validationRegex (選修的) (僅當參數 type 為string 時適用) | 細繩 | 用於驗證參數的使用者配置值的正規表示式字串 正規表示式是使用go函式庫編譯的:RE2 有關驗證的詳細信息,請參閱下面的驗證和錯誤訊息。 | ||||
validationErrorMessage (選修的) | 細繩 |
有關錯誤訊息傳遞的詳細信息,請參閱下面的驗證和錯誤訊息傳遞。 | ||||
default (選修的) | 細繩 | 如果使用者將參數值留空,則參數的預設值 | ||||
required (選修的) | 布林值 | 定義當提示使用者輸入參數值時是否可以提交空字串 如果省略 | ||||
immutable (選修的) | 布林值 | 定義使用者是否可以在安裝後更改參數的值(例如,如果他們重新配置擴充功能) 如果省略 注意:如果您為擴充功能的部署函數定義了「位置」參數,那麼您應該在其參數物件中包含這個 |
用戶配置值的驗證和錯誤訊息傳遞
當您設定string
type
的參數時,您需要透過參數的validationRegex
欄位定義適當的正規表示式驗證。
此外,對於許多擴充功能來說,通常請求的參數值是資料庫路徑或 Cloud Storage 儲存桶。請注意,在安裝、重新配置或更新期間,擴充服務不會在輸入參數值時驗證以下內容:
- 指定的資料庫或 Cloud Storage 儲存桶是否在使用者的 Firebase 專案中設定
- 指定的資料庫路徑是否存在於使用者的資料庫中
但是,當擴充功能實際部署其資源時,如果專案中尚未設定引用的資料庫或 Cloud Storage 儲存桶,Firebase 控制台或 Firebase CLI 將顯示錯誤訊息。
我們強烈建議您在PREINSTALL
檔案中通知使用者這些要求,以便他們在安裝您的擴充功能時,能夠成功安裝並按預期工作。
系統參數
系統參數控制分機資源的基本配置。由於它們旨在控制資源配置,因此無法從函數程式碼中將它們作為環境變數進行存取。
您通常不需要在extension.yaml
中為這些參數宣告任何內容。它們是為每個擴充實例自動定義的,用戶有機會在安裝擴充功能時設定自訂值。
但是,如果您的擴充功能有特殊的資源需求,您可以在extension.yaml
中的每個資源層級設定特定值。這些每個資源的配置設定將覆蓋使用者的擴展實例範圍的設定。例如:
resources:
- name: high_memory_function
type: firebaseextensions.v1beta.function
description: >-
This function needs at least 1GB of memory!
properties:
httpsTrigger: {}
runtime: nodejs18
availableMemoryMb: 1024
- name: normal_function
type: firebaseextensions.v1beta.function
description: >-
This function has no special memory requirements. It will use the
default value, or the value of `firebaseextension.v1beta.function/memory`
properties:
httpsTrigger: {}
runtime: nodejs18
可用的系統參數有:
姓名 | 標籤(人類友善) | properties 中對應字段 | 描述 |
---|---|---|---|
firebaseextensions.v1beta.功能/位置 | 地點 | location | 雲端函數應該部署到什麼區域? |
firebaseextensions.v1beta.函數/內存 | 功能記憶 | memory | 應為每個函數分配多少兆位元組的記憶體? |
firebaseextensions.v1beta.function/timeoutSeconds | 函數逾時 | timeout | 函數在超時之前應該運行多少秒? |
firebaseextensions.v1beta.function/vpcConnectorEgressSettings | VPC 連接器出口 | vpcConnectorEgressSettings | 配置 VPC 連接器時控制傳出流量 |
firebaseextensions.v1beta.function/vpcConnector | 專有網路連接器 | vpcConnector | 將 Cloud Functions 連接到指定的 VPC 連接器。 |
firebaseextensions.v1beta.function/minInstances | 最小函數實例 | minInstances | 一次運行該函數的最小實例數 |
firebaseextensions.v1beta.function/maxInstances | 最大函數實例數 | maxInstances | 一次運行此函數的最大實例數 |
firebaseextensions.v1beta.function/ingressSettings | 入口設置 | ingressSettings | 控制從何處接受傳入流量 |
firebaseextensions.v1beta.function/labels | 標籤 | labels | 適用於擴充功能中所有資源的標籤 |