Skonfiguruj i użyj parametrów w swoim rozszerzeniu

Parametry to mechanizm, za pomocą którego użytkownik dostosowuje każdą zainstalowaną instancję rozszerzenia. Parametry działają jak zmienne środowiskowe rozszerzenia. Wartości parametrów mogą być wypełniane automatycznie (dostarczane przez Firebase po instalacji) lub konfigurowane przez użytkownika (określane przez użytkownika podczas instalacji).

Do tych parametrów można się odwoływać w kodzie źródłowym funkcji rozszerzenia, w plikach extension.yaml i POSTINSTALL.md . Oto składnia odwoływania się do parametru o nazwie PARAMETER_NAME :

  • W kodzie źródłowym funkcji użyj modułu params (na przykład params.defineInt(" PARAMETER_NAME ") ) lub process.env. PARAMETER_NAME .

  • W extension.yaml i POSTINSTALL.md użyj ${param: PARAMETER_NAME } .

    Po instalacji konsola Firebase wyświetla zawartość pliku POSTINSTALL.md i wypełnia wszelkie odniesienia do parametrów rzeczywistymi wartościami zainstalowanej instancji.

Parametry wypełniane automatycznie

Każda zainstalowana instancja rozszerzenia automatycznie ma dostęp do kilku domyślnych, automatycznie wypełnianych parametrów dostarczonych przez Firebase (patrz tabela poniżej). Te wartości parametrów są albo wartościami domyślnymi dla projektu Firebase (np. domyślny zasobnik pamięci), albo są specyficzne dla rozszerzenia (np. identyfikator instancji rozszerzenia).

Wszystkie automatycznie wypełniane wartości parametrów są niezmienne. Są one ustawiane w momencie tworzenia projektu lub instalacji rozszerzenia.

Mimo że Firebase automatycznie wypełnia te wartości parametrów rozszerzenia, Firebase nie udostępnia użytkownikowi automatycznie powiązanych produktów podczas instalacji . Użytkownik instalujący rozszerzenie musi przed instalacją włączyć w swoim projekcie powiązane i odpowiednie produkty. Na przykład, jeśli Twoje rozszerzenie obejmuje Cloud Firestore, użytkownik musi skonfigurować Cloud Firestore w swoim projekcie. Zalecamy powiadomienie użytkowników o tych wymaganiach w pliku PREINSTALL.md .

Odniesienie do automatycznie wypełnianego parametru Opis Wartość parametru (dostarczona przez Firebase)
Parametry z wartościami domyślnymi z projektu Firebase
PROJECT_ID Unikalny identyfikator projektu Firebase, w którym zainstalowane jest rozszerzenie

Uogólniony format:
project-id

Przykładowa wartość:
project-123

DATABASE_URL Domyślny adres URL instancji bazy danych czasu rzeczywistego projektu Firebase

Uogólniony format:
https:// project-id -default-rtdb.firebaseio.com
(przypadki w USA)
Lub
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(instancje spoza USA)

Przykładowa wartość:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

Domyślna nazwa instancji bazy danych czasu rzeczywistego projektu Firebase

Zwykle ta wartość jest taka sama jak identyfikator projektu lub kończy się na -default-rtdb .

Uogólniony format:
project-id

Przykładowa wartość:
project-123

STORAGE_BUCKET Domyślna nazwa zasobnika Cloud Storage projektu Firebase

Uogólniony format:
project-id .appspot.com

Przykładowa wartość:
project-123.appspot.com

Parametr o wartości domyślnej z instalacji rozszerzenia
EXT_INSTANCE_ID

Unikalny identyfikator zainstalowanej instancji rozszerzenia

Wartość ta jest generowana na podstawie pola name określonego w pliku extension.yaml .

Uogólniony format dla pierwszej zainstalowanej instancji (automatycznie przypisywany przez Firebase; użytkownik nie może modyfikować podczas instalacji):
name-from-extension.yaml

Przykładowa wartość:
my-awesome-extension


Uogólniony format dla drugiej zainstalowanej instancji i nowszych (automatycznie przypisywany przez Firebase; użytkownik może modyfikować podczas instalacji):
name-from-extension.yaml - 4-digit-alphanumeric-hash

Przykładowa wartość:
my-awesome-extension-6m31

Parametry konfigurowane przez użytkownika

Aby umożliwić użytkownikowi dostosowanie każdej zainstalowanej instancji rozszerzenia, możesz poprosić go o określenie wartości parametrów podczas instalacji. Aby zażądać tych wartości, skonfiguruj monity w sekcji params pliku extension.yaml .

Oto przykładowa sekcja params , po której następuje tabela opisująca wszystkie dostępne pola parametrów.

# 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

W sekcji params pliku extension.yaml użyj następujących pól, aby zdefiniować parametr konfigurowany przez użytkownika:

Pole Typ Opis
param
(wymagany)
strunowy Nazwa parametru
label
(wymagany)
strunowy

Krótki opis parametru

Wyświetlane użytkownikowi, gdy zostanie poproszony o podanie wartości parametru

description
(opcjonalny)
strunowy

Szczegółowy opis parametru

Wyświetlane użytkownikowi, gdy zostanie poproszony o podanie wartości parametru

Obsługuje przeceny

type
(opcjonalny)
strunowy

Mechanizm wprowadzania, w jaki sposób użytkownik ustawia wartość parametru (na przykład bezpośrednie wprowadzenie tekstu lub wybór z listy rozwijanej)

Prawidłowe wartości obejmują:

  • string : pozwala na dowolne wprowadzanie tekstu (ograniczone przez validationRegex )
  • select : umożliwia wybór jednego wpisu z predefiniowanej listy opcji. Jeśli określisz tę wartość, musisz także zdefiniować pole options .
  • multiSelect : umożliwia wybór jednego lub więcej wpisów z wcześniej zdefiniowanej listy opcji. Jeśli określisz tę wartość, musisz także zdefiniować pole options .
  • selectResource : umożliwia wybór określonego typu zasobu Firebase (takiego jak zasobnik Cloud Storage) z projektu użytkownika.

    Po określeniu parametru tego typu użytkownicy otrzymają bardziej przyjazny dla użytkownika widżet wyboru w interfejsie użytkownika instalacji; z tego powodu, jeśli to możliwe, używaj parametrów selectResource .

    Jeśli określisz tę wartość, musisz także zdefiniować pole resourceType .

  • secret : umożliwia przechowywanie wrażliwych ciągów znaków, takich jak klucze API dla usług stron trzecich. Wartości te będą przechowywane w Cloud Secret Manager .

    Cloud Secret Manager to usługa płatna, korzystanie z której może wiązać się z opłatami dla użytkowników instalujących Twoje rozszerzenie. Jeśli używasz typu parametru secret , pamiętaj o udokumentowaniu w pliku PREINSTALL , że Twoje rozszerzenie używa Cloud Secret Manager.

Jeśli to pole zostanie pominięte, parametr domyślnie będzie miał type string .

options
(wymagane, jeśli type parametru jest select lub multiSelect )
lista

Lista wartości, spośród których użytkownik może dokonać wyboru

Uwzględnij pola label i value w polu options :

  • label (string) : krótki opis opcji do wyboru
  • value (string) : aktualna wartość opcji do wyboru

Pole value jest wymagane dla pola options .
Jeśli label zostanie pominięta, opcja listy domyślnie wyświetla value .

resourceType
(wymagane, jeśli type parametru selectResource )
strunowy

Typ zasobu Firebase, o którego wybranie ma zostać poproszony użytkownik. Obecnie tylko zasobniki Cloud Storage obsługują selektory zasobów:

Typ zasobu Wpisz identyfikator
Wiadro Cloud Storage storage.googleapis.com/Bucket

Nieznane wartości resourceType zostaną zignorowane, a interfejs użytkownika wyrenderuje parametr jako pole wejściowe w postaci dowolnego string .

example
(opcjonalny)
strunowy

Przykładowa wartość parametru

validationRegex
(opcjonalny)
(ma zastosowanie tylko wtedy, gdy type parametru jest string )
strunowy

Ciąg regularny służący do sprawdzania wartości parametru skonfigurowanej przez użytkownika

Regex jest kompilowany przy użyciu biblioteki go: RE2

Aby uzyskać szczegółowe informacje na temat sprawdzania poprawności, zapoznaj się z sekcją Walidacja i komunikaty o błędach poniżej.

validationErrorMessage
(opcjonalny)
strunowy

Komunikat o błędzie wyświetlany w przypadku niepowodzenia validationRegex

Szczegółowe informacje na temat komunikatów o błędach można znaleźć w sekcji Sprawdzanie poprawności i przesyłanie komunikatów o błędach poniżej.

default
(opcjonalny)
strunowy

Domyślna wartość parametru, jeśli użytkownik pozostawi wartość parametru pustą

Jeśli ma to zastosowanie, możesz określić automatycznie wypełnianą wartość parametru jako wartość default (na przykład zapoznaj się z parametrem IMG_BUCKET rozszerzenia Resize Images ).

required
(opcjonalny)
wartość logiczna

Określa, czy użytkownik może przesłać pusty ciąg znaków, gdy zostanie poproszony o podanie wartości parametru

Jeśli required zostanie pominięte, ta wartość domyślnie przyjmuje wartość true (czyli wymagany parametr).

immutable
(opcjonalny)
wartość logiczna

Określa, czy użytkownik może zmienić wartość parametru po instalacji (na przykład, jeśli ponownie skonfiguruje rozszerzenie)

Jeśli pominięto opcję immutable , ta wartość domyślnie przyjmuje wartość false .

Uwaga: jeśli zdefiniujesz parametr „lokalizacja” dla wdrożonych funkcji swojego rozszerzenia , powinieneś uwzględnić to immutable pole w jego obiekcie param.

Walidacja i przesyłanie komunikatów o błędach dla wartości skonfigurowanych przez użytkownika

Kiedy ustawiasz parametr type string , musisz zdefiniować odpowiednią walidację wyrażenia regularnego za pomocą pola validationRegex parametru.

Ponadto w przypadku wielu rozszerzeń często wymaganą wartością parametru jest ścieżka do bazy danych lub zasobnik Cloud Storage. Należy pamiętać, że podczas instalacji, rekonfiguracji lub aktualizacji usługa rozszerzeń nie sprawdza następujących elementów w momencie wprowadzania wartości parametrów:

  • Określa, czy określona baza danych lub zasobnik Cloud Storage jest skonfigurowany w projekcie Firebase użytkownika
  • Określa, czy określona ścieżka bazy danych istnieje w bazie danych użytkownika

Jeśli jednak rozszerzenie faktycznie wdraża swoje zasoby, konsola Firebase lub interfejs CLI Firebase wyświetli komunikat o błędzie, jeśli przywoływana baza danych lub zasobnik Cloud Storage nie jest jeszcze skonfigurowany w projekcie.

Zdecydowanie zalecamy powiadomienie użytkowników w pliku PREINSTALL o tych wymaganiach, aby po zainstalowaniu rozszerzenia zostało ono pomyślnie zainstalowane i działało zgodnie z oczekiwaniami.

Parametry systemu

Parametry systemowe kontrolują podstawową konfigurację zasobów rozszerzenia. Ponieważ mają one na celu kontrolowanie konfiguracji zasobów, nie są dostępne jako zmienne środowiskowe z poziomu kodu funkcji.

Zwykle nie musisz deklarować niczego dla tych parametrów w extension.yaml . Są one automatycznie definiowane dla każdej instancji rozszerzenia, a użytkownicy mają możliwość ustawienia niestandardowych wartości podczas instalowania rozszerzenia.

Jeśli jednak Twoje rozszerzenie ma specjalne wymagania dotyczące zasobów, możesz ustawić określone wartości na poziomie poszczególnych zasobów w extension.yaml . Te ustawienia konfiguracji dla poszczególnych zasobów zastąpią ustawienia dotyczące całej instancji rozszerzenia użytkownika. Na przykład:

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

Dostępne parametry systemu to:

Nazwa Etykieta (przyjazna dla człowieka) Odpowiednie pole we properties Opis
firebaseextensions.v1beta.function/location Lokalizacja location W jakim regionie należy wdrożyć Cloud Functions?
firebaseextensions.v1beta.function/memory Pamięć funkcji memory Ile megabajtów pamięci należy przydzielić każdej funkcji?
firebaseextensions.v1beta.function/timeoutSeconds Limit czasu funkcji timeout Ile sekund powinny działać funkcje, zanim upłynie limit czasu?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Wyjście łącznika VPC vpcConnectorEgressSettings Kontroluje ruch wychodzący, gdy skonfigurowany jest łącznik VPC
firebaseextensions.v1beta.function/vpcConnector Złącze VPC vpcConnector Łączy Cloud Functions z określonym łącznikiem VPC.
firebaseextensions.v1beta.function/minInstances Minimalne instancje funkcji minInstances Minimalna liczba wystąpień tej funkcji do jednoczesnego uruchomienia
firebaseextensions.v1beta.function/maxInstances Maksymalna liczba instancji funkcji maxInstances Maksymalna liczba wystąpień tej funkcji, które można uruchomić jednocześnie
firebaseextensions.v1beta.function/ingressSettings Ustawienia wejścia ingressSettings Kontroluje, skąd akceptowany jest ruch przychodzący
firebaseextensions.v1beta.function/labels Etykiety labels Etykiety, które mają zostać zastosowane do wszystkich zasobów w rozszerzeniu