Bereitstellen des Daten-API-Generators für Azure App Service

In diesem Handbuch erfahren Sie, wie Sie den Data API builder (DAB) mithilfe eines codebasierten Bereitstellungsmodells in Azure App Service bereitstellen, ohne Container-Images zu erstellen oder zu verwalten. App Service bietet integrierte Unterstützung für TLS, benutzerdefinierte Domänen, Skalierung, Überwachung und Microsoft Entra Authentifizierung.

Diagramm der Gesamtarchitektur, nachdem die Bereitstellung für Azure App Service abgeschlossen ist.

Tip

Wenn Ihre Umgebung Container verwendet, lesen Sie stattdessen Deploy to Azure Container Apps or Deploy to Azure Kubernetes Service.

Voraussetzungen

Erstellen der Konfigurationsdatei

Erstellen Sie eine DAB-Konfigurationsdatei, um eine Verbindung mit Ihrer vorhandenen Datenbank herzustellen.

  1. Erstellen Sie ein leeres Verzeichnis auf Ihrem lokalen Computer, um die Konfigurationsdatei und Bereitstellungsartefakte zu speichern.

  2. Initialisieren Sie eine neue Basiskonfigurationsdatei mit dab init. Verwenden Sie die @env() Funktion, um auf die DATABASE_CONNECTION_STRING Umgebungsvariable zu verweisen, sodass Anmeldeinformationen nicht in der Konfigurationsdatei gespeichert werden.

    dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"
    

    Important

    Ersetzen Sie <database-type> mit einem unterstützten Datenbanktyp, wie mssql, postgresql, mysql oder cosmosdb_nosql. Für einige Datenbanktypen sind zusätzliche Konfigurationseinstellungen für die Initialisierung erforderlich.

  3. Fügen Sie der Konfiguration mindestens eine Datenbankentität hinzu. Verwenden Sie den Befehl dab add, um eine Entität zu konfigurieren. Wiederholen Sie dab add so oft, wie Sie für Ihre Entitäten benötigen.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Öffnen und überprüfen Sie den Inhalt der dab-config.json Datei. Überprüfen Sie Folgendes:

    • data-source.connection-string verwendet @env('DATABASE_CONNECTION_STRING')
    • Ihre Entitäten und Berechtigungen sind korrekt.

    Important

    Betten Sie keine wörtlichen Verbindungszeichenfolgen oder geheimen Zugangsdaten in dab-config.json ein. Verwenden Sie die @env() Funktion, sodass Werte aus Umgebungsvariablen zur Laufzeit aufgelöst werden.

Erstellen eines lokalen Toolmanifests

Verwenden Sie ein lokales .NET Toolmanifest, sodass das Bereitstellungspaket DAB als Projektabhängigkeit enthält. Dieser Ansatz vermeidet das Vertrauen auf ein global installiertes Tool innerhalb von App Service.

  1. Erstellen Sie ein .NET lokalen Toolmanifest in Ihrem Projektverzeichnis.

    dotnet new tool-manifest
    
  2. Installieren Sie den Daten-API-Generator als lokales Tool.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Überprüfen Sie, ob das Manifest vorhanden ist unter .config/dotnet-tools.json.

    Note

    Das --prerelease Flag installiert die neueste Vorabversion des Daten-API-Generators. Entfernen Sie stattdessen die Kennzeichnung, um die neueste stabile Version zu installieren.

Lokales Testen

Vergewissern Sie sich vor der Bereitstellung für Azure, dass die Laufzeit gestartet wird und Ihre Endpunkte funktionieren.

  1. Legen Sie die Verbindungszeichenfolge als lokale Umgebungsvariable fest.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Starten Sie die DAB-Laufzeit lokal.

    dab start
    
  3. Testen Sie den REST-Endpunkt, indem Sie zur Swagger-Benutzeroberfläche navigieren oder eine Anfrage an /api/<entity-name> senden.

  4. Testen Sie den GraphQL-Endpunkt bei /graphql.

  5. Beenden Sie die Laufzeit, nachdem Sie alle Endpunkte überprüft haben.

Erstellen der App Service-Ressourcen

Erstellen Sie die Azure Ressourcen, die zum Hosten von DAB in App Service erforderlich sind.

  1. Eine neue Ressourcengruppe erstellen. Sie verwenden diese Ressourcengruppe für alle neuen Ressourcen in diesem Handbuch.

    az group create \
      --name <resource-group-name> \
      --location <location>
    

    Tip

    Erwägen Sie die Benennung der Ressourcengruppe "msdocs-dab-appservice".

  2. Erstellen eines App Service-Plans

    az appservice plan create \
      --name <plan-name> \
      --resource-group <resource-group-name> \
      --sku B1 \
      --is-linux
    

    Note

    In diesem Leitfaden wird die Ebene B1 (Basic) unter Linux verwendet.

  3. Erstellen Sie die Web-App mit der .NET 8 Laufzeit.

    az webapp create \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --plan <plan-name> \
      --runtime "DOTNETCORE:8.0"
    

    Tip

    Überprüfen Sie die verfügbaren Laufzeiten für Ihren Plan mit az webapp list-runtimes --os linux.

Konfigurieren von App Service-Einstellungen

Konfigurieren Sie die Umgebungsvariablen und den Startbefehl, den Der App-Dienst zum Ausführen von DAB benötigt.

  1. Konfigurieren Sie den Authentifizierungsanbieter für App Service. Diese Einstellung weist DAB an, der integrierten Authentifizierung (Easy Auth) von App Service für Identitätsinformationen zu vertrauen.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Legen Sie die Datenbank-Verbindungszeichenfolge als App Service Anwendungseinstellung fest.

    az webapp config appsettings set \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --settings DATABASE_CONNECTION_STRING="<your-connection-string>"
    

    Tip

    Verwenden Sie eine Verbindungszeichenfolge, die keine geheimen Schlüssel enthält. Verwenden Sie stattdessen verwaltete Identitäten und Microsoft Entra Authentifizierung, um den Zugriff zwischen Ihrer Datenbank und Dem App Service zu verwalten. Weitere Informationen finden Sie unter Azure-Dienste, die verwaltete Identitätenverwenden.

  3. Erstellen Sie ein Startskript, das das lokale Toolmanifest wiederherstellen und DAB startet. Erstellen Sie eine Datei mit dem Namen startup.sh in Ihrem Projektverzeichnis.

    #!/bin/sh
    dotnet tool restore
    dotnet tool run dab start
    

    Important

    Stellen Sie sicher, dass startup.sh LF (Unix)-Linienenden verwendet werden, nicht CRLF. Windows Editoren können standardmäßig mit CRLF gespeichert werden, was dazu führt, dass das Skript auf dem Linux App Service-Host fehlschlägt.

  4. Legen Sie den Startbefehl in App Service fest.

    az webapp config set \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --startup-file "startup.sh"
    

Bereitstellen in App Service

Packen Sie Ihre Projektdateien und führen Sie die Bereitstellung mithilfe des ZIP-Bereitstellungsverfahrens mit App Service durch.

  1. Erstellen Sie ein Bereitstellungspaket, das Ihre Projektdateien enthält. Schließen Sie mindestens Folgendes ein:

    • dab-config.json
    • .config/dotnet-tools.json
    • startup.sh
    Compress-Archive -Path dab-config.json, .config, startup.sh -DestinationPath deploy.zip -Force
    

    Important

    Die ZIP-Datei muss Dateien auf der Stammebene enthalten. Zippen Sie keinen übergeordneten Ordner, der die Dateien enthält. Der Archivstamm sollte dab-config.json, .config/ und startup.sh direkt enthalten.

  2. Stellen Sie das ZIP-Paket in App Service bereit.

    az webapp deploy \
      --resource-group <resource-group-name> \
      --name <app-name> \
      --src-path deploy.zip \
      --type zip
    

Überprüfen Sie die Bereitstellung

Vergewissern Sie sich nach der Bereitstellung, dass DAB erfolgreich im App-Dienst gestartet wird.

  1. Öffnen Sie die App-Dienst-URL.

    https://<app-name>.azurewebsites.net
    
  2. Überprüfen Sie den Status-Endpunkt.

    https://<app-name>.azurewebsites.net/health
    
  3. Testen Sie REST- und GraphQL-Endpunkte mit denselben Entitätspfaden, die Sie lokal getestet haben. Die bereitgestellte App verwendet dasselbe dab-config.json, sodass das Endpunktverhalten ihrer lokalen Laufzeit entsprechen sollte.

  4. Wenn ein Endpunkt einen unerwarteten Fehler zurückgibt, aktivieren Sie die Anwendungsprotokollierung, und überprüfen Sie die Protokolle.

    az webapp log config \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --application-logging filesystem \
      --level information
    
    az webapp log tail \
      --name <app-name> \
      --resource-group <resource-group-name>
    

Konfigurieren der Authentifizierung (optional)

Schützen Sie Ihren App Service-Endpunkt mit Microsoft Entra ID für die Produktionsverwendung.

Ausführliche Schritte finden Sie unter Konfigurieren der App Service-Authentifizierung.

Important

Der AppService Authentifizierungsanbieter in dab-config.json vertraut auf Header, die von der App Service-Authentifizierung eingefügt werden. Stellen Sie sicher, dass die App Service-Authentifizierung bei Verwendung dieses Anbieters in der Produktion aktiviert ist. Weitere Informationen finden Sie unter Easy Auth (App Service).

Note

Die App Service-Authentifizierung schützt den Ausgang zu Ihrem Endpunkt. DAB-Entitätsberechtigungen steuern weiterhin, welche Vorgänge die Laufzeit zulässt. Wenn Sie rollenbasierten Zugriff benötigen, aktualisieren Sie die Berechtigungen der Entität, um spezifische Rollen statt anonymous:* zu verwenden.

Bereinigen von Ressourcen

Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.

az group delete \
  --name <resource-group-name> \
  --yes \
  --no-wait