Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
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 |
Jaký je doporučený přístup k načtení azd proměnných prostředí ze .env souboru? Proč bych to měl udělat?
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.
-
.envZpřístupňuje hodnoty ze šablony do architektury kódu aplikace, například Node.js nebo .NET. -
.envZapiš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í
azdhodnoty 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)
}
}