Richten Sie Parameter in Ihrer Erweiterung ein und verwenden Sie sie

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 ") ) oder process.env. PARAMETER_NAME .

  • Verwenden Sie in extension.yaml und POSTINSTALL.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:
project-id

Beispielwert:
project-123

DATABASE_URL Die Standard- Echtzeitdatenbank-Instanz-URL des Firebase-Projekts

Verallgemeinertes Format:
https:// project-id -default-rtdb.firebaseio.com
(US-Fälle)
oder
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(Nicht-US-Instanzen)

Beispielwert:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

Der Standardname der Echtzeitdatenbankinstanz des Firebase-Projekts

Normalerweise ist dieser Wert mit der Projekt-ID identisch oder endet auf -default-rtdb .

Verallgemeinertes Format:
project-id

Beispielwert:
project-123

STORAGE_BUCKET Der standardmäßige Cloud Storage-Bucket-Name des Firebase-Projekts

Verallgemeinertes Format:
project-id .appspot.com

Beispielwert:
project-123.appspot.com

Parameter mit Standardwert aus der Erweiterungsinstallation
EXT_INSTANCE_ID

Eindeutiger Bezeichner für die installierte Erweiterungsinstanz

Dieser Wert wird aus dem in der Datei extension.yaml angegebenen name generiert.

Generalisiertes Format für die erste installierte Instanz (automatisch von Firebase zugewiesen; kann während der Installation nicht vom Benutzer geändert werden):
name-from-extension.yaml

Beispielwert:
my-awesome-extension


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):
name-from-extension.yaml - 4-digit-alphanumeric-hash

Beispielwert:
my-awesome-extension-6m31

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:

  • string : Ermöglicht die Texteingabe in freier Form (wie durch Ihr validationRegex eingeschränkt)
  • select : ermöglicht die Auswahl eines Eintrags aus einer vordefinierten Liste von Optionen. Wenn Sie diesen Wert angeben, müssen Sie auch das options definieren.
  • multiSelect : ermöglicht die Auswahl eines oder mehrerer Einträge aus einer vordefinierten Liste von Optionen. Wenn Sie diesen Wert angeben, müssen Sie auch das options definieren.
  • selectResource : Ermöglicht die Auswahl eines bestimmten Typs von Firebase-Ressourcen (z. B. eines Cloud Storage-Buckets) aus dem Projekt des Benutzers.

    Wenn Sie einen Parameter dieses Typs angeben, erhalten Benutzer ein benutzerfreundlicheres Auswahl-Widget in der Installationsoberfläche. Aus diesem Grund sollten Sie nach Möglichkeit selectResource Parameter verwenden.

    Wenn Sie diesen Wert angeben, müssen Sie auch das Feld resourceType definieren.

  • secret : Ermöglicht die Speicherung vertraulicher Zeichenfolgen, z. B. API-Schlüssel für Dienste von Drittanbietern. Diese Werte werden im Cloud Secret Manager gespeichert.

    Cloud Secret Manager ist ein kostenpflichtiger Dienst, dessen Nutzung für Benutzer, die Ihre Erweiterung installieren, zu Gebühren führen kann. Wenn Sie den Parametertyp secret verwenden, müssen Sie in Ihrer PREINSTALL- Datei unbedingt dokumentieren, dass Ihre Erweiterung Cloud Secret Manager verwendet.

Wenn dieses Feld weggelassen wird, verwendet der Parameter standardmäßig den type string .

options
(erforderlich, wenn der type select oder multiSelect ist)
Liste

Liste von Werten, aus denen der Benutzer auswählen kann

Fügen Sie label und value in das options ein:

  • label (string) : kurze Beschreibung der auswählbaren Option
  • value (string) : tatsächlicher Wert der auswählbaren Option

Das value ist für das options erforderlich.
Wenn label weggelassen wird, ist die Listenoption standardmäßig display value .

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:

Ressourcentyp Typ-ID
Cloud Storage-Bucket storage.googleapis.com/Bucket

Unbekannte resourceType -Werte werden ignoriert und die Benutzeroberfläche stellt den Parameter als Freiform- string Eingabefeld dar.

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 validationRegex fehlschlägt

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 default angeben (ein Beispiel finden Sie im Parameter IMG_BUCKET der Erweiterung „Resize Images“ ).

required
(Optional)
Boolescher Wert

Definiert, ob der Benutzer eine leere Zeichenfolge senden kann, wenn er zur Eingabe des Parameterwerts aufgefordert wird

Wenn required weggelassen wird, ist dieser Wert standardmäßig „ true (d. h. ein erforderlicher Parameter).

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 immutable weggelassen wird, ist dieser Wert standardmäßig auf false gesetzt.

Hinweis: Wenn Sie einen „location“-Parameter für die bereitgestellten Funktionen Ihrer Erweiterung definieren, sollten Sie dieses immutable Feld in sein param-Objekt aufnehmen.

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