Thiết lập và sử dụng các tham số trong tiện ích mở rộng của bạn

Tham số là cơ chế mà qua đó người dùng tùy chỉnh từng phiên bản được cài đặt của tiện ích mở rộng. Các tham số giống như các biến môi trường cho một tiện ích mở rộng. Các giá trị cho tham số có thể được tự động điền (do Firebase cung cấp sau khi cài đặt) hoặc do người dùng định cấu hình (do người dùng chỉ định trong khi cài đặt).

Các tham số này có sẵn để bạn tham khảo trong mã nguồn chức năng của tiện ích mở rộng, tệp tiện ích extension.yaml và tệp POSTINSTALL.md của bạn. Đây là cú pháp về cách tham chiếu một tham số có tên PARAMETER_NAME :

  • Trong mã nguồn hàm của bạn, hãy sử dụng mô-đun params (ví dụ: params.defineInt(" PARAMETER_NAME ") ) hoặc process.env. PARAMETER_NAME .

  • Trong extension.yamlPOSTINSTALL.md , hãy sử dụng ${param: PARAMETER_NAME } .

    Sau khi cài đặt, bảng điều khiển Firebase hiển thị nội dung của tệp POSTINSTALL.md và điền bất kỳ tham chiếu tham số nào với các giá trị thực tế cho phiên bản đã cài đặt.

Thông số tự động điền

Mỗi phiên bản tiện ích mở rộng đã cài đặt sẽ tự động có quyền truy cập vào một số thông số được điền tự động mặc định do Firebase cung cấp (tham khảo bảng bên dưới). Các giá trị tham số này là giá trị mặc định cho dự án Firebase (như nhóm Bộ nhớ mặc định ) hoặc chúng dành riêng cho tiện ích mở rộng (như ID phiên bản của tiện ích mở rộng).

Tất cả các giá trị tham số được điền tự động đều không thể thay đổi. Chúng được đặt tại thời điểm tạo dự án hoặc cài đặt tiện ích mở rộng.

Mặc dù Firebase tự động điền các giá trị thông số này cho tiện ích mở rộng nhưng Firebase không tự động cung cấp các sản phẩm được liên kết cho người dùng trong quá trình cài đặt . Người dùng cài đặt tiện ích mở rộng phải kích hoạt (các) sản phẩm được liên kết và áp dụng trong dự án của họ trước khi cài đặt. Ví dụ: nếu tiện ích mở rộng của bạn liên quan đến Cloud Firestore, người dùng phải thiết lập Cloud Firestore trong dự án của họ. Chúng tôi khuyên bạn nên thông báo cho người dùng của mình về những yêu cầu này trong tệp PREINSTALL.md .

Tham chiếu cho thông số được điền tự động Sự miêu tả Giá trị tham số (do Firebase cung cấp)
Các tham số có giá trị mặc định từ dự án Firebase
PROJECT_ID Giá trị nhận dạng duy nhất cho dự án Firebase có cài đặt tiện ích mở rộng

Dạng tổng quát:
project-id

Giá trị ví dụ:
project-123

DATABASE_URL URL phiên bản Cơ sở dữ liệu thời gian thực mặc định của dự án Firebase

Dạng tổng quát:
https:// project-id -default-rtdb.firebaseio.com
(Trường hợp của Hoa Kỳ)
hoặc
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(các trường hợp không ở Hoa Kỳ)

Giá trị ví dụ:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

Tên phiên bản Cơ sở dữ liệu thời gian thực mặc định của dự án Firebase

Thông thường, giá trị này giống với ID dự án hoặc kết thúc bằng -default-rtdb .

Dạng tổng quát:
project-id

Giá trị ví dụ:
project-123

STORAGE_BUCKET Tên nhóm Lưu trữ đám mây mặc định của dự án Firebase

Dạng tổng quát:
project-id .appspot.com

Giá trị ví dụ:
project-123.appspot.com

Tham số có giá trị mặc định từ cài đặt tiện ích mở rộng
EXT_INSTANCE_ID

Mã định danh duy nhất cho phiên bản tiện ích mở rộng đã cài đặt

Giá trị này được tạo từ trường name được chỉ định trong tệp extension.yaml .

Định dạng chung cho phiên bản được cài đặt đầu tiên (được Firebase gán tự động; người dùng không thể sửa đổi trong khi cài đặt):
name-from-extension.yaml

Giá trị ví dụ:
my-awesome-extension


Định dạng chung cho phiên bản được cài đặt lần thứ 2 trở lên (được Firebase gán tự động; có thể được người dùng sửa đổi trong quá trình cài đặt):
name-from-extension.yaml - 4-digit-alphanumeric-hash

Giá trị ví dụ:
my-awesome-extension-6m31

Thông số do người dùng định cấu hình

Để cho phép người dùng tùy chỉnh từng phiên bản đã cài đặt của tiện ích mở rộng, bạn có thể yêu cầu người dùng chỉ định các giá trị tham số trong khi cài đặt. Để yêu cầu những giá trị này, bạn thiết lập lời nhắc trong phần params của tệp extension.yaml .

Sau đây là phần params ví dụ, theo sau là bảng mô tả tất cả các trường thông số có sẵn.

# 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

Trong phần params của tệp extension.yaml , hãy sử dụng các trường sau để xác định tham số do người dùng định cấu hình:

Cánh đồng Kiểu Sự miêu tả
param
(yêu cầu)
sợi dây Tên của tham số
label
(yêu cầu)
sợi dây

Mô tả ngắn gọn cho tham số

Hiển thị cho người dùng khi họ được nhắc về giá trị của tham số

description
(không bắt buộc)
sợi dây

Mô tả chi tiết cho tham số

Hiển thị cho người dùng khi họ được nhắc về giá trị của tham số

Hỗ trợ đánh dấu

type
(không bắt buộc)
sợi dây

Cơ chế nhập liệu về cách người dùng đặt giá trị của tham số (ví dụ: nhập văn bản trực tiếp hoặc chọn từ danh sách thả xuống)

Các giá trị hợp lệ bao gồm:

  • string : cho phép nhập văn bản dạng tự do (được giới hạn bởi validationRegex của bạn)
  • select : cho phép chọn một mục từ danh sách tùy chọn được xác định trước. Nếu bạn chỉ định giá trị này, bạn cũng phải xác định trường options .
  • multiSelect : cho phép chọn một hoặc nhiều mục từ danh sách tùy chọn được xác định trước. Nếu bạn chỉ định giá trị này, bạn cũng phải xác định trường options .
  • selectResource : cho phép chọn một loại tài nguyên Firebase cụ thể (chẳng hạn như nhóm Lưu trữ đám mây) từ dự án của người dùng.

    Khi bạn chỉ định một tham số thuộc loại này, người dùng sẽ nhận được tiện ích lựa chọn thân thiện hơn với người dùng trong giao diện người dùng cài đặt; vì lý do này, hãy sử dụng tham số selectResource bất cứ khi nào có thể.

    Nếu bạn chỉ định giá trị này, bạn cũng phải xác định trường resourceType .

  • secret : cho phép lưu trữ các chuỗi nhạy cảm, chẳng hạn như khóa API cho dịch vụ của bên thứ ba. Những giá trị này sẽ được lưu trữ trong Cloud Secret Manager .

    Cloud Secret Manager là một dịch vụ trả phí, việc sử dụng dịch vụ này có thể khiến người dùng cài đặt tiện ích mở rộng của bạn bị tính phí. Nếu bạn sử dụng loại tham số secret , hãy nhớ ghi lại trong tệp PREINSTALL rằng tiện ích mở rộng của bạn sử dụng Cloud Secret Manager.

Nếu trường này bị bỏ qua, tham số mặc định là type string .

options
(bắt buộc nếu type tham số là select hoặc multiSelect )
danh sách

Danh sách các giá trị mà người dùng có thể chọn

Bao gồm các trường labelvalue trong trường options :

  • label (chuỗi) : mô tả ngắn gọn về tùy chọn có thể chọn
  • value (string) : giá trị thực của tùy chọn có thể chọn

Trường value là bắt buộc đối với trường options .
Nếu label bị bỏ qua, tùy chọn danh sách sẽ mặc định hiển thị value .

resourceType
(bắt buộc nếu type tham số là selectResource )
sợi dây

Loại tài nguyên Firebase để nhắc người dùng chọn. Hiện tại, chỉ có nhóm Cloud Storage mới hỗ trợ bộ chọn tài nguyên:

Loại tài nguyên ID loại
Nhóm lưu trữ đám mây storage.googleapis.com/Bucket

Các giá trị resourceType không xác định sẽ bị bỏ qua và giao diện người dùng sẽ hiển thị tham số dưới dạng trường nhập string dạng tự do.

example
(không bắt buộc)
sợi dây

Giá trị ví dụ cho tham số

validationRegex
(không bắt buộc)
(chỉ áp dụng khi type tham số là string )
sợi dây

Chuỗi Regex để xác thực giá trị do người dùng định cấu hình của tham số

Regex được biên dịch bằng thư viện go: RE2

Để biết chi tiết về xác thực, hãy tham khảo Xác thực và thông báo lỗi bên dưới.

validationErrorMessage
(không bắt buộc)
sợi dây

Thông báo lỗi hiển thị nếu validationRegex không thành công

Để biết chi tiết về thông báo lỗi, hãy tham khảo phần Xác thực và thông báo lỗi bên dưới.

default
(không bắt buộc)
sợi dây

Giá trị mặc định cho tham số nếu người dùng để trống giá trị của tham số

Nếu có thể, bạn có thể chỉ định giá trị tham số được điền tự động cho giá trị default (ví dụ: tham khảo tham số IMG_BUCKET của tiện ích mở rộng Resize Images ).

required
(không bắt buộc)
boolean

Xác định xem người dùng có thể gửi một chuỗi trống hay không khi họ được nhắc nhập giá trị của tham số

Nếu required bắt buộc, giá trị này mặc định là true (nghĩa là tham số bắt buộc).

immutable
(không bắt buộc)
boolean

Xác định xem người dùng có thể thay đổi giá trị của tham số sau khi cài đặt hay không (ví dụ: nếu họ định cấu hình lại tiện ích mở rộng)

Nếu immutable bị bỏ qua, giá trị này mặc định là false .

Lưu ý: Nếu bạn xác định tham số "vị trí" cho các chức năng được triển khai của tiện ích mở rộng thì bạn nên đưa trường immutable này vào đối tượng param của nó.

Xác thực và thông báo lỗi cho các giá trị do người dùng định cấu hình

Khi thiết lập một tham số có type string , bạn cần xác định xác thực biểu thức chính quy phù hợp thông qua trường validationRegex của tham số.

Ngoài ra, đối với nhiều tiện ích mở rộng, giá trị tham số thường được yêu cầu là đường dẫn cơ sở dữ liệu hoặc nhóm Cloud Storage. Xin lưu ý rằng trong quá trình cài đặt, định cấu hình lại hoặc cập nhật, dịch vụ Tiện ích mở rộng không xác thực các mục sau tại thời điểm nhập giá trị tham số :

  • Liệu cơ sở dữ liệu đã chỉ định hoặc nhóm Cloud Storage có được thiết lập trong dự án Firebase của người dùng hay không
  • Liệu đường dẫn cơ sở dữ liệu đã chỉ định có tồn tại trong cơ sở dữ liệu của người dùng hay không

Tuy nhiên, khi tiện ích mở rộng thực sự triển khai tài nguyên của nó, bảng điều khiển Firebase hoặc Firebase CLI sẽ hiển thị thông báo lỗi nếu cơ sở dữ liệu được tham chiếu hoặc nhóm Cloud Storage chưa được thiết lập trong dự án.

Chúng tôi thực sự khuyên bạn nên thông báo cho người dùng trong tệp PREINSTALL về các yêu cầu này để khi họ cài đặt tiện ích mở rộng của bạn, tiện ích sẽ cài đặt thành công và hoạt động như mong đợi.

Hệ thống tham số toán học

Các tham số hệ thống kiểm soát cấu hình cơ bản của tài nguyên tiện ích mở rộng. Vì chúng nhằm mục đích kiểm soát cấu hình tài nguyên nên chúng không thể truy cập được dưới dạng biến môi trường từ bên trong mã hàm của bạn.

Thông thường, bạn không cần khai báo bất kỳ điều gì cho các tham số này trong extension.yaml . Chúng được xác định tự động cho mọi phiên bản tiện ích mở rộng và người dùng có cơ hội đặt giá trị tùy chỉnh khi họ cài đặt tiện ích mở rộng của bạn.

Tuy nhiên, nếu tiện ích mở rộng của bạn có yêu cầu tài nguyên đặc biệt, bạn có thể đặt các giá trị cụ thể ở cấp độ mỗi tài nguyên trong extension.yaml . Các cài đặt cấu hình cho mỗi tài nguyên này sẽ ghi đè cài đặt trên toàn phiên bản tiện ích mở rộng của người dùng. Ví dụ:

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

Các thông số hệ thống có sẵn là:

Tên Nhãn (thân thiện với con người) Trường tương ứng trong properties Sự miêu tả
firebaseextensions.v1beta.function/location Vị trí location Chức năng đám mây nên được triển khai ở khu vực nào?
firebaseextensions.v1beta.function/memory Bộ nhớ chức năng memory Cần phân bổ bao nhiêu megabyte bộ nhớ cho mỗi chức năng?
firebaseextensions.v1beta.function/timeoutSeconds Hết thời gian chờ chức năng timeout Các chức năng sẽ chạy bao nhiêu giây trước khi hết thời gian chờ?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Đầu ra kết nối VPC vpcConnectorEgressSettings Kiểm soát lưu lượng đi khi cấu hình trình kết nối VPC
firebaseextensions.v1beta.function/vpcConnector Đầu nối VPC vpcConnector Kết nối Chức năng đám mây với trình kết nối VPC được chỉ định.
firebaseextensions.v1beta.function/minInstances Các trường hợp hàm tối thiểu minInstances Số phiên bản tối thiểu của hàm này để chạy cùng một lúc
firebaseextensions.v1beta.function/maxInstances Trường hợp chức năng tối đa maxInstances Số phiên bản tối đa của hàm này có thể chạy cùng một lúc
firebaseextensions.v1beta.function/ingressSettings Cài đặt xâm nhập ingressSettings Kiểm soát nơi chấp nhận lưu lượng truy cập đến
firebaseextensions.v1beta.function/labels Nhãn labels Nhãn để áp dụng cho tất cả tài nguyên trong tiện ích mở rộng