Megosztás a következőn keresztül:


Környezeti változók helyettesítésére használható @env() a Data API Builderben

A Data API Builder (DAB) lehetővé teszi a titkok (például adatbázis-kapcsolati sztringek) kiszorítását a dab-config.json-ból azáltal, hogy értékeket helyettesítünk betöltéskor. Az első támogatott mechanizmus a függvény, amely feloldja a @env() környezeti változókat a gazdafolyamat-környezetből vagy egy helyi .env fájlból.

Lásd még: the @akv() function.

Mit @env() csinál?

Helyezzen egy környezeti változóra mutató hivatkozást arra a helyre, ahol sztringérték várható:

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

Konfiguráció betöltésekor a DAB sztringértékek esetében megkeresi a @env('VAR_NAME') mintát, és lecseréli a jelet a környezeti változó VAR_NAME értékével.

Értékek forrásai

Forrás Description
Operációs rendszer/ folyamatkörnyezet A DAB-folyamat indításakor jelen lévő standard környezeti változók.
.env fájl Egyszerű szöveges fájl sorokkal NAME=VALUE a konfigurációs könyvtárban (a helyi fejlesztés megkönnyítése érdekében).

Megjegyzés:

A .env fájl felülírja a meglévő folyamat-/rendszerkörnyezeti változókat, ha mindkettő ugyanazt a nevet határozza meg. Ha egy helyi .env fájlt ad meg a fejlesztéshez, a bejegyzéseit a "var-name" lekérdezések kielégítésére használják, anélkül, hogy hívást kezdeményeznének a helyi környezetre.

Példafájl .env :

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

Iránymutatások:

  • Tartsa .env közvetlenül a dab-config.json mellett (vagy ott, ahol az indítási folyamat elvárja).
  • Adj hozzá .env a .gitignore-hez.
  • A #-vel kezdődő üres sorokat és sorokat, ha támogatott, általában figyelmen kívül hagyandók; erősítse meg a megjegyzések támogatását, mielőtt dokumentálja.
  • Linux/macOS rendszereken a nevek érzékenyek a kis- és nagybetűkre. Windows rendszeren nem érzékenyek a kisbetűk és nagybetűk közötti különbségre.

A @env() használata a konfigurációban

Alapszintű helyettesítés

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

Kombinálva a @akv()

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

Tárolt eljárás paraméterei

{
  "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" ] }
      ]
    }
  }
}

A környezeti értékek sztringekként lesznek helyettesítve. A következő elemzéseket (például int vagy bool) a konfiguráció vagy a futtatókörnyezeti logika kezeli.

Hibaelhárítás

Scenario Outcome
A változó megtalálható A helyettesítés sikeres.
Változó hiányzik A konfiguráció betöltése valószínűleg sikertelen lesz.
A változó nem található Üres karakterláncként helyettesítve.
Több @env() különböző tulajdonságban Minden egymástól függetlenül feloldva.
Olyan helyeken használatos, ahol numerikus vagy logikai típus várt Sztringként helyettesített érték; elemzés sikeres lehet.
Érvénytelen minta (például @env(DB_VAR) hiányzó idézőjelek) Literális karakterláncként kezelve.

Teljes példa

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!;

Fontos

Ne véglegesítse az .env fájlokat, amelyek titkokat tartalmaznak. |

Gyorsreferencia

Termék Összefoglalás
Szemantika @env('variable-name')
Szimulációs fájl .envvonalakkal name=value
Keverés a @env() Supported.

Felülvizsgálat

A titkos kulcsok és a környezetspecifikus értékek konfigurációs fájlokból való távoltartására használható @env(). Párosítsa egy fegyelmezett titkos kódkezeléssel, például CI/CD-változótárolókkal vagy tárolódefiníciókkal a biztonságos és rugalmas üzembe helyezés érdekében. Vállalati tárolók használatához kombinálja a @akv() funkcióval a titkok központosítását.