Freigeben über


Verwendung @env() für die Ersetzung von Umgebungsvariablen im Daten-API-Generator

Mit dem Daten-API-Generator (DAB) können Sie Geheimnisse (z. B. Datenbankverbindungszeichenfolgen) aus dab-config.json heraushalten, indem Sie zur Ladezeit Werte ersetzen. Der erste unterstützte Mechanismus ist die @env() Funktion, die Umgebungsvariablen aus der Hostprozessumgebung oder einer lokalen .env Datei aufgelöst.

Siehe auch: the @akv() function.

Was @env() tut

Platzieren Sie einen Verweis auf eine Umgebungsvariable an einer beliebigen Stelle, an der ein Zeichenfolgenwert erwartet wird:

{
  "data-source": {
    "connection-string": "@env('SQL_CONN_STRING')"
  }
}

Beim Laden der Konfiguration durchsucht DAB die Zeichenfolgen nach dem Muster @env('VAR_NAME') und ersetzt das Token durch den Wert der Umgebungsvariable VAR_NAME.

Quellen für Werte

Quelle Description
Betriebssystem/Prozessumgebung Standardumgebungsvariablen, die beim Starten des DAB-Prozesses vorhanden sind.
.env-Datei Eine Nur-Text-Datei mit NAME=VALUE Zeilen im Konfigurationsverzeichnis (zur Erleichterung der lokalen Entwicklung).

Hinweis

Die .env Datei setzt vorhandene Prozess-/Systemumgebungsvariablen außer Kraft, wenn beide denselben Namen definieren. Wenn Sie eine lokale .env Datei für die Entwicklung bereitstellen, werden die Einträge verwendet, um "var-name" zu erfüllen @env() Nachschlagevorgänge ohne Aufruf der lokalen Umgebung.

Beispieldatei für .env:

SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key

Leitlinien:

  • Halten Sie .env neben dab-config.json (oder überall dort, wo es Ihr Startvorgang erwartet).
  • .env wurde .gitignore hinzugefügt.
  • Leere Zeilen und Zeilen beginnend mit # (sofern unterstützt, überprüfen) werden in der Regel ignoriert. Bestätigen Sie vor der Dokumentierung der Kommentarunterstützung.
  • Auf Linux/macOS sind Namen groß- und kleinschreibungssensitiv. Unter Windows wird die Groß-/Kleinschreibung effektiv ignoriert.

Verwendung @env() in der Konfiguration

Grundlegende Ersetzung

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@env('SQL_CONN_STRING')"
  }
}

Kombiniert mit @akv()

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@akv('prod-sql-connection')"
  }
}

Parameter für gespeicherte Prozeduren

{
  "entities": {
    "RunJob": {
      "source": {
        "object": "dbo.RunJob",
        "type": "stored-procedure",
        "parameters": {
          "intParam": "@env('SP_PARAM1_INT')",
          "boolParam": "@env('SP_PARAM2_BOOL')"
        }
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "execute" ] }
      ]
    }
  }
}

Umgebungswerte werden durch Zeichenfolgen ersetzt. Das nachfolgende Parsing (z. B. zu int oder bool) wird von der verwendenden Konfiguration oder Laufzeitlogik behandelt.

Problembehandlung

Scenario Ergebnis
Variable gefunden Die Ersetzung ist erfolgreich.
Variable fehlt Wahrscheinlich schlägt die Konfigurationslast fehl.
Variable nicht gefunden Ersetzt als leere Zeichenfolge.
Mehrere @env() in verschiedenen Eigenschaften Alle wurden unabhängig aufgelöst.
Wird verwendet, wo numerische oder boolescher Wert erwartet wird Als Zeichenfolge ersetzter Wert; das Parsen kann erfolgreich sein.
Ungültiges Muster (z. B @env(DB_VAR) . fehlende Anführungszeichen) Behandelt als Literalzeichenfolge.

Vollständiges Beispiel

dab-config.json:

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@env('SQL_CONN_STRING')"
  },
  "runtime": {
    "rest": { "enabled": true }
  },
  "entities": {
    "Books": {
      "source": "dbo.Books",
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

.env:

DB_TYPE=mssql
SQL_CONN_STRING=Server=localhost;Database=BooksDb;User Id=app;Password=StrongPassword!;

Von Bedeutung

Übernehmen Sie keine Dateien mit .env geheimen Schlüsseln. |

Kurzreferenz

Artikel Zusammenfassung
Syntax @env('variable-name')
Simulationsdatei .env mit name=value Linien
Mischen mit @env() Supported.

Review

Verwenden Sie @env(), um Geheimnisse und umgebungsspezifische Werte aus Konfigurationsdateien herauszuhalten. Koppeln Sie es mit disziplinierter geheimer Verwaltung, z. B. CI/CD-Variablenspeichern oder Containerdefinitionen, für eine sichere und flexible Bereitstellung. Um Geheimnisse zu zentralisieren, kombinieren Sie die Funktion mit dem Enterprise Vault.