Data API Builder implementeren in Azure App Service

Deze handleiding laat zien hoe u Data API Builder (DAB) implementeert om te Azure App Service met behulp van een implementatiemodel op basis van code, zonder containerinstallatiekopieën te bouwen of te beheren. App Service biedt ingebouwde ondersteuning voor TLS, aangepaste domeinen, schalen, bewaken en Microsoft Entra verificatie.

Diagram van de algehele architectuur nadat de implementatie naar Azure App Service is voltooid.

Tip

Als uw omgeving gebruikmaakt van containers, raadpleegt u Deploy naar Azure Container Apps of Deploy naar Azure Kubernetes Service.

Prerequisites

Het configuratiebestand bouwen

Maak een DAB-configuratiebestand om verbinding te maken met uw bestaande database.

  1. Maak een lege map op uw lokale computer om het configuratiebestand en de implementatieartefacten op te slaan.

  2. Initialiseer een nieuw basisconfiguratiebestand met behulp van dab init. Gebruik de @env() functie om te verwijzen naar de DATABASE_CONNECTION_STRING omgevingsvariabele, zodat referenties niet worden opgeslagen in het configuratiebestand.

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

    Important

    Vervangen <database-type> door een ondersteund databasetype, zoals mssql, postgresql, mysqlof cosmosdb_nosql. Voor sommige databasetypen zijn extra configuratie-instellingen vereist voor initialisatie.

  3. Voeg ten minste één database-entiteit toe aan de configuratie. Gebruik de dab add opdracht om een entiteit te configureren. Herhaal dab add dit zo vaak als u nodig hebt voor uw entiteiten.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Open en controleer de inhoud van het dab-config.json-bestand . Controleer of:

    • data-source.connection-string Gebruikt @env('DATABASE_CONNECTION_STRING')
    • Uw entiteiten en machtigingen zijn juist

    Important

    Sluit letterlijke verbindingsreeksen of geheimen niet in dab-config.json. Gebruik de @env() functie zodat waarden tijdens runtime worden omgezet vanuit omgevingsvariabelen.

Een lokaal hulpprogrammamanifest maken

Gebruik een lokaal .NET hulpprogrammamanifest, zodat het implementatiepakket DAB als projectafhankelijkheid bevat. Deze aanpak voorkomt dat u vertrouwt op een wereldwijd geïnstalleerd hulpprogramma in App Service.

  1. Maak een .NET lokaal hulpprogrammamanifest in uw projectmap.

    dotnet new tool-manifest
    
  2. Installeer Data API Builder als een lokaal hulpprogramma.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Controleer of het manifest bestaat op .config/dotnet-tools.json.

    Note

    Met --prerelease de vlag wordt de meest recente prereleaseversie van Data API Builder geïnstalleerd. Verwijder de vlag om in plaats daarvan de meest recente stabiele release te installeren.

Lokaal testen

Controleer voordat u implementeert op Azure of de runtime wordt gestart en uw eindpunten werken.

  1. Stel de verbindingsreeks in als een lokale omgevingsvariabele.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Start de DAB-runtime lokaal.

    dab start
    
  3. Test het REST-eindpunt door naar de Swagger UI te navigeren of een verzoek naar /api/<entity-name> te sturen.

  4. Test het GraphQL-eindpunt op /graphql.

  5. Stop de runtime na het verifiëren van alle eindpunten.

De App Service-resources maken

Maak de Azure resources die nodig zijn voor het hosten van DAB in App Service.

  1. Een nieuwe resourcegroep maken. U gebruikt deze resourcegroep voor alle nieuwe resources in deze handleiding.

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

    Tip

    Overweeg de resourcegroep msdocs-dab-appservice een naam te geven.

  2. Maak een App Service-plan.

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

    Note

    In deze handleiding wordt de B1-laag (Basic) in Linux gebruikt.

  3. Maak de web-app met de .NET 8 runtime.

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

    Tip

    Valideer beschikbare runtimes voor uw plan met az webapp list-runtimes --os linux.

App Service-instellingen configureren

Configureer de omgevingsvariabelen en de opstartopdracht die App Service nodig heeft om DAB uit te voeren.

  1. Configureer de verificatieprovider voor App Service. Met deze instelling moet DAB de ingebouwde verificatie (Easy Auth) van App Service vertrouwen voor identiteitsgegevens.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Stel de database-verbindingsreeks in als een App Service-toepassingsinstelling.

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

    Tip

    Gebruik een verbindingsreeks die geen geheimen bevat. Gebruik in plaats daarvan beheerde identiteiten en Microsoft Entra verificatie om de toegang tussen uw database en App Service te beheren. Zie Azure-services die gebruikmaken van beheerde identiteiten voor meer informatie.

  3. Maak een opstartscript waarmee het lokale hulpprogrammamanifest wordt hersteld en DAB wordt gestart. Maak een bestand met de naam startup.sh in de projectmap.

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

    Important

    Zorg ervoor dat startup.sh gebruik maakt van LF-regelafbrekingen (Unix) in plaats van CRLF. Windows editors kunnen standaard opslaan met CRLF, waardoor het script mislukt op de Linux App Service-host.

  4. Stel de opstartopdracht in App Service in.

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

Uitrollen naar App Service

Pak uw projectbestanden in en implementeer ze in App Service met behulp van ZIP Deploy.

  1. Maak een implementatiepakket met uw projectbestanden. Neem minimaal het volgende op:

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

    Important

    De ZIP moet bestanden bevatten op het hoofdniveau. Zip een oudermap die de bestanden bevat niet. De archiefhoofdmap moet dab-config.json, .config/ en startup.sh rechtstreeks bevatten.

  2. Implementeer het ZIP-pakket in App Service.

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

De implementatie controleren

Controleer na de implementatie of DAB succesvol is gestart in App Service.

  1. Open de App Service-URL.

    https://<app-name>.azurewebsites.net
    
  2. Controleer het gezondheidseindpunt.

    https://<app-name>.azurewebsites.net/health
    
  3. Test REST- en GraphQL-eindpunten met behulp van dezelfde entiteitspaden die u lokaal hebt getest. De geïmplementeerde app maakt gebruik van hetzelfde dab-config.json, dus het eindpuntgedrag moet overeenkomen met uw lokale runtime.

  4. Als een eindpunt een onverwachte fout retourneert, schakelt u applicatielogging in en controleert u de logs.

    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>
    

Verificatie configureren (optioneel)

Beveilig uw App Service-eindpunt met Microsoft Entra ID voor productiegebruik.

Zie App Service-verificatie configureren voor gedetailleerde stappen.

Important

De AppService authenticatieprovider in dab-config.json vertrouwt op headers die door de App Service-authenticatie worden geïnjecteerd. Zorg ervoor dat App Service-verificatie is ingeschakeld bij het gebruik van deze provider in productie. Zie Easy Auth (App Service) voor meer informatie.

Note

App Service-verificatie beschermt inkomend verkeer naar uw eindpunt. DAB-entiteitsmachtigingen bepalen nog steeds welke bewerkingen de runtime toestaat. Als u op rollen gebaseerde toegang wilt, werkt u uw entiteitsmachtigingen bij om specifieke rollen te gebruiken in plaats van anonymous:*.

De hulpbronnen opschonen

Wanneer u de voorbeeldtoepassing of resources niet meer nodig hebt, verwijdert u de bijbehorende implementatie en alle resources.

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