Freigeben über


Häufig gestellte Fragen zu Umgebungsvariablen

In diesem Artikel werden häufig gestellte Fragen zum Arbeiten mit Umgebungsvariablen und der Azure Developer CLI (azd) beantwortet.

Was sind die Unterschiede zwischen azd Umgebungsvariablen und Systemumgebungsvariablen?

azd Umgebungsvariablen werden in der .env Datei im .azure/<environment name> Verzeichnis Ihres Projekts gespeichert und sind von den System-/Betriebssystemumgebungsvariablen getrennt. azd Umgebungsvariablen konfigurieren die Bereitstellungs- und Bereitstellungsaufgaben von Vorlagen und können mithilfe von Befehlen wie azd env oder azd env get-values.

Screenshot der Umgebungsordnerstruktur.

Systemumgebungsvariablen können nicht direkt über azd Befehle zugegriffen werden und sollten mit benutzerdefinierten Shell- oder PowerShell-Skripts verwaltet werden, im Allgemeinen mit azd Hooks.

Können azd Befehle Systemumgebungsvariablen direkt lesen und schreiben?

Nein, azd Befehle können Systemumgebungsvariablen nicht lesen oder schreiben. Befehle wie azd env set z. B. oder azd env get-values Arbeiten mit Werten, die in der Vorlagendatei .env für eine bestimmte azd Umgebung gespeichert sind. azd Umgebungen werden mithilfe von Unterordnern im .azure/<environment name> Verzeichnis Ihrer Projektvorlage verwaltet, wodurch Ihre Vorlage mehrere Umgebungen aufweisen kann. Unterordner der Umgebung enthalten Konfigurationsdateien, z .env . B. die Umgebung beschreiben.

Verwenden Sie benutzerdefinierte Shell- oder PowerShell-Skripts mit azd Hooks zum Lesen oder Schreiben von Umgebungsvariablen auf Systemebene.

Was ist die Beziehung zwischen Ausgabevariablen, die in den main.bicep Datei- und azd Umgebungsvariablen festgelegt sind?

Ausgabevariablen, die in der main.bicep Datei festgelegt sind, werden automatisch in der .env Datei Ihrer azd Vorlage gespeichert. Berücksichtigen Sie die folgenden Ausgabevariablen in einer main.bicep Vorlageninfrastrukturdatei:

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

Nach einem erfolgreichen azd up oder azd provision, azd schreibt diese beiden Variablen in die .env Datei im .azure/<environment name> Verzeichnis Ihres Projekts:

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

Anschließend können Sie mithilfe der .env Datei azd env get-valuesauf diese Variablen zugreifen.

Welche Umgebungsvariablen werden standardmäßig in der .env Datei festgelegt?

Die folgenden Umgebungsvariablen werden standardmäßig in der .env Datei festgelegt:

Name BESCHREIBUNG Beispielwerte Wenn verfügbar
AZURE_ENV_NAME Der Name der verwendeten Umgebung. todo-app-dev Wenn eine Umgebung erstellt wird (z. B. nach dem Ausführen von azd init oder azd env neu).
AZURE_LOCATION Der Standort der verwendeten Umgebung. eastus2 Direkt vor der erstmaligen Bereitstellung einer Umgebung.
AZURE_PRINCIPAL_ID Der ausgeführte Benutzer-/Dienstprinzipal. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Wird während der Bereitstellung automatisch bestimmt (kurzlebig).
AZURE_SUBSCRIPTION_ID Das zielorientierte Abonnement. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Direkt vor der erstmaligen Bereitstellung einer Umgebung.
SERVICE_<service>_IMAGE_NAME Der vollständige Name des Containerimages, das in azure Container Registry für Container-App-Dienste veröffentlicht wurde. todoapp/web-dev:azdev-deploy-1664988805 Nach erfolgreicher Veröffentlichung eines containerapp Bilds

Rufen Sie Umgebungsvariablen mithilfe des azd env get-values Befehls abazd.

azd env get-values

Häufige Gründe für den Zugriff auf azd Umgebungsvariablen sind:

  • Führen Sie zusätzliche Konfiguration in Hook-Skripts aus.
  • Machen Sie die .env Werte aus der Vorlage für das Anwendungscodeframework verfügbar, z. B. Node.js oder .NET.
  • Schreiben Sie die .env Werte in Systemumgebungsvariablen.

Tipp

Seien Sie vorsichtig, wenn Sie Systemumgebungsvariablen festlegen, da sie Konflikte mit anderen Vorlagen verursachen können, die dieselben Namen von Umgebungsvariablen verwenden.

Gewusst wie manuell eine neue azd Umgebungsvariable festlegen?

Legen Sie zusätzliche azd Umgebungsvariablen mithilfe des azd env set Befehls fest, und stellen Sie den Schlüssel und Wert für Die Variable bereit.

Häufige Gründe zum Festlegen azd von Umgebungsvariablen sind:

  • Zugreifen auf Azure-Ressourceninformationen, die während der Bereitstellung erstellt wurden, die während der Bereitstellung erforderlich sind.
  • Überschreiben oder Ändern von Variablenwerten der Standardumgebung azd .
  • Stellen Sie zusätzliche benutzerdefinierte Konfigurationswerte für die Verwendung in Bereitstellungs-, Bereitstellungs- oder benutzerdefinierten Skripts bereit.
azd env set MY_KEY MyValue

Gewusst wie Umgebungsvariablen als Systemumgebungsvariablen kopieren oder schreibenazd?

In einigen Szenarien können Sie Umgebungsvariablen in eine andere Umgebungsdatei oder in Ihre Systemumgebung kopieren azd , um sie von Sprachframeworks verwenden zu können. Sie können z. B. Endpunkt-URLs von bereitgestellten Azure-Diensten verwenden, um eine Verbindung mit diesen Diensten in Ihrem App-Code herzustellen. Verwenden Sie benutzerdefinierte Skripts, um Umgebungsvariablen abzurufen azd und diese dann als Systemumgebungsvariablen festzulegen. Es ist üblich, diese Skripts während des azd Lebenszyklus als Hooks auszuführen, wie im folgenden Beispiel gezeigt:

Hinweis

Achten Sie beim Kopieren azd von Umgebungsvariablen auf Ihr lokales System oder andere Betriebssystemumgebungen. Systemumgebungsvariablen mit übereinstimmenden Namen können von azd verschiedenen Vorlagen oder unterschiedlichen azd azd Umgebungen erfasst werden und Konflikte verursachen.

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

Das referenzierte Shellskript für Linux ruft die azd Umgebungsvariablen ab und exportiert sie als Systemumgebungsvariablen:

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

Das referenzierte PowerShell-Skript für Windows ruft die azd Umgebungsvariablen ab und exportiert sie als Systemumgebungsvariablen:

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

Nächste Schritte