Delen via


Gebruiken @env() voor vervanging van omgevingsvariabelen in Data API Builder

Met Data API Builder (DAB) kunt u geheimen (zoals databaseverbindingsreeksen) uit dab-config.json houden door waarden bij het laden te substitueren. Het eerste ondersteunde mechanisme is de @env() functie, waarmee omgevingsvariabelen worden omgezet vanuit de hostprocesomgeving of een lokaal .env bestand.

Zie ook: the @akv() function.

Wat @env() doet?

Plaats een verwijzing naar een omgevingsvariabele waar een tekenreekswaarde wordt verwacht:

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

Tijdens de laadtijd van de configuratie scant DAB tekenreekswaarden voor het @env('VAR_NAME') patroon en vervangt het token door de waarde van de omgevingsvariabele VAR_NAME.

Bronnen voor waarden

Bron Description
Besturingssysteem/procesomgeving Standaardomgevingsvariabelen aanwezig wanneer het DAB-proces wordt gestart.
.env-bestand Een plaintextbestand met NAME=VALUE regels in de configuratiemap (voor gebruiksgemak bij lokale ontwikkeling).

Opmerking

Het .env bestand overschrijft bestaande proces-/systeemomgevingsvariabelen wanneer beide dezelfde naam definiƫren. Als u een lokaal .env bestand opgeeft voor ontwikkeling, worden de vermeldingen ervan gebruikt om te voldoen aan @env('var-name') zoekopdrachten zonder een aanroep naar de lokale omgeving te maken.

Voorbeeldbestand .env :

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

Richtsnoeren:

  • Houd .env grenzend aan dab-config.json (of waar uw opstartproces dit verwacht).
  • Toevoegen .env aan .gitignore.
  • Lege regels en regels beginnen met # (indien ondersteund, controleren) worden doorgaans genegeerd. Controleer voordat u ondersteuning voor opmerkingen documenteert.
  • In Linux/macOS zijn namen hoofdlettergevoelig. In Windows zijn ze effectief niet hoofdlettergevoelig.

Gebruiken @env() in configuratie

Basisvervanging

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

Gecombineerd met @akv()

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

Parameters voor opgeslagen procedures

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

Omgevingswaarden worden vervangen door tekenreeksen. Volgende parsering (bijvoorbeeld naar int of bool) wordt verwerkt door de verbruikende configuratie- of runtimelogica.

Probleemoplossingsproces

Scenario Outcome
Variabele gevonden Vervanging slaagt.
Variabele afwezig Het laden van de configuratie mislukt waarschijnlijk.
Variabele is niet gevonden Vervangen door een lege tekenreeks.
Meerdere @env() in verschillende eigenschappen Alles is onafhankelijk opgelost.
Gebruikt waar een numerieke waarde of een booleaanse waarde verwacht werd. Waarde vervangen als tekenreeks; parseren kan lukken.
Ongeldig patroon (bijvoorbeeld @env(DB_VAR) ontbrekende aanhalingstekens) Behandeld als een letterlijke tekenreeks.

Volledig voorbeeld

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

Belangrijk

Voer geen bestanden met geheimen door .env . |

Snelzoekgids

Onderdeel Samenvatting
Syntaxis @env('variable-name')
Simulatiebestand .env met name=value lijnen
Mengen met @env() Supported.

Review

Gebruik @env() dit om geheimen en omgevingsspecifieke waarden buiten configuratiebestanden te houden. Koppel het met gedisciplineerd geheimbeheer, zoals CI/CD-variabelearchieven of containerdefinities, voor een veilige en flexibele implementatie. Gebruik voor enterprise vaults in combinatie met de @akv() functie om geheimen te centraliseren.