Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tvůrce Data API (DAB) umožňuje uchovávat tajemství (například připojovací řetězce databáze) mimo dab-config.json tím, že při načtení nahrazuje hodnoty. Prvním podporovaným mechanismem je funkce @env(), která interpretuje proměnné prostředí z prostředí hostitelského procesu nebo místního souboru .env.
Viz také: the @akv() function.
Co @env() dělá
Umístěte odkaz na proměnnou prostředí kdekoli, kde se očekává řetězcová hodnota:
{
"data-source": {
"connection-string": "@env('SQL_CONN_STRING')"
}
}
V době načtení konfigurace DAB prohledá řetězcové hodnoty na vzor @env('VAR_NAME') a nahradí token hodnotou proměnné prostředí VAR_NAME.
Zdroje pro hodnoty
| Zdroj | Description |
|---|---|
| OS / procesní prostředí | Standardní proměnné prostředí, které jsou přítomné při spuštění procesu DAB. |
Soubor .env |
Soubor prostého textu s NAME=VALUE řádky v konfiguračním adresáři (pro usnadnění místního vývoje). |
Poznámka:
Soubor .env přepíše existující proměnné prostředí procesu nebo systému, když oba definují stejný název.
Pokud zadáte místní .env soubor pro vývoj, použijí se jeho položky k uspokojení @env(vyhledávání var-name bez volání do místního prostředí.
Příklad .env souboru:
SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key
Pokyny:
- Udržujte
.envblízkodab-config.json(nebo pokud to váš proces spuštění očekává jinde). - Přidejte
.envdo.gitignore. - Prázdné řádky a řádky začínající
#(pokud jsou podporované, ověřte) se obvykle ignorují. Před dokumentací podpory komentářů potvrďte. - V Linuxu nebo macOS se u názvů rozlišují malá a velká písmena. Ve Windows se efektivně nerozlišují malá a velká písmena.
Použití @env() v konfiguraci
Základní náhrada
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@env('SQL_CONN_STRING')"
}
}
V kombinaci s @akv()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('prod-sql-connection')"
}
}
Parametry uložené procedury
{
"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" ] }
]
}
}
}
Hodnoty prostředí se nahrazují jako řetězce. Následné analýzy (například na int nebo bool) jsou zpracovávány využívající konfigurací nebo logikou běhového prostředí.
Řešení problémů
| Scenario | Outcome |
|---|---|
| Nalezená proměnná | Nahrazení proběhne úspěšně. |
| Proměnná chybí | Pravděpodobně selže načtení konfigurace. |
| Proměnná nebyla nalezena. | Nahrazeno prázdným řetězcem. |
Více @env() v různých vlastnostech |
Všechny vyřešeny nezávisle. |
| Používá se, kde se očekává číselná nebo logická hodnota. | Hodnota nahrazena jako řetězec; Analýza může být úspěšná. |
Neplatný vzor (například @env(DB_VAR) chybějící uvozovky) |
Považováno za doslovný řetězec. |
Úplný příklad
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!;
Důležité
Nezavádějte .env soubory obsahující tajné informace. |
Stručná referenční dokumentace
| Položka | Shrnutí |
|---|---|
| Syntaxe | @env('variable-name') |
| Simulační soubor |
.envs čárami name=value |
Míchání s @env() |
Supported. |
Review
Slouží @env() k zachování tajných kódů a hodnot specifických pro prostředí mimo konfigurační soubory. Spárujte to s disciplinovanou správou tajných kódů, jako jsou úložiště proměnných CI/CD nebo definice kontejnerů, pro nasazení s vysokou úrovní zabezpečení a flexibility. Pro použití podnikového trezoru zkombinujte s funkcí centralizovat tajemství.