Parameter sind der Mechanismus, mit dem ein Benutzer jede installierte Instanz einer Erweiterung anpasst. Parameter sind wie die Umgebungsvariablen für eine Erweiterung. Die Werte für Parameter können entweder automatisch ausgefüllt (von Firebase nach der Installation bereitgestellt) oder benutzerkonfiguriert (vom Benutzer während der Installation angegeben) werden.
Auf diese Parameter können Sie im Funktionsquellcode Ihrer Erweiterung, in Ihrer Datei extension.yaml
und in Ihrer Datei POSTINSTALL.md
verweisen. Hier ist die Syntax für die Referenzierung eines Parameters namens PARAMETER_NAME
:
Verwenden Sie im Quellcode Ihrer Funktion das Modul
params
(z. B.params.defineInt(" PARAMETER_NAME ")
) oderprocess.env. PARAMETER_NAME
.Verwenden Sie in
extension.yaml
undPOSTINSTALL.md
${param: PARAMETER_NAME }
.Nach der Installation zeigt die Firebase-Konsole den Inhalt der Datei
POSTINSTALL.md
an und füllt alle Parameterverweise mit den tatsächlichen Werten für die installierte Instanz.
Automatisch ausgefüllte Parameter
Jede installierte Instanz einer Erweiterung hat automatisch Zugriff auf mehrere automatisch ausgefüllte Standardparameter, die von Firebase bereitgestellt werden (siehe Tabelle unten). Diese Parameterwerte sind entweder die Standardwerte für das Firebase-Projekt (wie der Standard- Storage-Bucket) oder sie sind erweiterungsspezifisch (wie die Instanz-ID der Erweiterung).
Alle automatisch ausgefüllten Parameterwerte sind unveränderlich. Sie werden zum Zeitpunkt der Projekterstellung oder Erweiterungsinstallation festgelegt.
Obwohl Firebase diese Parameterwerte für die Erweiterung automatisch ausfüllt, stellt Firebase die zugehörigen Produkte dem Benutzer während der Installation nicht automatisch bereit . Der Benutzer, der die Erweiterung installiert, muss vor der Installation die zugehörigen und anwendbaren Produkte in seinem Projekt aktivieren. Wenn Ihre Erweiterung beispielsweise Cloud Firestore umfasst, muss der Benutzer Cloud Firestore in seinem Projekt einrichten . Wir empfehlen, Ihre Benutzer über diese Anforderungen in der Datei PREINSTALL.md
zu informieren.
Referenz für automatisch ausgefüllte Parameter | Beschreibung | Parameterwert (bereitgestellt von Firebase) |
---|---|---|
Parameter mit Standardwerten aus dem Firebase-Projekt | ||
PROJECT_ID | Eindeutiger Bezeichner für das Firebase-Projekt, in dem die Erweiterung installiert ist | Verallgemeinertes Format: Beispielwert: |
DATABASE_URL | Die Standard- Echtzeitdatenbank-Instanz-URL des Firebase-Projekts | Verallgemeinertes Format: Beispielwert: |
DATABASE_INSTANCE | Der Standardname der Echtzeitdatenbankinstanz des Firebase-Projekts Normalerweise ist dieser Wert mit der Projekt-ID identisch oder endet auf | Verallgemeinertes Format: Beispielwert: |
STORAGE_BUCKET | Der standardmäßige Cloud Storage-Bucket-Name des Firebase-Projekts | Verallgemeinertes Format: Beispielwert: |
Parameter mit Standardwert aus der Erweiterungsinstallation | ||
EXT_INSTANCE_ID | Eindeutiger Bezeichner für die installierte Erweiterungsinstanz Dieser Wert wird aus dem in der Datei | Generalisiertes Format für die erste installierte Instanz (automatisch von Firebase zugewiesen; kann während der Installation nicht vom Benutzer geändert werden): Beispielwert: Generalisiertes Format für die 2. installierte Instanz und höher (automatisch von Firebase zugewiesen; kann während der Installation vom Benutzer geändert werden): Beispielwert: |
Vom Benutzer konfigurierte Parameter
Damit ein Benutzer jede installierte Instanz einer Erweiterung anpassen kann, können Sie den Benutzer bitten, während der Installation Parameterwerte anzugeben. Um diese Werte anzufordern, richten Sie die Eingabeaufforderungen im Abschnitt params
Ihrer Datei extension.yaml
ein.
Hier ist ein Beispielabschnitt params
, gefolgt von einer Tabelle, die alle verfügbaren Parameterfelder beschreibt.
# 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
Verwenden Sie im Abschnitt params
Ihrer Datei extension.yaml
die folgenden Felder, um einen vom Benutzer konfigurierten Parameter zu definieren:
Feld | Typ | Beschreibung | ||||
---|---|---|---|---|---|---|
param (erforderlich) | Zeichenfolge | Name des Parameters | ||||
label (erforderlich) | Zeichenfolge | Kurzbeschreibung für den Parameter Wird dem Benutzer angezeigt, wenn er zur Eingabe des Parameterwerts aufgefordert wird | ||||
description (Optional) | Zeichenfolge | Detaillierte Beschreibung des Parameters Wird dem Benutzer angezeigt, wenn er zur Eingabe des Parameterwerts aufgefordert wird Unterstützt Markdown | ||||
type (Optional) | Zeichenfolge | Eingabemechanismus dafür, wie der Benutzer den Wert des Parameters festlegt (z. B. Text direkt eingeben oder aus der Dropdown-Liste auswählen) Zu den gültigen Werten gehören:
Wenn dieses Feld weggelassen wird, verwendet der Parameter standardmäßig den | ||||
options (erforderlich, wenn der type select oder multiSelect ist) | Liste | Liste von Werten, aus denen der Benutzer auswählen kann Fügen Sie
Das | ||||
resourceType (erforderlich, wenn der type selectResource ist) | Zeichenfolge | Der Typ der Firebase-Ressource, zu dessen Auswahl der Benutzer aufgefordert wird. Derzeit unterstützen nur Cloud Storage-Buckets Ressourcenselektoren:
Unbekannte | ||||
example (Optional) | Zeichenfolge | Beispielwert für den Parameter | ||||
validationRegex (Optional) (nur anwendbar, wenn der type string ist) | Zeichenfolge | Regex-Zeichenfolge zur Validierung des vom Benutzer konfigurierten Werts des Parameters Regex wird mit der Go-Bibliothek kompiliert: RE2 Einzelheiten zur Validierung finden Sie weiter unten im Abschnitt Validierung und Fehlermeldungen . | ||||
validationErrorMessage (Optional) | Zeichenfolge | Fehlermeldung, die angezeigt wird, wenn Einzelheiten zu Fehlermeldungen finden Sie weiter unten im Abschnitt „Validierung und Fehlermeldungen“ . | ||||
default (Optional) | Zeichenfolge | Standardwert für den Parameter, wenn der Benutzer den Wert des Parameters leer lässt Gegebenenfalls können Sie einen automatisch ausgefüllten Parameterwert für den | ||||
required (Optional) | Boolescher Wert | Definiert, ob der Benutzer eine leere Zeichenfolge senden kann, wenn er zur Eingabe des Parameterwerts aufgefordert wird Wenn | ||||
immutable (Optional) | Boolescher Wert | Definiert, ob der Benutzer den Wert des Parameters nach der Installation ändern kann (z. B. wenn er die Erweiterung neu konfiguriert ) Wenn Hinweis: Wenn Sie einen „location“-Parameter für die bereitgestellten Funktionen Ihrer Erweiterung definieren, sollten Sie dieses |
Validierung und Fehlermeldungen für vom Benutzer konfigurierte Werte
Wenn Sie einen Parameter mit dem type
string
einrichten, müssen Sie über das validationRegex
Feld des Parameters eine entsprechende Regex-Validierung definieren.
Außerdem ist bei vielen Erweiterungen ein häufig angeforderter Parameterwert ein Datenbankpfad oder ein Cloud Storage-Bucket. Beachten Sie, dass der Erweiterungsdienst während der Installation, Neukonfiguration oder Aktualisierung Folgendes zum Zeitpunkt der Parameterwerteingabe nicht validiert:
- Ob die angegebene Datenbank oder der Cloud Storage-Bucket im Firebase-Projekt des Benutzers eingerichtet ist
- Ob der angegebene Datenbankpfad in der Datenbank des Benutzers vorhanden ist
Wenn die Erweiterung jedoch tatsächlich ihre Ressourcen bereitstellt, zeigt die Firebase-Konsole oder die Firebase-CLI eine Fehlermeldung an, wenn die referenzierte Datenbank oder der Cloud Storage-Bucket noch nicht im Projekt eingerichtet ist.
Wir empfehlen dringend, dass Sie Benutzer in der PREINSTALL
Datei über diese Anforderungen informieren, damit Ihre Erweiterung bei der Installation erfolgreich installiert wird und wie erwartet funktioniert.
Systemparameter
Systemparameter steuern die Grundkonfiguration der Ressourcen einer Erweiterung. Da sie dazu gedacht sind, die Ressourcenkonfiguration zu steuern, können Sie über Ihren Funktionscode nicht als Umgebungsvariablen darauf zugreifen.
Normalerweise müssen Sie für diese Parameter in extension.yaml
nichts deklarieren. Sie werden automatisch für jede Erweiterungsinstanz definiert und Benutzer haben die Möglichkeit, bei der Installation Ihrer Erweiterung benutzerdefinierte Werte festzulegen.
Wenn Ihre Erweiterung jedoch besondere Ressourcenanforderungen hat, können Sie in extension.yaml
spezifische Werte auf Ressourcenebene festlegen. Diese Konfigurationseinstellungen pro Ressource überschreiben die instanzweiten Erweiterungseinstellungen des Benutzers. Zum Beispiel:
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
Die verfügbaren Systemparameter sind:
Name | Etikett (menschenfreundlich) | Entsprechendes Feld in properties | Beschreibung |
---|---|---|---|
firebaseextensions.v1beta.function/location | Standort | location | In welcher Region sollten Cloud Functions bereitgestellt werden? |
firebaseextensions.v1beta.function/memory | Funktionsspeicher | memory | Wie viele Megabyte Speicher sollten jeder Funktion zugewiesen werden? |
firebaseextensions.v1beta.function/timeoutSeconds | Funktions-Timeout | timeout | Wie viele Sekunden sollten Funktionen ausgeführt werden, bevor eine Zeitüberschreitung auftritt? |
firebaseextensions.v1beta.function/vpcConnectorEgressSettings | VPC-Connector-Ausgang | vpcConnectorEgressSettings | Steuert den ausgehenden Datenverkehr, wenn ein VPC-Connector konfiguriert ist |
firebaseextensions.v1beta.function/vpcConnector | VPC-Anschluss | vpcConnector | Verbindet Cloud Functions mit dem angegebenen VPC-Connector. |
firebaseextensions.v1beta.function/minInstances | Minimale Funktionsinstanzen | minInstances | Die Mindestanzahl von Instanzen dieser Funktion, die gleichzeitig ausgeführt werden sollen |
firebaseextensions.v1beta.function/maxInstances | Maximale Funktionsinstanzen | maxInstances | Die maximale Anzahl von Instanzen dieser Funktion, die gleichzeitig ausgeführt werden sollen |
firebaseextensions.v1beta.function/ingressSettings | Eingangseinstellungen | ingressSettings | Steuert, woher eingehender Datenverkehr angenommen wird |
firebaseextensions.v1beta.function/labels | Etiketten | labels | Beschriftungen, die auf alle Ressourcen in der Erweiterung angewendet werden sollen |