FAQ sur les variables d’environnement

Cet article répond aux questions fréquemment posées sur l’utilisation des variables d’environnement et de l’interface de ligne de commande du développeur Azure (azd).

Conseil / Astuce

Pour obtenir un guide complet sur la création et la gestion d’environnements dans Azure Developer CLI, consultez Utiliser des environnements dans Azure Developer CLI.

Quelles sont les différences entre azd les variables d’environnement et les variables d’environnement système ?

azd les variables d’environnement sont stockées dans le .env fichier dans le .azure/<environment name> répertoire de votre projet et sont séparées de vos variables d’environnement système/système d’exploitation. azd les variables d’environnement configurent les tâches d’approvisionnement et de déploiement de modèles et sont accessibles à l’aide de commandes telles que azd env ou azd env get-values.

Capture d’écran de la structure de dossiers d’environnement.

Les variables d’environnement système ne sont pas directement accessibles via azd des commandes et doivent être gérées avec des scripts Shell ou PowerShell personnalisés, généralement à l’aide azdde hooks.

Les commandes peuvent-elles azd lire et écrire directement des variables d’environnement système ?

Non, azd les commandes ne peuvent pas lire ou écrire des variables d’environnement système. Commandes telles que azd env set ou azd env get-values fonctionnent sur des valeurs stockées dans le fichier de modèle .env pour un environnement spécifique azd . azd les environnements sont gérés à l’aide de sous-dossiers dans le .azure/<environment name> répertoire de votre modèle de projet, ce qui permet à votre modèle d’avoir plusieurs environnements. Les sous-dossiers d’environnement contiennent des fichiers de configuration tels que .env ceux qui décrivent l’environnement.

Utilisez un interpréteur de commandes personnalisé ou des scripts PowerShell avec azddes hooks pour lire ou écrire des variables d’environnement au niveau du système.

Quelle est la relation entre les variables de sortie définies dans les variables de fichier et azd d’environnement main.bicep ?

Les variables de sortie définies dans le main.bicep fichier sont automatiquement stockées dans le .env fichier de votre azd modèle. Tenez compte des variables de sortie suivantes dans un fichier d’infrastructure main.bicep de modèle :

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

Après une réussite azd up ou azd provision, azd écrit ces deux variables dans le .env fichier dans le .azure/<environment name> répertoire de votre projet :

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

Vous pouvez ensuite accéder à ces variables à partir du fichier à l’aide .envazd env get-valuesde .

Quelles variables d’environnement sont définies dans le .env fichier par défaut ?

Les variables d’environnement suivantes sont définies dans le .env fichier par défaut :

Nom Descriptif Exemples de valeurs Lorsqu’il est disponible
AZURE_ENV_NAME Nom de l’environnement en cours d’utilisation. todo-app-dev Lorsqu’un environnement est créé (après avoir exécuté azd init ou azd env new, par exemple).
AZURE_LOCATION Emplacement de l’environnement en cours d’utilisation. eastus2 Juste avant l’approvisionnement d’un environnement pour la première fois.
AZURE_PRINCIPAL_ID Principal d’utilisateur/de service en cours d’exécution. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Déterminé automatiquement lors de l’approvisionnement (éphémère).
AZURE_SUBSCRIPTION_ID Abonnement ciblé. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Juste avant l’approvisionnement d’un environnement pour la première fois.
SERVICE_<service>_IMAGE_NAME Nom complet de l’image conteneur publiée dans Azure Container Registry pour les services d’application conteneur. todoapp/web-dev:azdev-deploy-1664988805 Après une publication réussie d’une containerapp image

Récupérez des azd variables d’environnement à l’aide de la azd env get-values commande.

azd env get-values

Les raisons courantes d’accéder azd aux variables d’environnement sont les suivantes :

  • Effectuez une configuration supplémentaire dans les scripts de hook.
  • Exposez les .env valeurs du modèle à l’infrastructure de code d’application, comme Node.js ou .NET.
  • Écrivez les valeurs dans les .env variables d’environnement système.

Conseil / Astuce

Soyez prudent lorsque vous définissez des variables d’environnement système, car elles peuvent provoquer des conflits avec d’autres modèles qui partagent les mêmes noms de variables d’environnement.

Comment définir manuellement une nouvelle azd variable d’environnement ?

Définissez des variables d’environnement supplémentaires azd à l’aide de la azd env set commande, en fournissant la clé et la valeur de votre variable.

Les raisons courantes de définir azd des variables d’environnement sont les suivantes :

  • Accédez aux informations de ressource Azure créées lors de l’approvisionnement nécessaire pendant le déploiement.
  • Remplacez ou modifiez les valeurs de variable d’environnement par défaut azd .
  • Fournissez des valeurs de configuration personnalisées supplémentaires à utiliser dans l’approvisionnement, le déploiement ou les scripts personnalisés.
azd env set MY_KEY MyValue

Comment copier ou écrire azd des variables d’environnement en tant que variables d’environnement système ?

Dans certains scénarios, vous pouvez copier azd des variables d’environnement dans un autre fichier d’environnement ou dans votre environnement système pour une utilisation par les frameworks de langage. Par exemple, vous pouvez utiliser des URL de point de terminaison à partir de services Azure provisionnés pour vous connecter à ces services dans votre code d’application. Utilisez des scripts personnalisés pour récupérer azd des variables d’environnement, puis définissez-les en tant que variables d’environnement système. Il est courant d’exécuter ces scripts en tant que hooks pendant le azd cycle de vie, comme indiqué dans l’exemple suivant :

Remarque

Soyez prudent lors de la copie de variables d’environnement azd dans votre système local ou dans d’autres environnements d’exploitation. Les variables d’environnement système avec des noms correspondants peuvent être récupérées et azd provoquer des conflits entre différents azd modèles ou différents azd environnements.

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

Le script shell référencé pour Linux récupère les azd variables d’environnement et les exporte en tant que variables d’environnement système :

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

Le script PowerShell référencé pour Windows récupère les azd variables d’environnement et les exporte en tant que variables d’environnement système :

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

Étapes suivantes