Dela via


Miljövariabler FAQ

Den här artikeln besvarar vanliga frågor om att arbeta med miljövariabler och Azure Developer CLI (azd).

Tips/Råd

En omfattande guide om hur du skapar och hanterar miljöer i Azure Developer CLI finns i Arbeta med miljöer i Azure Developer CLI.

Vilka är skillnaderna mellan azd miljövariabler och systemmiljövariabler?

azd miljövariabler lagras i .env filen i katalogen för .azure/<environment name> projektet och är åtskilda från dina miljövariabler för system/operativsystem. azd miljövariabler konfigurerar malletablering och distributionsuppgifter och är tillgängliga med kommandon som azd env eller azd env get-values.

En skärmbild av miljöns mappstruktur.

Systemmiljövariabler är inte direkt åtkomliga via azd kommandon och bör hanteras med anpassat gränssnitt eller PowerShell-skript, vanligtvis med hjälp av azdkrokar.

Kan azd kommandon läsa och skriva systemmiljövariabler direkt?

Nej, azd kommandon kan inte läsa eller skriva systemmiljövariabler. Kommandon som eller azd env get-values fungerar på värden som azd env set lagras i mallfilen .env för en specifik azd miljö. azd miljöer hanteras med hjälp av undermappar i katalogen för .azure/<environment name> projektmallen, vilket gör att mallen kan ha flera miljöer. Miljöundermappar innehåller konfigurationsfiler som .env beskriver miljön.

Använd anpassade gränssnitts- eller PowerShell-skript med azdkrokar för att läsa eller skriva miljövariabler på systemnivå.

Vad är relationen mellan utdatavariabler som anges i main.bicep fil- och azd miljövariablerna?

Utdatavariabler som anges i main.bicep filen lagras automatiskt i filen i mallen azd.env. Överväg följande utdatavariabler i en main.bicep mallinfrastrukturfil:

output API_BASE_URL string = api.outputs.SERVICE_API_URI
output REACT_APP_WEB_BASE_URL string = web.outputs.SERVICE_WEB_URI

När en lyckad eller , azd skriver dessa två variabler till .env filen i katalogen för .azure/<environment name> ditt azd provisionprojekt:azd up

API_BASE_URL="<example-api-url>"
output REACT_APP_WEB_BASE_URL="<example-app-url>"

Du kan sedan komma åt variablerna .env från filen med hjälp av azd env get-values.

Vilka miljövariabler anges som standard i .env filen?

Följande miljövariabler anges som standard i .env filen:

Namn Beskrivning Exempelvärden När det är tillgängligt
AZURE_ENV_NAME Namnet på den miljö som används. todo-app-dev När en miljö skapas (till exempel när azd init eller azd env new har körts).
AZURE_LOCATION Platsen för den miljö som används. eastus2 Precis innan en miljö etableras för första gången.
AZURE_PRINCIPAL_ID Användarens/tjänstens huvudnamn som körs. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Bestäms automatiskt under etablering (tillfälliga).
AZURE_SUBSCRIPTION_ID Målprenumerationen. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Precis innan en miljö etableras för första gången.
SERVICE_<service>_IMAGE_NAME Det fullständiga namnet på containeravbildningen som publicerats till Azure Container Registry för containerapptjänster. todoapp/web-dev:azdev-deploy-1664988805 Efter en lyckad publicering av en containerapp bild

Hämta azd miljövariabler med kommandot azd env get-values .

azd env get-values

Vanliga orsaker till åtkomst azd till miljövariabler är följande:

  • Utför ytterligare konfiguration i hook-skript.
  • .env Exponera värdena från mallen till programkodramverket, till exempel Node.js eller .NET.
  • .env Skriv värdena till systemmiljövariabler.

Tips/Råd

Var försiktig när du ställer in systemmiljövariabler, eftersom de kan orsaka konflikter med andra mallar som delar samma miljövariabelnamn.

Hur ställer jag in en ny azd miljövariabel manuellt?

Ange ytterligare azd miljövariabler med kommandot azd env set och ange nyckeln och värdet för variabeln.

Vanliga orsaker till att ange azd miljövariabler är följande:

  • Få åtkomst till Azure-resursinformation som skapas under etableringen som behövs under distributionen.
  • Åsidosätt eller ändra standardvärden azd för miljövariabler.
  • Ange ytterligare anpassade konfigurationsvärden för användning i etablering, distribution eller anpassade skript.
azd env set MY_KEY MyValue

Hur kopierar eller skriver azd jag miljövariabler som systemmiljövariabler?

I vissa scenarier kanske du vill kopiera azd miljövariabler till en annan miljöfil eller till din systemmiljö för användning av språkramverk. Du kanske till exempel vill använda slutpunkts-URL:er från etablerade Azure-tjänster för att ansluta till dessa tjänster i din appkod. Använd anpassade skript för att hämta azd miljövariabler och ange dem sedan som systemmiljövariabler. Det är vanligt att köra dessa skript som krokar under azd livscykeln, som du ser i följande exempel:

Anmärkning

Var försiktig när du kopierar azd miljövariabler till ditt lokala system eller andra operativsystemmiljöer. Systemmiljövariabler med matchande namn kan hämtas av azd och orsaka konflikter mellan olika azd mallar eller olika azd miljöer.

postprovision:
    windows:
        shell: pwsh
        run: ./scripts/map-env-vars.ps1
        interactive: false
        continueOnError: false
    posix:
        shell: sh
        run: ./scripts/map-env-vars.sh
        interactive: false
        continueOnError: false

Det refererade shell-skriptet för Linux hämtar miljövariablerna och exporterar azd dem som systemmiljövariabler:

echo "Loading azd .env file from current environment..."

while IFS='=' read -r key value; do
    value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
    export "$key=$value"
done <<EOF
$(azd env get-values)
EOF

Det refererade PowerShell-skriptet för Windows hämtar miljövariablerna och exporterar azd dem som systemmiljövariabler:

Write-Host "Loading azd .env file from current environment"
foreach ($line in (& azd env get-values)) {
    if ($line -match "([^=]+)=(.*)") {
        $key = $matches[1]
        $value = $matches[2] -replace '^"|"$'
        [Environment]::SetEnvironmentVariable($key, $value)
    }
}

Nästa steg