Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här guiden visar dig hur du distribuerar Data API builder (DAB) till Azure App Service utan att skapa eller hantera containeravbildningar. App Service har inbyggt stöd för TLS, anpassade domäner, skalning, övervakning och Microsoft Entra autentisering.
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
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt.
- Data-API-byggarens CLI. Installera CLI.
- Azure CLI. Installera Azure CLI.
- .NET 8 SDK eller senare installerat på din lokala utvecklings- eller byggdator.
- En befintlig databas som stöds och som Azure kan komma åt.
Important
Den inbyggda .NET App Service-stacken innehåller .NET körning, men innehåller inte .NET SDK. Återställ DAB och sammanställ distributionspaketet på din lokala utvecklings- eller byggdator. Kör inte dotnet tool restore när App Service startar.
Skapa konfigurationsfilen
Skapa en DAB-konfigurationsfil för att ansluta till din befintliga databas.
Skapa en tom katalog på den lokala datorn för att lagra konfigurationsfilen och distributionsartefakter.
Initiera en ny baskonfigurationsfil med .
dab init@env()Använd funktionen för att refereraDATABASE_CONNECTION_STRINGtill 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 exempelmssql,postgresql,mysqlellercosmosdb_nosql. Vissa databastyper kräver extra konfigurationsinställningar vid initiering.Lägg till minst en databasentitet i konfigurationen.
dab addAnvänd kommandot för att konfigurera en entitet. Upprepadab addså många gånger du behöver för dina entiteter.dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"Öppna och granska innehållet i dab-config.json-filen . Kontrollera att:
-
data-source.connection-stringAnvä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.-
Fäst DAB till bygget
Använd ett lokalt .NET verktygsmanifest för att fästa DAB-versionen på utvecklings- eller byggdatorn. Manifestet gör byggen reproducerbara, men innehåller inte de återställda DAB-binärfilerna. Du kopierar dessa binärfiler till distributionspaketet senare i den här guiden.
Skapa ett .NET lokalt verktygsmanifest i projektkatalogen.
dotnet new tool-manifestInstallera en specifik version av Data API Builder som ett lokalt verktyg. Ersätt
<dab-version>med den version som du vill distribuera, till exempel2.0.9.dotnet tool install microsoft.dataapibuilder --version "<dab-version>"Kontrollera att manifestet finns på
.config/dotnet-tools.json.Återställ det fästa verktyget på utvecklings- eller byggdatorn.
dotnet tool restoreNote
Återställningen fyller på den lokala NuGet-paketcachen. Distributionspaketet för App Service måste innehålla den återställda payloaden för körmiljön; att endast distribuera
.config/dotnet-tools.jsonräcker inte.
Testa lokalt
Innan du distribuerar till Azure bekräftar du att körningen startar och att slutpunkterna fungerar.
Ange reťazec pripojenia som en lokal miljövariabel.
$env:DATABASE_CONNECTION_STRING = "<your-connection-string>"Starta DAB-programkörningen lokalt.
dotnet tool run dab startTesta REST-slutpunkten genom att navigera till Swagger-användargränssnittet eller göra en begäran till
/api/<entity-name>.Testa GraphQL-slutpunkten på
/graphql.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.
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.
Skapa en App Service-plan.
az appservice plan create --name "<plan-name>" --resource-group "<resource-group-name>" --sku B1 --is-linuxNote
Den här guiden använder B1-nivån (Basic) i Linux.
Skapa webbappen med .NET 8 som körningsmiljö och en systemtilldelad hanterad identitet.
az webapp create --name "<app-name>" --resource-group "<resource-group-name>" --plan "<plan-name>" --runtime "DOTNETCORE:8.0" --assign-identity "[system]"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.
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.
Konfigurera adressen som DAB lyssnar på. Port
8080är programporten för den inbyggda Linux App Service-stacken.az webapp config appsettings set --name "<app-name>" --resource-group "<resource-group-name>" --settings ASPNETCORE_URLS="http://0.0.0.0:8080"Aktivera AlwaysOn- och filsystemloggning före den första distributionen. AlwaysOn är tillgängligt på B1-nivån som används i den här guiden.
az webapp config set --name "<app-name>" --resource-group "<resource-group-name>" --always-on true az webapp log config --name "<app-name>" --resource-group "<resource-group-name>" --application-logging filesystem --docker-container-logging filesystem --level informationSkapa ett startskript som startar DAB-körningsnyttolasten som ingår i distributionspaketet. Skapa en fil med namnet
startup.shi projektkatalogen.#!/bin/sh set -eu exec dotnet ./dab/Microsoft.DataApiBuilder.dll start --config ./dab-config.jsonImportant
Se till att
startup.shanvä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.Ange startkommandot i App Service.
az webapp config set --name "<app-name>" --resource-group "<resource-group-name>" --startup-file "sh startup.sh"
Konfigurera hanterad identitet för Azure SQL
Om datakällan är Azure SQL auktoriserar du webbappens systemtilldelade hanterade identitet i databasen. Hoppa över det här avsnittet om du använder en annan databas eller autentiseringsmetod.
Anslut till måldatabasen som dess Microsoft Entra administratör.
Skapa en innesluten databasanvändare för webbappens identitet och bevilja endast de behörigheter som krävs av dina DAB-entiteter. Följande exempel stöder läs- och skrivåtgärder.
CREATE USER [<app-name>] FROM EXTERNAL PROVIDER; ALTER ROLE [db_datareader] ADD MEMBER [<app-name>]; ALTER ROLE [db_datawriter] ADD MEMBER [<app-name>];Note
Det kan ta några minuter innan spridningen av Microsoft Entra-identitet har slutförts efter att webbappen har skapats. Om
CREATE USERinte kan fastställa identiteten omedelbart, vänta och försök igen.Ange
DATABASE_CONNECTION_STRINGsom en Azure SQL-anslutningssträng för hanterad identitet.az webapp config appsettings set --name "<app-name>" --resource-group "<resource-group-name>" --settings DATABASE_CONNECTION_STRING="Server=tcp:<sql-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;Authentication=Active Directory Managed Identity;Encrypt=True;TrustServerCertificate=False;"
Distribuera till App Service
Kopiera den återställda DAB-körningen till programkatalogen och distribuera sedan katalogen med zip-distribution.
Skapa en programkatalog som innehåller DAB-konfigurationen, startskriptet och den återställda körningsnyttolasten.
Exemplen använder DAB-versionen
2.0.9. Ställ in versionen på samma version som du har fäst i.config/dotnet-tools.json.$dabVersion = "2.0.9" $globalPackages = (dotnet nuget locals global-packages --list) -replace '^global-packages:\s*', '' $dabPayload = Join-Path $globalPackages "microsoft.dataapibuilder/$dabVersion/tools/net8.0/any" $appDirectory = Join-Path (Get-Location) "app" Remove-Item $appDirectory -Recurse -Force -ErrorAction SilentlyContinue New-Item -ItemType Directory -Path (Join-Path $appDirectory "dab") -Force | Out-Null Copy-Item dab-config.json, startup.sh -Destination $appDirectory Copy-Item (Join-Path $dabPayload "*") -Destination (Join-Path $appDirectory "dab") -Recurse if (-not (Test-Path (Join-Path $appDirectory "dab/Microsoft.DataApiBuilder.dll"))) { throw "The restored DAB runtime payload wasn't found." }Important
Kör dessa kommandon på samma dator där du återställde det fästa DAB-verktyget. Om din miljö åsidosätter NuGets globala paketkatalog fastställer
dotnet nuget localsdess plats.Skapa en ZIP med portabla
/inmatningsavgränsare. Arkivroten måste innehålladab-config.json,startup.shochdab/katalogen direkt. Komprimera inte den överordnade katalogenapp.Remove-Item deploy.zip -Force -ErrorAction SilentlyContinue tar.exe -a -c -f deploy.zip -C $appDirectory dab-config.json startup.sh dabVarning
I Windows kan
Compress-Archivelagra kapslade poster med\som avgränsare. Kudu ZIP-distributionen kan avvisa arkivet med HTTP 400. Använd ett ZIP-verktyg som lagrar/avgränsare och inspektera arkivposterna om distributionen returnerar HTTP 400 utan information.Distribuera ZIP-paketet till App Service.
az webapp deploy --resource-group "<resource-group-name>" --name "<app-name>" --src-path deploy.zip --type zip --clean true --restart false --timeout 600000Starta om webbappen när distributionen är klar.
az webapp restart --resource-group "<resource-group-name>" --name "<app-name>"
Verifiera driftsättningen
Efter distributionen bekräftar du att DAB startar framgångsrikt på App Service.
Öppna App Service-URL:en. Rotsvaret innehåller DAB-status och version.
https://<app-name>.azurewebsites.netTesta 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ö.https://<app-name>.azurewebsites.net/api/<entity-name> https://<app-name>.azurewebsites.net/graphqlNote
I produktionsläge
/healthkan returnera HTTP 403 när anroparen inte har behörighet att visa den omfattande hälsorapporten. Om rot- och auktoriserade entitetsslutpunkter returnerar korrekt innebär ett 403-svar från/healthinte att starten har misslyckats.Om en slutpunkt returnerar ett oväntat fel, granska eller ladda ned applikationsloggarna. Loggning aktiverades före distributionen i den här guiden.
az webapp log tail --name "<app-name>" --resource-group "<resource-group-name>" az webapp log download --name "<app-name>" --resource-group "<resource-group-name>" --log-file appservice-logs.zip
Konfigurera autentisering (valfritt)
Skydda din App Service-slutpunkt med Microsoft Entra ID för produktionsanvändning.
Detaljerade steg finns i Konfigurera App Service-autentisering.
När du har aktiverat App Service-autentisering konfigurerar du DAB för att lita på identitetshuvuden som matas in av App Service. Kör det här kommandot på utvecklingsdatorn och återskapa och distribuera om ZIP-paketet.
dab configure --runtime.host.authentication.provider AppService
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. För en anonym demo ska du inte förlita dig på App Service-identitetshuvuden. För rollbaserad åtkomst aktiverar du App Service-autentisering och uppdaterar entitetsbehörigheterna för att använda autentiserade eller anpassade roller i stället för anonymous:*.
Felsökning av driftsättning
Använd följande symptom för att identifiera vanliga distributionsproblem.
| Symptom | Orsak och lösning |
|---|---|
| ZIP-distribution returnerar HTTP 400 utan information | Granska ZIP-rot- och postavgränsarna. Återskapa ZIP med / avgränsare och se till att den innehåller dab-config.json, startup.shoch dab/ direkt. |
Appen returnerar HTTP 503 och loggarna innehåller No .NET SDKs were found eller The application 'tool' does not exist |
Startkommandot försöker köra dotnet tool. Återskapa paketet med den återställda DAB-nyttolasten och anropa Microsoft.DataApiBuilder.dll direkt. |
| Starten når fram till användarkommandot men uppvärmningen av App Service misslyckas | Kontrollera att startskriptet använder radslut av typen LF, använd sh startup.sh, bekräfta sökvägarna för DAB-payloaden och kontrollera lyssnar-URL:en och databasfelen i loggarna. |
| DAB startar men databasbegäranden misslyckas | Kontrollera att den hanterade identiteten för webbappen finns som databasanvändare och har de behörigheter som krävs av de konfigurerade entiteterna. |
/health returnerar HTTP 403 medan REST eller GraphQL fungerar |
DAB körs, men anroparen har inte behörighet att visa den omfattande hälsorapporten. Verifiera roten eller en auktoriserad entitetsslutpunkt i stället. |
| En större ZIP-distribution returnerar HTTP 502 | Kontrollera distributionshistoriken innan du försöker igen. Distribuera synkront med en explicit tidsgräns, inaktivera den implicita omstarten och starta om när distributionen har slutförts. |
Rensa resurser
När du inte längre behöver webbappen och dess resurser tar du bort resursgruppen.
az group delete --name "<resource-group-name>" --yes --no-wait