Sdílet prostřednictvím


Použijte @env() pro nahrazování proměnných prostředí v návrháři Data API.

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 .env blízko dab-config.json (nebo pokud to váš proces spuštění očekává jinde).
  • Přidejte .env do .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í.