Konfigurowanie i używanie parametrów w rozszerzeniu

Parametry to mechanizm, za pomocą którego użytkownik dostosowuje każdą zainstalowaną wersję wystąpienia rozszerzenia. Parametry są jak zmienne środowiskowe dla funkcji . Wartościami parametrów mogą być wypełniane automatycznie (dostarczone przez Firebase po instalacja) lub skonfigurowane przez użytkownika (określone przez użytkownika podczas instalacji).

Parametry te możesz sprawdzić w kodu źródłowego funkcji, pliku extension.yaml oraz POSTINSTALL.md . Oto składnia wskazująca, jak odwołać się do parametru o nazwie PARAMETER_NAME:

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

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

    Po instalacji w konsoli Firebase wyświetli się zawartość pliku POSTINSTALL.md i wypełnia wszystkie odwołania do parametrów parametrem actual dla zainstalowanej instancji.

Parametry uzupełnione automatycznie

Każda zainstalowana instancja rozszerzenia automatycznie ma dostęp do kilku domyślne parametry wypełnione automatycznie przez Firebase (patrz tabela poniżej). Te wartości parametrów są domyślnymi wartościami dla Firebase projektu (np. domyślny zasobnik na dane) lub są związane z konkretnymi rozszerzeniami (np. identyfikatora instancji rozszerzenia).

Żadnego automatycznie wypełnionego wartości parametrów nie można zmienić. Są ustawiane w dniu tworzenia projektu lub instalacji rozszerzeń.

Firebase automatycznie wypełnia te wartości parametrów w przypadku rozszerzenia, Firebase nie udostępnia automatycznej obsługi administracyjnej powiązanych usług dla użytkownika instalacji. Użytkownik instalujący rozszerzenie musi włączyć powiązane i odpowiednich produktów w projekcie przed instalacją. Na przykład, jeśli rozszerzenie dotyczy Cloud Firestore, użytkownik musi skonfigurować Cloud Firestore w projektach AI. Zalecamy powiadomienie użytkowników o tych wymaganiach w PREINSTALL.md .

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

Format uogólniony:
project-id

Przykładowa wartość:
project-123

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

Format uogólniony:
https://project-id-default-rtdb.firebaseio.com
(instancje w Stanach Zjednoczonych)
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 dla projektu Firebase

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

Format uogólniony:
project-id

Przykładowa wartość:
project-123

STORAGE_BUCKET Domyślna nazwa zasobnika Cloud Storage projektu Firebase

Format uogólniony:
project-id.appspot.com

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

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

Unikalny identyfikator instancji zainstalowanego rozszerzenia

Ta wartość jest generowana na podstawie parametru name pole określone w pliku extension.yaml.

Uogólniony format pierwszej zainstalowanej instancji (przypisany automatycznie przez Firebase; nie mogą zostać zmienione przez użytkownika podczas instalacji):
name-from-extension.yaml

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


Uogólniony format dla drugiej zainstalowanej instancji lub nowszej (przypisane automatycznie przez Firebase; można modyfikować przez użytkownika podczas instalacji):
name-from-extension.yaml-4-digit-alphanumeric-hash

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

Parametry skonfigurowane przez użytkownika

Aby umożliwić użytkownikowi dostosowanie każdej zainstalowanej instancji rozszerzenia, możesz: poproś użytkownika o podanie wartości parametrów podczas instalacji. Aby wysłać prośbę o te płatności: możesz skonfigurować prompty w sekcji params na platformie extension.yaml .

Oto przykładowa sekcja params oraz tabela z opisem wszystkich dostępnych opcji 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 skonfigurowany 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świetlane użytkownikowi, gdy zobaczy prośbę o podanie parametru wartość

description
(opcjonalnie)
ciąg znaków

Szczegółowy opis parametru

Wyświetlane użytkownikowi, kiedy pojawi się prośba o podanie parametru wartość

Obsługuje format Markdown

type
(opcjonalnie)
ciąg znaków

Mechanizm wprowadzania wartości parametru przez użytkownika (na np. wpisz tekst bezpośrednio lub wybierz go z listy)

Prawidłowe wartości to m.in.:

  • string: umożliwia wpisywanie dowolnego tekstu (ograniczony przez Twój validationRegex).
  • select: pozwala wybrać jeden wpis z wstępnie zdefiniowaną listę opcji. Jeśli podasz tę wartość, musisz oraz zdefiniować options .
  • multiSelect: umożliwia wybór co najmniej 1 wpisu. ze wstępnie zdefiniowanej listy opcji. Jeśli podasz tę wartość, musisz oraz zdefiniować options .
  • selectResource: umożliwia wybór określonego typu zasobu Firebase (np. z zasobnika Cloud Storage) z projektu użytkownika.

    Jeśli określisz parametr tego typu, użytkownicy zobaczą większy parametr łatwy w użyciu widżet wyboru w interfejsie instalacji; dla tego powód, używaj parametrów selectResource zawsze, gdy jak to tylko możliwe.

    Jeśli podasz tę wartość, musisz także zdefiniować resourceType .

  • secret: umożliwia przechowywanie poufnych ciągów znaków, takich jak: klucze interfejsu API dla usług innych firm. Te wartości zostaną zapisane w Cloud Secret Manager:

    Cloud Secret Manager jest usługą płatną, której korzystanie może mogą naliczyć opłaty dla użytkowników, którzy zainstalują Twoje rozszerzenie. Jeśli używasz typu parametru secret, pamiętaj, aby udokumentować PREINSTALL oznacza, że rozszerzenie korzysta z usługi Cloud Secret Manager.

Jeśli pominiesz to pole, parametr przyjmuje domyślnie wartość type z string.

options
(wymagany, jeśli parametr type jest select lub multiSelect)
list

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

Uwzględnij label i value pól w Pole options:

  • label (ciąg znaków): krótki opis elementu opcja do wyboru
  • value (ciąg znaków): rzeczywista wartość parametru opcja do wyboru

Pole value jest wymagane przez options .
Jeśli pominiesz właściwość label, domyślnie pojawi się opcja listy value

resourceType
(wymagany, jeśli parametr type to selectResource)
ciąg znaków

Typ zasobu Firebase, z którego użytkownik ma zobaczyć prośbę o wybranie. Obecnie tylko zasobniki Cloud Storage obsługują selektory zasobów:

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

Nieznane wartości parametru resourceType zostaną zignorowane, a interfejs użytkownika wyrenderuje parametr jako swobodne dane wejściowe string .

example
(opcjonalnie)
ciąg znaków

Przykładowa wartość parametru

validationRegex
(opcjonalnie)
(ma zastosowanie tylko wtedy, gdy parametr type ma wartość 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

Szczegółowe informacje o weryfikacji znajdziesz tutaj: Weryfikacja i błąd wiadomości poniżej.

validationErrorMessage
(opcjonalnie)
ciąg znaków

Komunikat o błędzie do wyświetlenia, jeśli validationRegex wpadki

Szczegółowe informacje o komunikatach o błędach znajdziesz tutaj: Weryfikacja i błąd wiadomości poniżej.

default
(opcjonalnie)
ciąg znaków

Domyślna wartość parametru, gdy użytkownik opuści parametr pusta wartość

W razie potrzeby możesz określić wartość parametru uzupełnianego automatycznie, dla wartości default (np. zapoznaj się z IMG_BUCKET parametru Rozszerzenie Zmień rozmiar obrazów).

required
(opcjonalnie)
wartość logiczna

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

Jeśli pominiesz właściwość required, domyślna wartość to true (wymagany parametr).

immutable
(opcjonalnie)
wartość logiczna

Określa, czy użytkownik może zmienić wartość parametru po instalacji (jeśli na przykład zmień konfigurację rozszerzenie).

Jeśli pominiesz właściwość immutable, domyślna wartość to false

Uwaga: jeśli zdefiniujesz tag „lokalizacja” dla wdrożonych funkcji rozszerzenia, umieść to pole immutable w jego parametrach obiektu.

Sprawdzanie poprawności i komunikaty o błędach dotyczące wartości skonfigurowanych przez użytkownika

Po skonfigurowaniu parametru z parametrem type o wartości string musisz zdefiniować odpowiednią weryfikację wyrażenia regularnego za pomocą funkcji validationRegex.

Poza tym w przypadku wielu rozszerzeń często żądaną wartością parametru jest baza danych lub zasobnika Cloud Storage. Pamiętaj, że podczas instalacji, ponownej konfiguracji lub usługa Rozszerzenia nie sprawdza poprawności tych elementów w czas wpisu wartości parametru:

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

Jednak gdy rozszerzenie rzeczywiście wdraża swoje zasoby, Konsola Firebase lub interfejs wiersza poleceń Firebase wyświetli komunikat o błędzie, jeśli wprowadzona baza danych lub zasobnik Cloud Storage nie zostały jeszcze skonfigurowane w projekcie.

Zdecydowanie zalecamy powiadomienie o tym użytkowników na PREINSTALL plik o tych wymaganiach. Dzięki temu po zainstalowaniu rozszerzenia instaluje się i działa zgodnie z oczekiwaniami.

Parametry systemowe

Parametry systemowe kontrolują podstawową konfigurację zasobów rozszerzenia. Służą one do kontrolowania konfiguracji zasobów, nie są one dostępne jako zmienne środowiskowe w kodzie funkcji.

W przypadku tych parametrów nie trzeba zwykle deklarować w parametrze extension.yaml Są one automatycznie definiowane dla każdej instancji rozszerzenia, a użytkownicy mogą ustawić wartości niestandardowe, gdy instalują .

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 extension.yaml. Te ustawienia konfiguracji poszczególnych zasobów zastąpią rozszerzenie użytkownika ustawieniach dla całej instancji. 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 (przyjazna dla ludzi) Odpowiadające jej pole w dokumencie properties Opis
firebaseextensions.v1beta.funkcja/lokalizacja Lokalizacja location W którym regionie należy wdrożyć funkcje Cloud Functions?
firebaseextensions.v1beta.function/memory Pamięć funkcji memory Ile megabajtów pamięci powinno być przydzielone do każdej funkcji?
firebaseextensions.v1beta.function/timeoutSeconds Limit czasu funkcji timeout Ile sekund powinny działać funkcje przed przekroczeniem limitu czasu?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Ruch wychodzący oprogramowania sprzęgającego VPC vpcConnectorEgressSettings Kontroluje ruch wychodzący po skonfigurowaniu oprogramowania sprzęgającego 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 jednocześnie
firebaseextensions.v1beta.function/maxInstances Maksymalna liczba instancji funkcji maxInstances Maksymalna liczba instancji tej funkcji, które można uruchomić jednocześnie
firebaseextensions.v1beta.function/ingressSettings Ustawienia ruchu przychodzącego ingressSettings Ustawienia źródeł akceptowania ruchu przychodzącego
firebaseextensions.v1beta.function/labels Etykiety labels Etykiety, które mają być stosowane do wszystkich zasobów w rozszerzeniu