Sdílet prostřednictvím


Práce s proměnnými prostředí Azure Developer CLI

Azure Developer CLI (azd) používá proměnné prostředí k ukládání a správě nastavení konfigurace pro prostředí nasazení. Tyto proměnné řídí, jak je vaše aplikace zřízená, nasazená a spuštěná v Azure. Tento článek vysvětluje, jak proměnné prostředí fungují v rámci azd prostředí, a poskytuje pokyny k jejich efektivní správě.

Principy proměnných prostředí

V kontextu Azure Developer CLI jsou proměnné prostředí páry klíč-hodnota, které jsou svázané s konkrétními pojmenovanými prostředími, jako jsou vývoj, testování nebo prod. Každé azd prostředí udržuje vlastní sadu proměnných prostředí, což umožňuje konfigurovat různá nastavení pro různé cíle nasazení.

Proměnné azd prostředí jsou uložené v .env souborech ve složkách prostředí ve .azure složce. Slouží jako vstupy pro:

  • Pracovní postupy nasazení aplikací
  • Konfigurace služeb a připojení Azure
  • Zřizování infrastruktury prostřednictvím Bicep a Terraformu

Na rozdíl od tradičních proměnných prostředí, které existují na úrovni operačního systému, azd jsou proměnné prostředí vymezeny na konkrétní prostředí v rámci projektu a poskytují izolaci mezi různými cíli nasazení.

Proměnné prostředí poskytují několik klíčových výhod při práci s azd:

  • Izolace prostředí: Udržujte konfigurace pro vývoj, testování a produkční prostředí oddělené a odlišné.
  • Konzistence konfigurace: Zajistěte, aby všichni členové týmu používali stejná nastavení pro konkrétní prostředí.
  • Infrastruktura jako kód: Definujte parametrizaci infrastruktury prostřednictvím proměnných místo pevně zakódovaných hodnot.
  • Automatizace nasazení: Povolte kanály CI/CD k nasazení do různých prostředí pomocí stejného základu kódu, ale různých konfigurací.
  • Zjednodušená správa: Snadné aktualizace nastavení ve všech službách v prostředí z centrálního umístění

Každé azd prostředí má vlastní sadu proměnných, což umožňuje konfigurace specifické pro prostředí a současně používat stejný kód aplikace a šablony infrastruktury.

Proměnné prostředí a soubory .env

azd Proměnné prostředí jsou uloženy v .env souborech v adresářích specifických pro prostředí vašeho projektu. Když vytváříte prostředí pomocí azd env new <name>, vytvoří se adresářová struktura:

.azure/
├── <environment-name>/
│   ├── .env                   # Environment variables for this environment

Soubor .env používá standardní formát, ve kterém každý řádek představuje dvojici klíč-hodnota:

KEY1=value1
KEY2=value2

Tip

Další informace o prostředích najdete v článku azd.

Když spustíte příkazy, jako azd upje například , azd automaticky načte proměnné ze souboru vybraného .env prostředí.

Tyto proměnné ovlivňují:

  • Zřizování infrastruktury: Proměnné, jako jsou AZURE_LOCATION a AZURE_SUBSCRIPTION_ID určují, kde a jak se vytvářejí prostředky.
  • Nasazení: Proměnné, jako jsou koncové body služby, určují, jak se vaše aplikace připojuje ke službám Azure.
  • Konfigurace aplikace: Proměnné lze předat konfiguraci aplikace, aby bylo možné řídit jeho chování.
  • Pojmenování prostředků: Proměnné, jako jsou AZURE_RESOURCE_GROUP vliv vzory pojmenování prostředků.

Soubor .env se také automaticky azd aktualizuje během operací, jako je azd init, azd provisiona azd deploy, zachytávání výstupů ze šablon infrastruktury a jejich ukládání pro budoucí použití.

Nastavení proměnných prostředí

Různé metody můžete použít k nastavení azd proměnných prostředí v závislosti na scénáři.

Použití příkazů rozhraní příkazového řádku

Doporučený způsob nastavení proměnné prostředí je použití azd env set příkazu, který zahrnuje kontroly pro zajištění platných hodnot:

azd env set <key> <value>

Pokud chcete například nastavit konfigurační hodnotu pro vaši aplikaci:

azd env set API_TIMEOUT 5000

Příkaz přidá nebo aktualizuje proměnnou v .env souboru aktuálně vybraného prostředí. Pomocí příznaku --environment můžete také cílit na konkrétní prostředí:

azd env set API_TIMEOUT 5000 --environment prod

Ověření správného nastavení proměnné prostředí:

azd env get-value API_TIMEOUT

Výstup z Bicep

Výkonnou funkcí azd je schopnost automaticky zaznamenávat výstupní parametry ze šablon infrastruktury Bicep jako proměnné prostředí. Například při definování výstupního parametru v main.bicep souboru:

output API_ENDPOINT string = apiService.outputs.SERVICE_ENDPOINT_URL

Po spuštění azd provisionse tento výstup automaticky uloží do souboru prostředí .env :

API_ENDPOINT=https://api-dev-123456.azurewebsites.net

Tento přístup zajišťuje, že vaše aplikace bude mít vždy přístup k nejaktuálnějším informacím o prostředcích, například:

  • Koncové body služby a adresy URL
  • Názvy a identifikátory prostředků

Získání a používání proměnných prostředí

Po nastavení můžete přistupovat k proměnným prostředí v několika kontextech.

Příkazy rozhraní příkazového řádku

Zobrazení všech proměnných prostředí pro aktuální prostředí:

azd env get-values

Zobrazení hodnoty konkrétní proměnné:

azd env get-value API_ENDPOINT

Pro strojově čitelný výstup (užitečný ve skriptech):

azd env get-values --output json

Použití proměnných prostředí v souborech infrastruktury

Pomocí proměnných prostředí můžete přizpůsobit šablony infrastruktury. To je užitečné pro pojmenování, označování nebo konfiguraci prostředků na základě aktuálního prostředí. azd také používá značky k vyhledání prostředků v Azure pro nasazení a další úlohy.

Zvažte následující běžný tok:

  1. Během azd inittéto azd doby nastavíte tyto proměnné prostředí na základě odpovědi uživatele na výzvy:

    AZURE_ENV_NAME=myapp-dev
    AZURE_LOCATION=eastus2
    
  2. Odkazujte na tyto proměnné ve main.parameters.jsoninfra složce. azd nahradí hodnoty během zřizování a předá přeložené parametry do Bicep:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "name": {
          "value": "${AZURE_ENV_NAME}"
        },
        "location": {
          "value": "${AZURE_LOCATION}"
        }
      }
    }
    
  3. Definujte odpovídající parametry v šabloně Bicep:

    @description('Name of the environment used to derive resource names and tags.')
    param name string
    
    @minLength(1)
    @description('Primary Azure region for all resources.')
    param location string
    

    azd poskytuje tyto parametry Bicep s nahrazenými hodnotami v main.parameters.json.

  4. Pomocí parametrů pro pojmenování prostředků a značky později určete, ke kterému prostředí prostředek patří:

    var resourceToken = toLower(uniqueString(resourceGroup().id, name, location))
    
    resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
      name: 'st${resourceToken}'
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
      tags: {
        Environment: name
        Project: 'myproject'
      }
    }
    

Tento model udržuje šablony flexibilní, umožňuje přizpůsobení podle prostředí bez změn kódu a zlepšuje zásady správného řízení prostředků (pojmenování, označování a zjišťování).

Poznámka:

azd také spoléhá na označování k vyhledání prostředků Azure během fáze nasazení.

Volané služby

azd Proměnné prostředí se automaticky předem načtou a jsou k dispozici v hácích a vlastních skriptech definovaných v azure.yaml souboru. Proměnné prostředí můžete získat přístup pomocí následující syntaxe:

# Use the variables in your script
echo "API endpoint: $API_ENDPOINT"
echo "Deploying to: $AZURE_LOCATION"

V souboru můžete definovat háky azure.yaml pro spuštění těchto skriptů v konkrétních bodech azd životního cyklu:

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

Tip

Další informace o používání háčků najdete v článku Přizpůsobení pracovních postupů pomocí háku .

Odebrání nebo aktualizace proměnných

Odebrání proměnné z prostředí:

azd env unset VARIABLE_NAME

Aktualizace existující proměnné:

azd env set VARIABLE_NAME "new-value"

Aktualizace místních proměnných prostředí z aktuálního stavu prostředků Azure:

azd env refresh

Aktualizace prostředí je užitečná v následujících případech:

  • Chcete zajistit, aby místní .env soubor odrážel nejnovější výstupy z vaší infrastruktury (jako jsou připojovací řetězce, koncové body atd.).
  • Po aktualizaci prostředí potřebujete synchronizovat proměnné prostředí.

AZD vs. proměnné prostředí operačního systému

azd Proměnné prostředí a proměnné prostředí operačního systému slouží k různým účelům a pracují různými způsoby:

Pojem Azure Developer CLI Operační systém
Umístění Uložené v .azure/<env-name>/.env souborech Nastavení v prostředí operačního systému
Scope Vymezeno na konkrétní pojmenované prostředí v rámci projektu Globální pro uživatelskou relaci nebo systém
Vedení Spravované pomocí azd env příkazů Spravované pomocí příkazů specifických pro operační systém (exportsetatd.)
Access Automaticky načteno příkazy azd Obvykle se načítá explicitně ve skriptech nebo aplikacích.
Target Svázané s prostředky a nasazeními Azure Konfigurace systému pro obecné účely
Životní cyklus Zachování mezi relacemi terminálu V závislosti na tom, jak jsou nastavené, může být dočasné nebo trvalé.

azd automaticky nečte ani zapisuje proměnné prostředí operačního systému. S oběma typy proměnných ale můžete pracovat pomocí vlastních skriptů.

Čtení azd proměnných prostředí a proměnných prostředí operačního systému:

# Access OS environment variable
echo "OS variable: $PATH"

# Access azd environment variable
echo "AZD variable: $(azd env get-value MY_VARIABLE)"

Zápis azd proměnných prostředí do proměnných prostředí operačního systému nebo architektury:

# Load all azd environment variables into the current shell session
while IFS='=' read -r key value; do
    value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
    export "$key=$value"
done <<EOF
$(azd env get-values)
EOF

Standardní proměnné prostředí

azd sady a používá několik běžných proměnných prostředí ve všech prostředích:

Variable Popis Example Při nastavení
AZURE_ENV_NAME Název aktuálního prostředí dev Při vytváření prostředí
AZURE_LOCATION Oblast Azure, ve které se nasazují prostředky eastus Během prvního zřizování
AZURE_SUBSCRIPTION_ID ID použitého předplatného Azure 00000000-0000-0000-0000-000000000000 Během prvního zřizování
AZURE_RESOURCE_GROUP Název skupiny prostředků rg-myapp-dev Během zřizování
AZURE_PRINCIPAL_ID ID spuštěného uživatele nebo instančního objektu 00000000-0000-0000-0000-000000000000 Během zřizování
AZURE_PRINCIPAL_TYPE Typ objektu zabezpečení v prostředí. 1a2b3c Během zřizování
AZURE_TENANT_ID ID použitého tenanta Azure. 00000000-0000-0000-0000-000000000000 Během zřizování

Důležité informace o tajných kódech a citlivých datech

Proměnné prostředí jsou sice vhodné pro konfiguraci, ale vyžadují speciální zpracování citlivých dat:

Vyhněte se ukládání tajných kódů do souborů .env

.env soubory jsou obvykle uložené ve formátu prostého textu a mohou být snadno:

  • Náhodné potvrzení správy zdrojového kódu
  • Sdílené nebo zkopírované bez správných ochrany
  • Zobrazit každý, kdo má přístup k souborům projektu
  • Součástí protokolů nebo zpráv o chybách

Výstraha

Nikdy neukládejte tajné kódy do souboru Azure Developer CLI .env . Tyto soubory je možné snadno sdílet nebo kopírovat do neautorizovaných umístění nebo se vrátit se změnami do správy zdrojového kódu. Pro chráněná nebo bez tajných kódů používejte služby, jako je Azure Key Vault nebo Řízení přístupu na základě role (RBAC).

Alternativy pro zpracování tajných kódů

U citlivých dat zvažte tyto bezpečnější přístupy:

  • Odkazy na Azure Key Vault: Ukládejte tajné kódy ve službě Azure Key Vault a odkazujte na ně ve vašem .env souboru:

    azd env set-secret <secret-value>
    

    Tento příkaz vytvoří tajný klíč služby Key Vault a uloží na něj odkaz místo skutečné hodnoty v .env souboru.

  • Spravované identity: Nakonfigurujte služby Azure tak, aby používaly spravované identity místo připojovacích řetězců nebo přístupových klíčů.

  • Zabezpečení specifické pro prostředí: Použití přísnějších kontrolních mechanismů zabezpečení u produkčních prostředí než u vývojových prostředí.

  • Tajné kódy za běhu: Vygenerujte během nasazování krátkodobé přihlašovací údaje místo ukládání trvalých tajných kódů.

Další kroky