Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
.envnebendab-config.json(oder überall dort, wo es Ihr Startvorgang erwartet). -
.envwurde.gitignorehinzugefü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.