Condividi tramite


Domande frequenti su variabili di ambiente

Questo articolo risponde alle domande frequenti sull'uso delle variabili di ambiente e dell'interfaccia della riga di comando per sviluppatori di Azure (azd).

Suggerimento

Per una guida completa sulla creazione e la gestione degli ambienti nell'interfaccia della riga di comando per sviluppatori di Azure, vedere Usare gli ambienti nell'interfaccia della riga di comando per sviluppatori di Azure.

Quali sono le differenze tra azd le variabili di ambiente e le variabili di ambiente di sistema?

azd le .env variabili di ambiente vengono archiviate nel file nella .azure/<environment name> directory del progetto e sono separate dalle variabili di ambiente di sistema/sistema operativo. azd le variabili di ambiente configurano il provisioning dei modelli e le attività di distribuzione e sono accessibili usando comandi come azd env o azd env get-values.

Screenshot della struttura di cartelle dell'ambiente.

Le variabili di ambiente di sistema non sono direttamente accessibili tramite azd i comandi e devono essere gestite con shell personalizzata o script di PowerShell, in genere usando azdhook.

I comandi possono azd leggere e scrivere direttamente variabili di ambiente di sistema?

No, azd i comandi non possono leggere o scrivere variabili di ambiente di sistema. I comandi, azd env set ad esempio o azd env get-values operano sui valori archiviati nel file modello .env per un ambiente specifico azd . azd gli ambienti vengono gestiti usando sottocartelle nella .azure/<environment name> directory del modello di progetto, che consente al modello di avere più ambienti. Le sottocartelle di ambiente contengono file di configurazione, .env ad esempio che descrivono l'ambiente.

Usare script personalizzati della shell o di PowerShell con azdhook per leggere o scrivere variabili di ambiente a livello di sistema.

Qual è la relazione tra le variabili di output impostate nelle main.bicep variabili di file e azd di ambiente?

Le variabili di output impostate nel main.bicep file vengono archiviate automaticamente nel .env file del azd modello. Considerare le variabili di output seguenti in un main.bicep file di infrastruttura modello:

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

Dopo un esito positivo azd up o azd provision, azd scrive queste due variabili nel .env file nella .azure/<environment name> directory del progetto:

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

È quindi possibile accedere a tali variabili dal .env file usando azd env get-values.

Quali variabili di ambiente vengono impostate nel .env file per impostazione predefinita?

Per impostazione predefinita, nel file vengono impostate le .env variabili di ambiente seguenti:

Nome Descrizione Valori di esempio Quando disponibile
AZURE_ENV_NAME Nome dell'ambiente in uso. todo-app-dev Quando viene creato un ambiente (ad esempio, dopo l'esecuzione di azd init o azd env new).
AZURE_LOCATION Posizione dell'ambiente in uso. eastus2 Prima del provisioning di un ambiente per la prima volta.
AZURE_PRINCIPAL_ID Entità utente/servizio in esecuzione. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Determinato automaticamente durante il provisioning (temporaneo).
AZURE_SUBSCRIPTION_ID Sottoscrizione di destinazione. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Prima del provisioning di un ambiente per la prima volta.
SERVICE_<service>_IMAGE_NAME Nome completo dell'immagine del contenitore pubblicata in Registro Azure Container per i servizi app contenitore. todoapp/web-dev:azdev-deploy-1664988805 Dopo la corretta pubblicazione di un'immagine containerapp

Recuperare le azd variabili di ambiente usando il azd env get-values comando .

azd env get-values

I motivi comuni per accedere azd alle variabili di ambiente includono i seguenti:

  • Eseguire una configurazione aggiuntiva negli script hook.
  • Esporre i .env valori del modello al framework di codice dell'applicazione, ad esempio Node.js o .NET.
  • Scrivere i valori nelle .env variabili di ambiente di sistema.

Suggerimento

Prestare attenzione quando si impostano le variabili di ambiente di sistema, in quanto possono causare conflitti con altri modelli che condividono gli stessi nomi delle variabili di ambiente.

Come si imposta manualmente una nuova azd variabile di ambiente?

Impostare variabili di ambiente aggiuntive azd usando il azd env set comando , specificando la chiave e il valore per la variabile.

I motivi comuni per impostare azd le variabili di ambiente includono quanto segue:

  • Accedere alle informazioni sulle risorse di Azure create durante il provisioning necessarie durante la distribuzione.
  • Eseguire l'override o modificare i valori predefiniti azd delle variabili di ambiente.
  • Specificare valori di configurazione personalizzati aggiuntivi da usare per il provisioning, la distribuzione o gli script personalizzati.
azd env set MY_KEY MyValue

Come si copiano o scrivono azd variabili di ambiente come variabili di ambiente di sistema?

In alcuni scenari può essere necessario copiare azd le variabili di ambiente in un altro file di ambiente o nell'ambiente di sistema per l'uso da parte dei framework del linguaggio. Ad esempio, è possibile usare gli URL degli endpoint dai servizi di Azure di cui è stato effettuato il provisioning per connettersi a tali servizi nel codice dell'app. Usare script personalizzati per recuperare azd le variabili di ambiente e quindi impostarle come variabili di ambiente di sistema. È comune eseguire questi script come hook durante il azd ciclo di vita, come illustrato nell'esempio seguente:

Annotazioni

Prestare attenzione quando si copiano azd variabili di ambiente nel sistema locale o in altri ambienti operativi. Le variabili di ambiente di sistema con nomi corrispondenti possono essere prelevate da azd e causano conflitti tra modelli diversi azd o ambienti diversi azd .

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

Lo script della shell di riferimento per Linux recupera le azd variabili di ambiente e le esporta come variabili di ambiente di sistema:

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

Lo script di PowerShell di riferimento per Windows recupera le azd variabili di ambiente e le esporta come variabili di ambiente di sistema:

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

Passaggi successivi