Teil 5: Haupt-App-Abhängigkeiten, Importanweisungen und Umgebungsvariablen

Vorheriger Teil: Hauptimplementierung der App

In diesem Abschnitt werden die von der Hauptanwendung importierten Python-Bibliotheken und die Umgebungsvariablen überprüft, von der sie abhängig sind. Wenn Sie die App für Azure bereitstellen, geben Sie diese Umgebungsvariablen über anwendungseinstellungen in Azure App Service an.

Abhängigkeiten und Importanweisungen

Die Anwendung basiert auf den folgenden Bibliotheken:

  • Flask – zum Definieren der Web-API
  • anforderungen – der standardmäßige Python-HTTP-Client für ausgehende API-Aufrufe
  • azure.identity – zur Behandlung der tokenbasierten Microsoft Entra-ID-Authentifizierung
  • azure.keyvault.secrets – zum sicheren Abrufen von Geheimschlüsseln aus Azure Key Vault
  • azure.storage.queue – für die Interaktion mit Azure Queue Storage

Fügen Sie diese Abhängigkeiten in die requirements.txt Datei der App ein. Installieren Sie sie während der Bereitstellung oder des lokalen Setups.

flask
requests
azure.identity
azure.keyvault.secrets
azure.storage.queue

Wenn Sie die App für Azure App Service bereitstellen, installiert Azure diese Anforderungen automatisch auf dem Hostserver. Wenn Sie lokal arbeiten, installieren Sie sie mit pip install -r requirements.txt in Ihrer Umgebung.

Die Codedatei beginnt mit den erforderlichen Importanweisungen für die Teile der im Code verwendeten Bibliotheken:

from flask import Flask, request, jsonify
import requests, random, string, os
from datetime import datetime
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
from azure.storage.queue import QueueClient

Umgebungsvariablen

Der App-Code hängt von den folgenden vier Umgebungsvariablen ab:

Variable Wert
THIRD_PARTY_API_ENDPOINT Die URL der Drittanbieter-API, wie https://msdocs-example-api.azurewebsites.net/api/RandomNumber in Teil 3 beschrieben.
KEY_VAULT_URL Die URL des Azure Key Vault, in dem Sie den Zugriffsschlüssel für die DRITTANBIETER-API gespeichert haben.
THIRD_PARTY_API_SECRET_NAME Der Name des geheimen Schlüssels im Key Vault, der den Zugriffsschlüssel für die DRITTANBIETER-API enthält.
STORAGE_QUEUE_URL Die URL einer Azure Storage-Warteschlange, die Sie in Azure konfigurieren, z. B. https://msdocsexamplemainapp.queue.core.windows.net/code-requests (siehe Teil 4). Da der Warteschlangenname am Ende der URL enthalten ist, wird der Name im Code nicht angezeigt.

Wie Sie diese Variablen festlegen, hängt davon ab, wo der Code ausgeführt wird:

  • Wenn Sie den Code lokal ausführen, erstellen Sie diese Variablen innerhalb der verwendeten Befehlsshell (z. B. PowerShell, Bash oder CMD). (Wenn Sie die App auf einem virtuellen Computer bereitstellen, erstellen Sie ähnliche serverseitige Variablen.) Sie können auch eine Bibliothek wie python-dotenv verwenden, die Schlüsselwertpaare aus einer env-Datei liest und als Umgebungsvariablen festlegt.

  • Wenn Sie den Code für Azure App Service bereitstellen, wie in dieser exemplarischen Vorgehensweise gezeigt, haben Sie keinen Zugriff auf den Server selbst. Definieren Sie stattdessen Anwendungseinstellungen mit denselben Namen in der App Service-Konfiguration. Diese Einstellungen machen die Anwendung automatisch als Umgebungsvariablen verfügbar.

Die Bereitstellungsskripts erstellen diese Einstellungen mithilfe des Befehls Azure CLI. az webapp config appsettings set Legen Sie alle vier Variablen mit einem einzigen Befehl fest.

Informationen zum Erstellen von Einstellungen über das Azure-Portal finden Sie unter Konfigurieren einer App Service-App im Azure-Portal.

Wenn Sie den Code lokal ausführen, müssen Sie auch Umgebungsvariablen angeben, die Informationen zu Ihrem lokalen Dienstprinzipal enthalten. DefaultAzureCredential sucht nach diesen Werten. Wenn Sie für App Service bereitgestellt werden, müssen Sie diese Werte nicht festlegen, da stattdessen die vom System zugewiesene verwaltete Identität der App zur Authentifizierung verwendet wird.

Variable Wert
AZURE_TENANT_ID Die Microsoft Entra-Mandanten-ID (Verzeichnis-ID).
AZURE_CLIENT_ID Die Client-ID (Anwendungs-ID) einer App-Registrierung im Mandanten.
AZURE_CLIENT_SECRET Ein geheimer Clientschlüssel, den Sie für die App-Registrierung generiert haben.

Weitere Informationen finden Sie unter Authentifizieren von Python-Apps für Azure-Dienste während der lokalen Entwicklung mithilfe von Dienstprinzipalen.