Dela via


Använd @env() för miljövariabelersättning i Data API Builder

Med Data API Builder (DAB) kan du hålla hemligheter (till exempel databasanslutningssträngar) borta dab-config.json genom att ersätta värden vid inläsningstid. Den första mekanismen @env() som stöds är funktionen som löser miljövariabler från värdprocessmiljön eller en lokal .env fil.

Se även: the @akv() function.

Vad @env() gör

Placera en referens till en miljövariabel varhelst ett strängvärde förväntas:

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

Vid konfigurationens inläsningstid söker DAB igenom strängvärdena efter @env('VAR_NAME') mönstret och ersätter token med värdet för miljövariabeln VAR_NAME.

Källor för värden

Källa Description
OS/processmiljö Standardmiljövariabler som finns när DAB-processen startar.
.env fil En klartextfil med NAME=VALUE rader i konfigurationskatalogen (för lokal utvecklings bekvämlighet).

Anmärkning

Filen .env åsidosätter befintliga process-/systemmiljövariabler när båda definierar samma namn. Om du anger en lokal .env-fil för utveckling används dess poster för att uppfylla @env( "var-name"-sökningar utan att göra något anrop till den lokala miljön.

Exempelfil .env :

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

Riktlinjer:

  • Håll .env nära dab-config.json (eller där din startprocess förväntar sig det).
  • Lägg till .env i .gitignore.
  • Tomma rader och rader som börjar med # (om det stöds, verifiera) ignoreras vanligtvis. Bekräfta innan du dokumenterar kommentarsstöd.
  • På Linux/macOS är namnen skiftlägeskänsliga. På Windows är de i praktiken skiftlägesokänsliga.

Använda @env() i konfigurationen

Grundläggande ersättning

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

Kombinerat med @akv()

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

Parametrar för lagrad procedur

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

Miljövariabler ersätts med strängar. Efterföljande parsning (till exempel till int eller bool) hanteras av den förbrukande konfigurationen eller körningslogiken.

Felsökning

Scenario Outcome
Variabel hittades Substitutionen lyckas.
Variabel saknas Konfigurationsladdningen misslyckas sannolikt.
Variabeln hittades inte Ersatt med en tom sträng.
Flera @env() i olika egenskaper Alla lösta oberoende.
Används där ett numeriskt eller ett booleskt värde förväntas Värde som ersätts som sträng; parsning kan lyckas.
Ogiltigt mönster (till exempel @env(DB_VAR) citattecken saknas) Behandlas som en literalsträng.

Fullständigt exempel

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

Viktigt!

Lämna inte in .env filer som innehåller känsliga uppgifter. |

Snabbreferens

Objekt Sammanfattning
Syntax @env('variable-name')
Simuleringsfil .env med name=value linjer
Blanda med @env() Stöds.

Review

Använd @env() för att hålla hemligheter och miljöspecifika värden borta från konfigurationsfiler. Koppla ihop den med disciplinerad hemlig hantering, till exempel CI/CD-variabellager eller containerdefinitioner, för en säker och flexibel distribution. För användning av företagsvalv kombinerar du det med @akv() funktionen för att centralisera information.