Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Azure Developer CLI (azd) verwendet Umgebungsvariablen zum Speichern und Verwalten von Konfigurationseinstellungen für Bereitstellungsumgebungen. Diese Variablen steuern, wie Ihre Anwendung in Azure bereitgestellt, implementiert und ausgeführt wird. In diesem Artikel wird erläutert, wie Umgebungsvariablen in azd Umgebungen funktionieren und Anleitungen zum effektiven Verwalten dieser Variablen bieten.
Grundlegendes zu Umgebungsvariablen
Im Kontext der Azure Developer CLI sind Umgebungsvariablen Schlüsselwertpaare, die an bestimmte benannte Umgebungen wie Dev, Test oder Prod gebunden sind. Jede azd Umgebung verwaltet einen eigenen Satz von Umgebungsvariablen, sodass Sie unterschiedliche Einstellungen für unterschiedliche Bereitstellungsziele konfigurieren können.
Umgebungsvariablen azd werden in .env Dateien in Ihren Umgebungsordnern im .azure Ordner gespeichert. Sie dienen als Eingaben für:
- Workflows für die Anwendungsbereitstellung
- Konfigurationen für Azure-Dienste und -Verbindungen
- Infrastrukturbereitstellung durch Bicep und Terraform
Im Gegensatz zu herkömmlichen Umgebungsvariablen, die auf Betriebssystemebene vorhanden sind, azd sind Umgebungsvariablen auf bestimmte Umgebungen innerhalb Ihres Projekts ausgerichtet, wodurch eine Isolation zwischen verschiedenen Bereitstellungszielen bereitgestellt wird.
Umgebungsvariablen bieten mehrere wichtige Vorteile beim Arbeiten mit azd.
- Umgebungsisolation: Halten Sie die Konfigurationen für Entwicklung, Test und Produktion getrennt und eindeutig voneinander getrennt.
- Konfigurationskonsistenz: Stellen Sie sicher, dass alle Teammitglieder dieselben Einstellungen für eine bestimmte Umgebung verwenden.
- Infrastruktur als Code: Definieren der Infrastrukturparameterisierung durch Variablen anstelle hartcodierter Werte.
- Bereitstellungsautomatisierung: Ermöglichen Sie CI/CD-Pipelines für die Bereitstellung in verschiedenen Umgebungen mithilfe derselben Codebasis, aber verschiedener Konfigurationen.
- Vereinfachte Verwaltung: Einfaches Aktualisieren von Einstellungen für alle Dienste in einer Umgebung von einem zentralen Standort aus.
Jede azd Umgebung verfügt über einen eigenen Satz von Variablen, der umgebungsspezifische Konfigurationen ermöglicht, während sie denselben Anwendungscode und die gleichen Infrastrukturvorlagen verwenden.
Umgebungsvariablen und env-Dateien
Die azd Umgebungsvariablen werden in .env Dateien in den umgebungsspezifischen Verzeichnissen Ihres Projekts gespeichert. Wenn Sie eine Umgebung mithilfe von azd env new <name> erstellen, wird eine Verzeichnisstruktur erstellt.
.azure/
├── <environment-name>/
│ ├── .env # Environment variables for this environment
Die .env Datei verwendet ein Standardformat, in dem jede Zeile ein Schlüssel-Wert-Paar darstellt:
KEY1=value1
KEY2=value2
Wenn Sie Befehle wie azd up ausführen, werden Variablen automatisch aus der azd-Datei der ausgewählten Umgebung geladen.
Diese Variablen beeinflussen:
-
Infrastrukturbereitstellung: Variablen wie
AZURE_LOCATIONundAZURE_SUBSCRIPTION_IDbestimmen, wo und wie Ressourcen erstellt werden. - Bereitstellung: Variablen wie Dienstendpunkte steuern, wie Ihre Anwendung eine Verbindung mit Azure-Diensten herstellt.
- Anwendungskonfiguration: Variablen können an Ihre Anwendungskonfiguration übergeben werden, um das Verhalten zu steuern.
-
Ressourcenbenennung: Variablen wie
AZURE_RESOURCE_GROUPhaben Einfluss auf Ressourcenbenennungsmuster.
Die .env-Datei wird auch automatisch von azd während Vorgängen wie azd init, azd provision und azd deploy aktualisiert, wobei Ergebnisse aus Ihren Infrastrukturvorlagen erfasst und für die zukünftige Verwendung gespeichert werden.
Festlegen von Umgebungsvariablen
Sie können je nach Szenario unterschiedliche Methoden verwenden, um Umgebungsvariablen festzulegen azd .
Verwenden von CLI-Befehlen
Die empfohlene Methode zum Festlegen einer Umgebungsvariablen ist die Verwendung des azd env set Befehls, der Überprüfungen umfasst, um gültige Werte sicherzustellen:
azd env set <key> <value>
So legen Sie beispielsweise einen Konfigurationswert für Ihre Anwendung fest:
azd env set API_TIMEOUT 5000
Der Befehl fügt die Variable in der .env Datei der aktuell ausgewählten Umgebung hinzu oder aktualisiert sie. Sie können auch eine bestimmte Umgebung mit dem --environment Flag als Ziel festlegen:
azd env set API_TIMEOUT 5000 --environment prod
So überprüfen Sie, ob die Umgebungsvariable korrekt festgelegt wurde:
azd env get-value API_TIMEOUT
Ausgabe von Bicep
Eine leistungsfähige Funktion von azd ist die Fähigkeit, Ausgabeparameter aus Ihren Bicep-Infrastrukturvorlagen automatisch als Umgebungsvariablen zu erfassen. Wenn Sie beispielsweise einen Ausgabeparameter in Ihrer main.bicep Datei definieren:
output API_ENDPOINT string = apiService.outputs.SERVICE_ENDPOINT_URL
Nach dem Ausführen azd provisionwird diese Ausgabe automatisch in der Datei der Umgebung .env gespeichert:
API_ENDPOINT=https://api-dev-123456.azurewebsites.net
Mit diesem Ansatz wird sichergestellt, dass Ihre Anwendung immer Zugriff auf die aktuellsten Ressourceninformationen hat, z. B.:
- Dienstendpunkte und URLs
- Ressourcennamen und -bezeichner
Abrufen und Verwenden von Umgebungsvariablen
Nach der Festlegung können Sie in mehreren Kontexten auf Umgebungsvariablen zugreifen.
CLI-Befehle
So zeigen Sie alle Umgebungsvariablen für die aktuelle Umgebung an:
azd env get-values
So zeigen Sie den Wert einer bestimmten Variablen an:
azd env get-value API_ENDPOINT
Für maschinenlesbare Ausgabe (nützlich in Skripts):
azd env get-values --output json
Verwenden von Umgebungsvariablen in Infrastrukturdateien
Sie können Umgebungsvariablen verwenden, um Ihre Infrastrukturvorlagen anzupassen. Dies ist nützlich, um Ressourcen basierend auf der aktuellen Umgebung zu benennen, zu kategorisieren oder zu konfigurieren.
azd verwendet auch Tags zum Auffinden von Ressourcen in Azure für die Bereitstellung und andere Aufgaben.
Berücksichtigen Sie den folgenden allgemeinen Fluss:
Während
azd initsetztazddiese Umgebungsvariablen basierend auf der Antwort des Benutzers auf die Eingabeaufforderungen fest:AZURE_ENV_NAME=myapp-dev AZURE_LOCATION=eastus2Verweisen Sie auf diese Variablen im
main.parameters.jsoniminfraOrdner.azdersetzt die Werte während der Bereitstellung und übergibt die aufgelösten Parameter an 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}" } } }Definieren Sie übereinstimmende Parameter in Ihrer Bicep-Vorlage:
@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 stringazdliefert diese Bicep-Parameter mit den ersetzten Werten inmain.parameters.json.Verwenden Sie die Parameter für die Ressourcenbenennung und Tags, um später zu identifizieren, zu welcher Umgebung eine Ressource gehört:
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' } }
Dieses Muster behält Ihre Vorlagen flexibel bei, ermöglicht die Anpassung pro Umgebung ohne Codeänderungen und verbessert die Ressourcengovernance (Benennung, Tagging und Ermittlung).
Hinweis
azd verwendet ebenfalls Tags, um Azure-Ressourcen während der Bereitstellungsphase zu identifizieren.
Hooks
azd
Umgebungsvariablen werden automatisch vorinstalliert und in Hooks und benutzerdefinierten Skripts in Ihrer azure.yaml Datei definiert, Sie können mithilfe der folgenden Syntax auf Umgebungsvariablen zugreifen:
# Use the variables in your script
echo "API endpoint: $API_ENDPOINT"
echo "Deploying to: $AZURE_LOCATION"
Sie können Hooks in Ihrer azure.yaml Datei definieren, um diese Skripts an bestimmten Stellen im azd Lebenszyklus auszuführen:
hooks:
postprovision:
windows:
shell: pwsh
run: ./scripts/load-env-vars.ps1
interactive: false
posix:
shell: sh
run: ./scripts/load-env-vars.sh
interactive: false
Tipp
Weitere Informationen zur Verwendung von Hooks finden Sie im Artikel "Workflows anpassen" mit Hooks .
Entfernen oder Aktualisieren von Variablen
So entfernen Sie eine Variable aus Ihrer Umgebung:
azd env unset VARIABLE_NAME
So aktualisieren Sie eine vorhandene Variable:
azd env set VARIABLE_NAME "new-value"
So aktualisieren Sie Ihre lokalen Umgebungsvariablen aus dem aktuellen Status Ihrer Azure-Ressourcen:
azd env refresh
Das Aktualisieren Ihrer Umgebung ist nützlich, wenn:
- Sie möchten sicherstellen, dass Ihre lokale
.envDatei die neuesten Ausgaben Ihrer Infrastruktur widerspiegelt (z. B. Verbindungszeichenfolgen, Endpunkte usw.). - Sie müssen Umgebungsvariablen synchronisieren, nachdem ein Teamkollege die Umgebung aktualisiert hat.
AZD- und Betriebssystemumgebungsvariablen
azd Umgebungsvariablen und Betriebssystemumgebungsvariablen dienen unterschiedlichen Zwecken und funktionieren auf unterschiedliche Weise:
| Begriff | Azure Developer CLI (Befehlszeilenschnittstelle für Entwickler) | Betriebssystem |
|---|---|---|
| Standort | In .azure/<env-name>/.env Dateien gespeichert |
Festlegen in Ihrer Betriebssystemumgebung |
| Umfang | Eingeschränkt auf eine spezifische benannte Umgebung innerhalb eines Projekts | Global für Ihre Benutzersitzung oder Ihr System |
| Verwaltung | Verwaltet mithilfe von azd env Befehlen |
Verwaltet mit betriebssystemspezifischen Befehlen (export, setusw.) |
| Zugang | Automatisch von azd Befehlen geladen |
In der Regel explizit in Skripts oder Anwendungen geladen |
| Target | An Azure-Ressourcen und -Bereitstellungen gebunden | Allgemeine Systemkonfiguration |
| Lebenszyklus | Zwischen Terminalsitzungen beibehalten | Kann temporär oder dauerhaft sein, je nachdem, wie sie festgelegt werden |
azd liest oder schreibt keine Betriebssystemumgebungsvariablen automatisch. Sie können jedoch mit beiden Variablentypen mit benutzerdefinierten Skripts interagieren.
Lesen von azd Umgebungsvariablen und Betriebssystemumgebungsvariablen:
# Access OS environment variable
echo "OS variable: $PATH"
# Access azd environment variable
echo "AZD variable: $(azd env get-value MY_VARIABLE)"
Schreiben Sie azd Umgebungsvariablen in die Betriebssystem- oder die Framework-Umgebungsvariablen:
# 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
Standardumgebungsvariablen
azd legt mehrere allgemeine Umgebungsvariablen in allen Umgebungen fest und verwendet diese:
| Variable | Beschreibung | Example | Wenn festgelegt |
|---|---|---|---|
AZURE_ENV_NAME |
Name der aktuellen Umgebung | dev |
Wann eine Umgebung erstellt wird |
AZURE_LOCATION |
Azure-Region, in der Ressourcen bereitgestellt werden | eastus |
Während der ersten Bereitstellung |
AZURE_SUBSCRIPTION_ID |
ID des verwendeten Azure-Abonnements | 00000000-0000-0000-0000-000000000000 |
Während der ersten Bereitstellung |
AZURE_RESOURCE_GROUP |
Name der Ressourcengruppe | rg-myapp-dev |
Während der Bereitstellung |
AZURE_PRINCIPAL_ID |
Die laufende Benutzer-/Dienstprinzipal-ID | 00000000-0000-0000-0000-000000000000 |
Während der Bereitstellung |
AZURE_PRINCIPAL_TYPE |
Der Typ eines Prinzipals in der Umgebung. | 1a2b3c |
Während der Bereitstellung |
AZURE_TENANT_ID |
ID des verwendeten Azure-Mandanten. | 00000000-0000-0000-0000-000000000000 |
Während der Bereitstellung |
Überlegungen zu geheimen und vertraulichen Daten
Während Umgebungsvariablen für die Konfiguration geeignet sind, benötigen sie eine spezielle Behandlung für vertrauliche Daten:
Vermeiden des Speicherns geheimer Schlüssel in env-Dateien
.env Dateien werden in der Regel als Klartext gespeichert und können leicht verarbeitet werden:
- Versehentlicher Commit zur Quellcodeverwaltung
- Geteilt oder kopiert ohne richtigen Schutz
- Von jedem mit Zugriff auf die Projektdateien angezeigt
- In Protokollen oder Fehlerberichten enthalten
Warnung
Speichern Sie geheime Schlüssel niemals in einer Azure Developer CLI-Datei .env . Diese Dateien können problemlos freigegeben oder an nicht autorisierte Speicherorte kopiert oder in die Quellcodeverwaltung eingecheckt werden. Verwenden Sie Dienste wie Azure Key Vault oder Azure Role Based Access Control (RBAC) für geschützte oder schlüssellose Lösungen.
Alternativen zum Umgang mit Geheimnissen
Berücksichtigen Sie bei vertraulichen Daten die folgenden sichereren Ansätze:
Verweise auf Azure Key Vault: Speichern Sie geheime Schlüssel in Azure Key Vault, und verweisen Sie in Ihrer
.envDatei darauf:azd env set-secret <secret-value>Mit diesem Befehl wird ein Schlüsseltresorgeheimnis erstellt und ein Verweis darauf in Ihrer
.envDatei statt auf den tatsächlichen Wert gespeichert.Verwaltete Identitäten: Konfigurieren Sie Ihre Azure-Dienste so, dass verwaltete Identitäten anstelle von Verbindungszeichenfolgen oder Zugriffstasten verwendet werden.
Umgebungsspezifische Sicherheit: Wenden Sie strengere Sicherheitskontrollen auf Produktionsumgebungen an als Entwicklungsumgebungen.
Just-in-Time-Geheime Schlüssel: Generieren Sie während der Bereitstellung kurzlebige Anmeldeinformationen, anstatt dauerhafte geheime Schlüssel zu speichern.