Distribuera data-API-byggare till Azure App Service

Den här guiden visar hur du distribuerar Data API Builder (DAB) till Azure App Service med hjälp av en kodbaserad distributionsmodell, utan att skapa eller hantera containeravbildningar. App Service har inbyggt stöd för TLS, anpassade domäner, skalning, övervakning och Microsoft Entra autentisering.

Diagram för den övergripande arkitekturen efter distributionen till Azure App Service är klar.

Tip

Om din miljö använder containrar kan du läsa Distribuera till Azure Container Apps eller Distribution till Azure Kubernetes Service i stället.

Förutsättningar

Skapa konfigurationsfilen

Skapa en DAB-konfigurationsfil för att ansluta till din befintliga databas.

  1. Skapa en tom katalog på den lokala datorn för att lagra konfigurationsfilen och distributionsartefakter.

  2. Initiera en ny baskonfigurationsfil med .dab init @env() Använd funktionen för att referera DATABASE_CONNECTION_STRING till miljövariabeln så att autentiseringsuppgifterna inte lagras i konfigurationsfilen.

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

    Important

    Ersätt <database-type> med en databastyp som stöds, till exempel mssql, postgresql, mysqleller cosmosdb_nosql. Vissa databastyper kräver extra konfigurationsinställningar vid initiering.

  3. Lägg till minst en databasentitet i konfigurationen. dab add Använd kommandot för att konfigurera en entitet. Upprepa dab add så många gånger du behöver för dina entiteter.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Öppna och granska innehållet i dab-config.json-filen . Kontrollera att:

    • data-source.connection-string Använder @env('DATABASE_CONNECTION_STRING')
    • Dina entiteter och behörigheter är korrekta

    Important

    Bädda inte in literala anslutningssträngar eller hemligheter i dab-config.json. Använd @env()-funktionen så att värden hämtas från miljövariabler under körning.

Skapa ett lokalt verktygsmanifest

Använd ett lokalt .NET verktygsmanifest så att distributionspaketet innehåller DAB som ett projektberoende. Den här metoden undviker att förlita sig på ett globalt installerat verktyg i App Service.

  1. Skapa ett .NET lokalt verktygsmanifest i projektkatalogen.

    dotnet new tool-manifest
    
  2. Installera Data API Builder som ett lokalt verktyg.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Kontrollera att manifestet finns på .config/dotnet-tools.json.

    Note

    Flaggan --prerelease installerar den senaste förhandsversionen av Data API Builder. Ta bort flaggan för att installera den senaste stabila versionen i stället.

Testa lokalt

Innan du distribuerar till Azure bekräftar du att körningen startar och att slutpunkterna fungerar.

  1. Ange reťazec pripojenia som en lokal miljövariabel.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Starta DAB-programkörningen lokalt.

    dab start
    
  3. Testa REST-slutpunkten genom att navigera till Swagger-användargränssnittet eller göra en begäran till /api/<entity-name>.

  4. Testa GraphQL-slutpunkten på /graphql.

  5. Stoppa körningen när du har verifierat alla slutpunkter.

Skapa App Service-resurserna

Skapa de Azure resurser som krävs för att vara värd för DAB på App Service.

  1. Skapa en ny resursgrupp. Du använder den här resursgruppen för alla nya resurser i den här guiden.

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

    Tip

    Överväg att namnge resursgruppen msdocs-dab-appservice.

  2. Skapa en App Service-plan.

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

    Note

    Den här guiden använder B1-nivån (Basic) i Linux.

  3. Skapa webbappen med .NET 8 runtime-miljön.

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

    Tip

    Kontrollera tillgängliga körmiljöer för din plan med az webapp list-runtimes --os linux.

Konfigurera App Service-inställningar

Konfigurera miljövariablerna och startkommandot som App Service behöver för att köra DAB.

  1. Konfigurera autentiseringsprovidern för App Service. Den här inställningen uppmanar DAB att lita på App Services inbyggda autentisering (Easy Auth) för identitetsinformation.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Ange databas-anslutningssträngen som en App Service-programinställning.

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

    Tip

    Använd en reťazec pripojenia som inte innehåller hemligheter. Använd i stället hanterade identiteter och Microsoft Entra autentisering för att hantera åtkomst mellan databasen och App Service. Mer information finns i Azure-tjänster som använder hanterade identiteter.

  3. Skapa ett startskript som återställer det lokala verktygsmanifestet och startar DAB. Skapa en fil med namnet startup.sh i projektkatalogen.

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

    Important

    Se till att startup.sh använder LF-radslut (Unix), inte CRLF. Windows textredigerare kan spara med CRLF som standard, vilket gör att skriptet inte fungerar på Linux App Service-plattformen.

  4. Ange startkommandot i App Service.

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

Distribuera till App Service

Paketera dina projektfiler och distribuera dem till App Service med zip-distribution.

  1. Skapa ett distributionspaket som innehåller dina projektfiler. Inkludera minst:

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

    Important

    ZIP-filen måste innehålla filer på rotnivå. Zippa inte en överordnad mapp som innehåller filerna. Arkivroten bör innehålla dab-config.json, .config/och startup.sh direkt.

  2. Distribuera ZIP-paketet till App Service.

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

Verifiera driftsättningen

Efter distributionen bekräftar du att DAB startar framgångsrikt på App Service.

  1. Öppna App Service-URL:en.

    https://<app-name>.azurewebsites.net
    
  2. Kontrollera hälsoslutpunkten.

    https://<app-name>.azurewebsites.net/health
    
  3. Testa REST- och GraphQL-slutpunkter med samma entitetssökvägar som du testade lokalt. Den distribuerade appen använder samma dab-config.json, så slutpunktsbeteendet bör matcha din lokala miljö.

  4. Om någon slutpunkt returnerar ett oväntat fel aktiverar du programloggning och granskar loggarna.

    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>
    

Konfigurera autentisering (valfritt)

Skydda din App Service-slutpunkt med Microsoft Entra ID för produktionsanvändning.

Detaljerade steg finns i Konfigurera App Service-autentisering.

Important

AppService autentiseringsleverantören i dab-config.json litar på rubriker som infogas av App Service-autentisering. Kontrollera att App Service-autentisering är aktiverat när du använder den här providern i produktion. Mer information finns i Easy Auth (App Service).

Note

App Service-autentisering skyddar ingången till din slutpunkt. DAB-entitetsbehörigheter styr fortfarande vilka åtgärder exekveringsmiljön tillåter. Om du vill ha rollbaserad åtkomst uppdaterar du entitetsbehörigheterna så att de använder specifika roller istället för anonymous:*.

Rensa resurser

När du inte längre behöver exempelprogrammet eller resurserna tar du bort motsvarande distribution och alla resurser.

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