Nasazení Tvůrce rozhraní Data API do Azure App Service

V této příručce se dozvíte, jak nasadit tvůrce rozhraní DATA API (DAB) do Azure App Service pomocí modelu nasazení založeného na kódu, aniž byste museli vytvářet nebo spravovat image kontejnerů. App Service poskytuje integrovanou podporu protokolu TLS, vlastních domén, škálování, monitorování a ověřování Microsoft Entra.

Diagram celkové architektury po nasazení do Azure App Service je dokončen.

Tip

Pokud vaše prostředí používá kontejnery, přečtěte si místo toho Deploy k Azure Container Apps nebo Deploy na Azure Kubernetes Service.

Předpoklady

Sestavení konfiguračního souboru

Vytvořte konfigurační soubor DAB pro připojení k existující databázi.

  1. Vytvořte na místním počítači prázdný adresář pro uložení konfiguračního souboru a artefaktů nasazení.

  2. Inicializace nového základního konfiguračního souboru pomocí dab init. @env() Pomocí funkce můžete odkazovat na DATABASE_CONNECTION_STRING proměnnou prostředí, aby se přihlašovací údaje neukládaly do konfiguračního souboru.

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

    Important

    Nahraďte <database-type>podporovaným typem databáze, například mssql, postgresql, mysqlnebo cosmosdb_nosql. Některé typy databází vyžadují při inicializaci další nastavení konfigurace.

  3. Přidejte do konfigurace aspoň jednu entitu databáze. dab add Pomocí příkazu nakonfigurujte entitu. Opakujte dab add tolikrát, kolikrát potřebujete pro své entity.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Otevřete a zkontrolujte obsah souboru dab-config.json . Ověřte, že:

    • data-source.connection-string Používá @env('DATABASE_CONNECTION_STRING')
    • Vaše entity a oprávnění jsou správné.

    Important

    Nezakládejte doslovné připojovací řetězce nebo hesla v dab-config.json. Použijte funkci @env(), aby se hodnoty vyhodnotily z proměnných prostředí za běhu aplikace.

Vytvoření manifestu místního nástroje

Použijte místní manifest nástroje .NET, aby balíček nasazení zahrnoval DAB jako závislost projektu. Tento přístup se vyhne spoléhat na globálně nainstalovaný nástroj ve službě App Service.

  1. V adresáři projektu vytvořte manifest místního nástroje .NET.

    dotnet new tool-manifest
    
  2. Nainstalujte tvůrce rozhraní Data API jako místní nástroj.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Ověřte, že manifest existuje na adrese .config/dotnet-tools.json.

    Note

    Příznak --prerelease nainstaluje nejnovější předběžnou verzi tvůrce rozhraní Data API. Místo toho odeberte příznak pro instalaci nejnovější stabilní verze.

Místní testování

Před nasazením do Azure potvrďte spuštění modulu runtime a fungování koncových bodů.

  1. Nastavte připojovací řetězec jako místní proměnnou prostředí.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Spusťte runtime DAB lokálně.

    dab start
    
  3. Otestujte koncový bod REST tak, že přejdete do uživatelského rozhraní Swaggeru nebo provedete požadavek na /api/<entity-name>.

  4. Otestujte koncový bod GraphQL na adrese /graphql.

  5. Po ověření všech koncových bodů zastavte modul runtime.

Vytvoření prostředků služby App Service

Vytvořte Azure prostředky potřebné k hostování DAB ve službě App Service.

  1. Vytvořte novou skupinu prostředků. Tuto skupinu prostředků použijete pro všechny nové prostředky v této příručce.

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

    Tip

    Zvažte pojmenování skupiny prostředků msdocs-dab-appservice.

  2. Vytvořte plán služby App Service.

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

    Note

    Tato příručka používá úroveň B1 (Basic) v Linuxu.

  3. Vytvořte webovou aplikaci pomocí modulu runtime .NET 8.

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

    Tip

    Ověřte dostupné moduly runtime pro váš plán pomocí az webapp list-runtimes --os linux.

Konfigurace nastavení služby App Service

Nakonfigurujte proměnné prostředí a spouštěcí příkaz, který app Service potřebuje ke spuštění DAB.

  1. Nakonfigurujte zprostředkovatele ověřování pro Službu App Service. Toto nastavení určuje, že DAB má důvěřovat integrovanému ověřování služby App Service, známému jako Easy Auth, pro informace o identitě.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Nastavte řetězec pro připojení k databázi jako nastavení aplikace služby App Service.

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

    Tip

    Použijte připojovací řetězec, který neobsahuje tajné kódy. Místo toho ke správě přístupu mezi vaší databází a službou App Service používejte spravované identity a ověřování Microsoft Entra. Další informace najdete v tématu Služby Azure, které používají spravované identity.

  3. Vytvořte spouštěcí skript, který obnoví manifest místního nástroje a spustí DAB. Vytvořte soubor s názvem startup.sh v adresáři projektu.

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

    Important

    Ujistěte se, že startup.sh používá konce řádků LF (Unix), nikoli CRLF. Windows textové editory mohou ve výchozím nastavení ukládat s CRLF, což způsobí selhání skriptu na hostiteli služby Linux App Service.

  4. Nastavte spouštěcí příkaz ve službě App Service.

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

Nasazení do služby App Service

Zabalte soubory projektu a nasaďte je do služby App Service pomocí nasazení ZIP.

  1. Vytvořte balíček pro nasazení obsahující soubory projektu. Minimálně uveďte:

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

    Important

    Soubor ZIP musí obsahovat soubory na kořenové úrovni. Nezazipujte nadřazenou složku, která obsahuje soubory. Kořen archivu by měl přímo obsahovat dab-config.json, .config/ a startup.sh.

  2. Nasaďte balíček ZIP do služby App Service.

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

Ověření nasazení

Po nasazení ověřte, že se DAB úspěšně spustí ve službě App Service.

  1. Otevřete adresu URL služby App Service.

    https://<app-name>.azurewebsites.net
    
  2. Zkontrolujte koncový bod stavu.

    https://<app-name>.azurewebsites.net/health
    
  3. Otestujte koncové body REST a GraphQL pomocí stejných cest entit, které jste testovali místně. Nasazená aplikace používá stejný dab-config.json, takže chování koncového bodu by mělo odpovídat vašemu lokálnímu runtime.

  4. Pokud některý koncový bod vrátí neočekávanou chybu, povolte protokolování aplikace a zkontrolujte protokoly.

    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>
    

Konfigurace ověřování (volitelné)

Chraňte koncový bod služby App Service pomocí Microsoft Entra ID pro použití v produkčním prostředí.

Podrobný postup najdete v tématu Konfigurace ověřování pomocí služby App Service.

Important

AppService Poskytovatel ověřování v dab-config.json důvěřuje hlavičkám vloženým ověřováním služby App Service. Ujistěte se, že je při použití tohoto zprostředkovatele v produkčním prostředí povolené ověřování služby App Service. Další informace najdete v tématu Snadné ověřování (App Service).

Note

Ověřování služby App Service chrání přístup do koncového bodu. Oprávnění entity DAB stále řídí, jaké operace modul runtime umožňuje. Pokud chcete mít přístup na základě role, aktualizujte oprávnění entity tak, aby místo toho používala určité role anonymous:*.

Vyčistěte zdroje

Pokud už ukázkovou aplikaci nebo prostředky nepotřebujete, odeberte odpovídající nasazení a všechny prostředky.

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