Časté dotazy k proměnným prostředí

Tento článek odpovídá na nejčastější dotazy týkající se práce s proměnnými prostředí a Azure Developer CLI (azd).

Tip

Komplexní průvodce vytvářením a správou prostředí v Azure Developer CLI najdete v tématu Práce s prostředími v Azure Developer CLI.

Jaké jsou rozdíly mezi azd proměnnými prostředí a systémovými proměnnými prostředí?

azd Proměnné prostředí se ukládají do .env souboru v .azure/<environment name> adresáři projektu a jsou oddělené od proměnných prostředí systému nebo operačního systému. azd Proměnné prostředí konfigurují úlohy zřizování šablon a nasazení a jsou přístupné pomocí příkazů, jako azd env jsou nebo azd env get-values.

Snímek obrazovky se strukturou složek prostředí

Systémové proměnné prostředí nejsou přímo přístupné prostřednictvím azd příkazů a měly by se spravovat pomocí vlastních prostředí nebo skriptů PowerShellu, obecně pomocí azdháků.

Mohou azd příkazy přímo číst a zapisovat systémové proměnné prostředí?

Ne, azd příkazy nemůžou číst ani zapisovat systémové proměnné prostředí. Příkazy, jako azd env set jsou nebo azd env get-values pracují s hodnotami uloženými v souboru šablony .env pro konkrétní azd prostředí. azd prostředí se spravují pomocí podsložek v .azure/<environment name> adresáři šablony projektu, což umožňuje šabloně mít více prostředí. Podsložky prostředí obsahují konfigurační soubory, jako .env je například popis prostředí.

Pomocí vlastních prostředí nebo skriptů PowerShellu s azdháky můžete číst nebo zapisovat proměnné prostředí na úrovni systému.

Jaký je vztah mezi výstupními proměnnými nastavenými v main.bicep souboru a azd proměnnými prostředí?

Výstupní proměnné nastavené v main.bicep souboru se automaticky ukládají do .env souboru šablony azd . Vezměte v úvahu následující výstupní proměnné v main.bicep souboru infrastruktury šablony:

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

Po úspěšném azd up provedení nebo azd provisionazd zapíše tyto dvě proměnné do .env souboru v .azure/<environment name> adresáři projektu:

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

K těmto proměnným pak můžete přistupovat ze .env souboru pomocí .azd env get-values

Které proměnné prostředí jsou ve výchozím nastavení v .env souboru nastavené?

Ve výchozím nastavení jsou v .env souboru nastaveny následující proměnné prostředí:

Název Popis Ukázkové hodnoty Pokud je k dispozici
AZURE_ENV_NAME Název používaného prostředí. todo-app-dev Při vytvoření prostředí (například po spuštění příkazu azd init nebo azd env new).
AZURE_LOCATION Umístění používaného prostředí. eastus2 Těsně před prvním zřízením prostředí.
AZURE_PRINCIPAL_ID Spuštěný uživatel nebo instanční objekt. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Určuje se automaticky během zřizování (dočasný).
AZURE_SUBSCRIPTION_ID Cílové předplatné. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Těsně před prvním zřízením prostředí.
SERVICE_<service>_IMAGE_NAME Úplný název image kontejneru publikované ve službě Azure Container Registry pro služby container App Services. todoapp/web-dev:azdev-deploy-1664988805 Po úspěšném publikování containerapp image

Načtěte azd proměnné prostředí pomocí azd env get-values příkazu.

azd env get-values

Mezi běžné důvody přístupu k azd proměnným prostředí patří:

  • Proveďte další konfiguraci ve skriptech háku.
  • .env Zpřístupňuje hodnoty ze šablony do architektury kódu aplikace, například Node.js nebo .NET.
  • .env Zapište hodnoty do systémových proměnných prostředí.

Tip

Při nastavování systémových proměnných prostředí buďte opatrní, protože můžou způsobit konflikty s jinými šablonami, které sdílejí stejné názvy proměnných prostředí.

Jak můžu ručně nastavit novou azd proměnnou prostředí?

Pomocí příkazu nastavte další azd proměnné azd env set prostředí a zadejte klíč a hodnotu proměnné.

Mezi běžné důvody nastavení azd proměnných prostředí patří:

  • Získejte přístup k informacím o prostředcích Azure vytvořených během zřizování, které je potřeba během nasazování.
  • Přepsat nebo změnit výchozí azd hodnoty proměnných prostředí
  • Zadejte další vlastní hodnoty konfigurace pro použití při zřizování, nasazení nebo vlastních skriptech.
azd env set MY_KEY MyValue

Jak můžu kopírovat nebo zapisovat azd proměnné prostředí jako systémové proměnné prostředí?

V některých scénářích můžete chtít zkopírovat azd proměnné prostředí do jiného souboru prostředí nebo do systémového prostředí pro použití v jazykových architekturách. Můžete například chtít použít adresy URL koncových bodů ze zřízených služeb Azure pro připojení k těmto službám v kódu aplikace. Pomocí vlastních skriptů načtěte azd proměnné prostředí a pak je nastavte jako systémové proměnné prostředí. Tyto skripty je běžné spouštět jako háky během azd životního cyklu, jak je vidět v následujícím příkladu:

Poznámka:

Při kopírováníproměnných azd Systémové proměnné prostředí s odpovídajícími názvy je možné vybrat azd a způsobit konflikty mezi různými azd šablonami nebo různými azd prostředími.

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

Odkazovaný skript prostředí pro Linux načte azd proměnné prostředí a exportuje je jako systémové proměnné prostředí:

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

Odkazovaný skript PowerShellu azd pro Windows načte proměnné prostředí a exportuje je jako systémové proměnné prostředí:

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)
    }
}

Další kroky