Distribuire Data API Builder su Servizio app di Azure

Questa guida illustra come distribuire Data API Builder (DAB) in Servizio app di Azure usando un modello di distribuzione basato su codice, senza compilare o gestire immagini del contenitore. Il servizio app offre il supporto predefinito per TLS, domini personalizzati, scalabilità, monitoraggio e autenticazione Microsoft Entra.

Diagramma dell'architettura complessiva dopo il completamento della distribuzione su Servizio app di Azure.

Tip

Se l'ambiente usa contenitori, vedere Deploy in App contenitore di Azure o Deploy in servizio Azure Kubernetes.

Prerequisiti

Compilare il file di configurazione

Compilare un file di configurazione DAB per connettersi al database esistente.

  1. Creare una directory vuota nel computer locale per archiviare i file di configurazione e gli artefatti di distribuzione.

  2. Inizializzare un nuovo file di configurazione di base usando dab init. Usare la @env() funzione per fare riferimento alla DATABASE_CONNECTION_STRING variabile di ambiente in modo che le credenziali non vengano archiviate nel file di configurazione.

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

    Importante

    Sostituire <database-type> con un tipo di database supportato, ad esempio mssql, postgresql, mysqlo cosmosdb_nosql. Alcuni tipi di database richiedono impostazioni di configurazione aggiuntive per l'inizializzazione.

  3. Aggiungere almeno un'entità di database alla configurazione. Usare il dab add comando per configurare un'entità. Ripetere dab add tutte le volte necessarie per le entità.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Aprire ed esaminare il contenuto del file dab-config.json . Verifica che:

    • data-source.connection-string Utilizza @env('DATABASE_CONNECTION_STRING')
    • Le entità e le autorizzazioni sono corrette

    Importante

    Non incorporare stringhe di connessione letterali o segreti in dab-config.json. Usare la @env() funzione in modo che i valori vengano risolti dalle variabili di ambiente in fase di esecuzione.

Creare un manifesto dello strumento locale

Usare un manifesto dello strumento di .NET locale in modo che il pacchetto di distribuzione includa DAB come dipendenza del progetto. Questo approccio evita di basarsi su uno strumento installato a livello globale all'interno del servizio app.

  1. Creare un manifesto dello strumento locale .NET nella directory del progetto.

    dotnet new tool-manifest
    
  2. Installare Generatore API dati come strumento locale.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Verificare che il manifesto esista in .config/dotnet-tools.json.

    Note

    Il --prerelease flag installa la versione non definitiva più recente del generatore di API dati. Rimuovere invece il flag per installare la versione stabile più recente.

Testare localmente

Prima di eseguire la distribuzione in Azure, verificare che il runtime venga avviato e che gli endpoint funzionino.

  1. Impostare il stringa di connessione come variabile di ambiente locale.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Avviare il runtime DAB in locale.

    dab start
    
  3. Testare l'endpoint REST passando all'interfaccia utente di Swagger o effettuando una richiesta a /api/<entity-name>.

  4. Eseguire il test sull'endpoint GraphQL a /graphql.

  5. Arrestare il runtime dopo aver verificato tutti gli endpoint.

Creare le risorse del servizio app

Creare le risorse di Azure necessarie per ospitare DAB nel servizio app.

  1. Creare un nuovo gruppo di risorse. Questo gruppo di risorse viene usato per tutte le nuove risorse in questa guida.

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

    Tip

    Prendere in considerazione la denominazione del gruppo di risorse msdocs-dab-appservice.

  2. Creare un piano di servizio app.

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

    Note

    Questa guida usa il livello B1 (Basic) in Linux.

  3. Creare l'app Web con il runtime .NET 8.

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

    Tip

    Verificare i runtime disponibili per il piano con az webapp list-runtimes --os linux.

Configurare le impostazioni del servizio app

Configurare le variabili di ambiente e il comando di avvio necessari affinché App Service esegua DAB.

  1. Configurare il provider di autenticazione per il servizio app. Questa impostazione indica a DAB di considerare attendibile l'autenticazione predefinita del servizio app (Easy Auth) per le informazioni sull'identità.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Impostare il stringa di connessione del database come impostazione dell'applicazione in App Service.

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

    Tip

    Usare un stringa di connessione che non include segreti. Usare invece le identità gestite e l'autenticazione di Microsoft Entra per gestire l'accesso tra il database e il Servizio App. Per altre informazioni, vedere Servizi di Azure che usano identità gestite.

  3. Creare uno script di avvio che ripristina il manifesto dello strumento locale e avvia DAB. Creare un file denominato startup.sh nella directory del progetto.

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

    Importante

    Assicurarsi di startup.sh usare terminazioni di riga LF (Unix), non CRLF. Gli editor di Windows possono salvare con CRLF per impostazione predefinita, provocando il fallimento dello script nell'host del servizio app Linux.

  4. Impostare il comando di avvio nel servizio app.

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

Distribuzione su App Service

Impacchettare i file del progetto e distribuirli su App Service usando la distribuzione ZIP.

  1. Creare un pacchetto di distribuzione contenente i file di progetto. Includere almeno:

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

    Importante

    Il file ZIP deve contenere file a livello radice. Non comprimere una cartella principale contenente i file. La radice dell'archivio deve includere direttamente dab-config.json, .config/ e startup.sh.

  2. Distribuire il pacchetto ZIP nel servizio app.

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

Verificare la distribuzione

Dopo la distribuzione, verificare che DAB venga avviato correttamente nel servizio app.

  1. Aprire l'URL del servizio app.

    https://<app-name>.azurewebsites.net
    
  2. Controllare l'endpoint di stato.

    https://<app-name>.azurewebsites.net/health
    
  3. Testare gli endpoint REST e GraphQL usando gli stessi percorsi di entità testati in locale. L'app distribuita usa lo stesso dab-config.json, quindi il comportamento dell'endpoint deve corrispondere al runtime locale.

  4. Se un endpoint restituisce un errore imprevisto, abilitare la registrazione delle applicazioni ed esaminare i log.

    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>
    

Configurare l'autenticazione (facoltativo)

Proteggere l'endpoint del Servizio App con Microsoft Entra ID per l'uso in produzione.

Per i passaggi dettagliati, vedere Configurare l'autenticazione del servizio app.

Importante

Il provider di autenticazione AppService nelle dab-config.json si fida delle intestazioni inserite dall'autenticazione del Servizio App. Assicurarsi che l'autenticazione del servizio app sia abilitata quando si usa questo provider nell'ambiente di produzione. Per altre informazioni, vedere Easy Auth (Servizio app).

Note

L'autenticazione di App Service protegge l'accesso al tuo endpoint. Le autorizzazioni delle entità DAB regolano comunque le operazioni consentite dal runtime. Se si vuole l'accesso basato sui ruoli, aggiornare le autorizzazioni dell'entità per usare ruoli specifici anziché anonymous:*.

Pulire le risorse

Quando l'applicazione o le risorse di esempio non sono più necessarie, rimuovere la distribuzione corrispondente e tutte le risorse.

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