Konfigurowanie i używanie parametrów w rozszerzeniu

Parametry to mechanizm, za pomocą którego użytkownik dostosowuje każdą zainstalowaną instancję rozszerzenia. Parametry są 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).

Te parametry są dostępne do użycia w kodzie źródłowym funkcji rozszerzenia, pliku extension.yaml i pliku 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 (np. params.defineInt("PARAMETER_NAME")) lub process.env.PARAMETER_NAME.

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

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

Parametry wypełniane automatycznie

Każda zainstalowana instancja rozszerzenia ma automatycznie dostęp do kilku domyślnych parametrów wypełnianych automatycznie przez Firebase (patrz tabela poniżej). Wartości tych parametrów to domyślne wartości projektu Firebase (np. domyślny zasobnik Cloud Storage) lub wartości specyficzne dla rozszerzenia (np. identyfikator instancji rozszerzenia).

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

Mimo że Firebase automatycznie wypełnia te wartości parametrów dla rozszerzenia, Firebase nie udostępnia automatycznie powiązanych usług dla użytkownika podczas instalacji. Użytkownik instalujący rozszerzenie musi przed instalacją włączyć w projekcie powiązane i odpowiednie usługi. Jeśli na przykład rozszerzenie korzysta z Cloud Firestore, użytkownik musi skonfigurować Cloud Firestore w swoim projekcie. Zalecamy poinformowanie użytkowników o tych wymaganiach w pliku PREINSTALL.md.

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

Format ogólny:
project-id

Przykładowa wartość:
project-123

DATABASE_URL Adres URL domyślnej Realtime Database instancji projektu Firebase

Format ogólny:
https://project-id-default-rtdb.firebaseio.com
(instancje w USA)
lub
https://project-id-default-rtdb.region-code.firebasedatabase.app
(instancje poza USA)

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

DATABASE_INSTANCE

Nazwa domyślnej Realtime Database instancji projektu Firebase

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

Format ogólny:
project-id

Przykładowa wartość:
project-123

STORAGE_BUCKET Nazwa domyślnego zasobnika Cloud Storage projektu Firebase

Format ogólny:
PROJECT_ID.firebasestorage.app

Przykładowa wartość:
project-123.firebasestorage.app

Parametr z wartością domyślną z instalacji rozszerzenia
EXT_INSTANCE_ID

Unikalny identyfikator zainstalowanej instancji rozszerzenia

Ta wartość jest generowana na podstawie name pola określonego w pliku extension.yaml.

Format ogólny dla 1. zainstalowanej instancji (przypisywany automatycznie przez Firebase; nie można go modyfikować przez użytkownika podczas instalacji):
name-from-extension.yaml

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


Format ogólny dla 2. i kolejnych zainstalowanych instancji (przypisywany automatycznie przez Firebase; można go modyfikować przez użytkownika 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 podanie wartości parametrów podczas instalacji. Aby poprosić o te wartości, skonfiguruj prośby w sekcji params pliku extension.yaml.

Oto przykład sekcji params oraz 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 tych pól, aby zdefiniować parametr konfigurowany przez użytkownika:

Pole Typ Opis
param
(wymagane)
ciąg znaków Nazwa parametru
label
(wymagane)
ciąg znaków

Krótki opis parametru

Wyświetlany użytkownikowi, gdy jest on proszony o podanie wartości parametru

description
(opcjonalne)
ciąg znaków

Szczegółowy opis parametru

Wyświetlany użytkownikowi, gdy jest on proszony o podanie wartości parametru

Obsługuje Markdown

type
(opcjonalne)
ciąg znaków

Mechanizm wprowadzania, za pomocą którego użytkownik ustawia wartość parametru (for example, enter text directly or select from dropdown list)

Prawidłowe wartości:

  • string: umożliwia wprowadzanie tekstu w dowolnym formacie (ograniczone przez validationRegex)
  • select: umożliwia wybranie jednej pozycji z predefiniowanej listy opcji. Jeśli określisz tę wartość, musisz też zdefiniować pole options.
  • multiSelect: umożliwia wybranie co najmniej 1 pozycji z predefiniowanej listy opcji. Jeśli określisz tę wartość, musisz też zdefiniować pole options.
  • selectResource: umożliwia wybranie określonego typu zasobu Firebase (np. zasobnika Cloud Storage) z projektu użytkownika.

    Gdy określisz parametr tego typu, użytkownicy zobaczą w interfejsie instalacji bardziej przyjazny dla użytkownika widget wyboru. Z tego powodu używaj parametrów selectResource gdy tylko jest to możliwe.

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

  • secret: umożliwia przechowywanie poufnych ciągów znaków, takich jak klucze API do usług innych firm. Te wartości będą przechowywane w Cloud Secret Manager.

    Cloud Secret Manager to usługa płatna, której używanie 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, aby w pliku PREINSTALL udokumentować, że rozszerzenie korzysta z Cloud Secret Manager.

Jeśli to pole zostanie pominięte, parametr domyślnie przyjmie wartość type równą string.

options
(wymagane, jeśli parametr type ma wartość select lub multiSelect)
list

Lista wartości, z których użytkownik może wybrać

W polu options uwzględnij pola label i value:

  • label (ciąg znaków): krótki opis opcji do wyboru

Pole value jest wymagane w przypadku pola options field.
Jeśli label zostanie pominięte, opcja listy domyślnie wyświetli value.

resourceType
(wymagane, jeśli parametr type ma wartość selectResource)
ciąg znaków

Typ zasobu Firebase, który ma wybrać użytkownik. Obecnie selektory zasobów obsługują tylko zasobniki Cloud Storage:

Typ zasobu Identyfikator typu
Cloud Storage zasobnik storage.googleapis.com/Bucket

Nieznane resourceType wartości będą ignorowane, a interfejs użytkownika wyświetli parametr jako pole wejściowe string w dowolnym formacie.

example
(opcjonalne)
ciąg znaków

Przykładowa wartość parametru

validationRegex
(opcjonalne)
(dotyczy tylko sytuacji, gdy parametr type ma string)
ciąg znaków

Ciąg wyrażenia regularnego do weryfikacji wartości parametru skonfigurowanej przez użytkownika

Wyrażenie regularne jest kompilowane za pomocą biblioteki go: RE2

Więcej informacji o weryfikacji znajdziesz w sekcji Weryfikacja i komunikaty o błędach poniżej.

validationErrorMessage
(opcjonalne)
ciąg znaków

Komunikat o błędzie, który ma się wyświetlać, jeśli validationRegex nie powiedzie się

Więcej informacji o komunikatach o błędach znajdziesz w sekcji Weryfikacja i komunikaty o błędach poniżej.

default
(opcjonalne)
ciąg znaków

Domyślna wartość parametru, jeśli użytkownik pozostawi pole wartości parametru puste

W razie potrzeby możesz określić wartość parametru wypełnianego automatycznie jako wartość default (przykład znajdziesz w parametrze IMG_BUCKET rozszerzenia Resize Images).

required
(opcjonalne)
Wartość logiczna

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

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

immutable
(opcjonalne)
Wartość logiczna

Określa, czy użytkownik może zmienić wartość parametru po instalacji (np. jeśli ponownie skonfiguruje rozszerzenie)

Jeśli immutable zostanie pominięte, ta wartość domyślnie przyjmie wartość false.

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

Weryfikacja i komunikaty o błędach dotyczące wartości konfigurowanych przez użytkownika

Gdy konfigurujesz parametr z type równym string, musisz zdefiniować odpowiednią weryfikację za pomocą wyrażenia regularnego w polu parametru validationRegex.

W przypadku wielu rozszerzeń często żądaną wartością parametru jest ścieżka do bazy danych lub zasobnik Cloud Storage. Pamiętaj, że podczas instalacji, ponownej konfiguracji lub aktualizacji usługa Extensionsnie weryfikuje tych elementów w momencie wprowadzania wartości parametru:

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

Gdy jednak rozszerzenie faktycznie wdraża swoje zasoby, konsola Firebase lub interfejs wiersza poleceń Firebase wyświetli komunikat o błędzie, jeśli baza danych lub zasobnik Cloud Storage, do którego się odwołuje, nie jest jeszcze skonfigurowany w projekcie.

Zdecydowanie zalecamy poinformowanie użytkowników o tych wymaganiach w pliku PREINSTALL, aby podczas instalacji rozszerzenia zostało ono zainstalowane i działało zgodnie z oczekiwaniami.

Parametry systemowe

Parametry systemowe kontrolują podstawową konfigurację zasobów rozszerzenia. Ponieważ mają one kontrolować konfigurację zasobów, nie są dostępne jako zmienne środowiskowe w kodzie funkcji.

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

Jeśli jednak rozszerzenie ma specjalne wymagania dotyczące zasobów, możesz ustawić określone wartości na poziomie poszczególnych zasobów w pliku extension.yaml. Te ustawienia konfiguracji poszczególnych zasobów zastąpią ustawienia użytkownika dotyczące całej instancji rozszerzenia. 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 systemowe:

Nazwa Etykieta (czytelna dla człowieka) Odpowiednie pole w properties Opis
firebaseextensions.v1beta.function/location Lokalizacja location W jakim regionie mają zostać wdrożone funkcje w 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 Po ilu sekundach funkcje mają przekroczyć limit czasu?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Ruch wychodzący oprogramowania sprzęgającego VPC vpcConnectorEgressSettings Kontroluje ruch wychodzący, gdy skonfigurowane jest oprogramowanie sprzęgające VPC
firebaseextensions.v1beta.function/vpcConnector Oprogramowanie sprzęgające VPC vpcConnector Łączy funkcje w Cloud Functions z określonym oprogramowaniem sprzęgającym VPC.
firebaseextensions.v1beta.function/minInstances Minimalna liczba instancji funkcji minInstances Minimalna liczba instancji tej funkcji, które mają być uruchomione jednocześnie
firebaseextensions.v1beta.function/maxInstances Maksymalna liczba instancji funkcji maxInstances Maksymalna liczba instancji tej funkcji, które mają być uruchomione jednocześnie
firebaseextensions.v1beta.function/ingressSettings Ustawienia ruchu przychodzącego ingressSettings Określa, skąd ma być akceptowany ruch przychodzący
firebaseextensions.v1beta.function/labels Etykiety labels Etykiety, które mają być stosowane do wszystkich zasobów w rozszerzeniu