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ładparams.defineInt(" PARAMETER_NAME ")
) lubprocess.env. PARAMETER_NAME
.W
extension.yaml
iPOSTINSTALL.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: Przykładowa wartość: |
DATABASE_URL | Domyślny adres URL instancji bazy danych czasu rzeczywistego projektu Firebase | Uogólniony format: Przykładowa wartość: |
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 | Uogólniony format: Przykładowa wartość: |
STORAGE_BUCKET | Domyślna nazwa zasobnika Cloud Storage projektu Firebase | Uogólniony format: Przykładowa wartość: |
Parametr o wartości domyślnej z instalacji rozszerzenia | ||
EXT_INSTANCE_ID | Unikalny identyfikator zainstalowanej instancji rozszerzenia Wartość ta jest generowana na podstawie pola | Uogólniony format dla pierwszej zainstalowanej instancji (automatycznie przypisywany przez Firebase; użytkownik nie może modyfikować podczas instalacji): Przykładowa wartość: Uogólniony format dla drugiej zainstalowanej instancji i nowszych (automatycznie przypisywany przez Firebase; użytkownik może modyfikować podczas instalacji): Przykładowa wartość: |
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ą:
Jeśli to pole zostanie pominięte, parametr domyślnie będzie miał | ||||
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
Pole | ||||
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:
Nieznane wartości | ||||
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 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 | Wartość domyślna 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ść | ||||
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 | ||||
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ę Uwaga: jeśli zdefiniujesz parametr „lokalizacja” dla wdrożonych funkcji swojego rozszerzenia , powinieneś uwzględnić to |
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, które mają zostać uruchomione jednocześnie |
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 |