Wdrażanie konstruktora interfejsu API danych w Azure App Service

W tym przewodniku pokazano, jak wdrożyć Data API builder (DAB) do Azure App Service za pomocą modelu wdrażania opartego na kodzie, bez kompilowania obrazów kontenerów ani ich zarządzania. Usługa App Service zapewnia wbudowaną obsługę protokołu TLS, domen niestandardowych, skalowania, monitorowania i uwierzytelniania Microsoft Entra.

Diagram ogólnej architektury po wdrożeniu do Azure App Service jest ukończony.

Wskazówka

Jeśli środowisko używa kontenerów, zobacz Wdrażanie do Azure Container Apps lub Wdrażanie do Azure Kubernetes Service.

Wymagania wstępne

Kompilowanie pliku konfiguracji

Skompiluj plik konfiguracji języka DAB, aby nawiązać połączenie z istniejącą bazą danych.

  1. Utwórz pusty katalog na komputerze lokalnym, aby zapisać plik konfiguracji i artefakty wdrożenia.

  2. Zainicjuj nowy podstawowy plik konfiguracji przy użyciu polecenia dab init. Użyj funkcji @env(), aby odwołać się do zmiennej środowiskowej DATABASE_CONNECTION_STRING, tak aby poświadczenia nie zostały zapisane w pliku konfiguracji.

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

    Ważna

    Zastąp <database-type> obsługiwanym typem bazy danych, takim jak mssql, postgresql, mysql, lub cosmosdb_nosql. Niektóre typy baz danych wymagają dodatkowych ustawień konfiguracji podczas inicjowania.

  3. Dodaj do konfiguracji co najmniej jedną jednostkę bazy danych. dab add Użyj polecenia , aby skonfigurować jednostkę. Powtarzaj dab add tyle razy, ile potrzebujesz dla jednostek.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Otwórz i przejrzyj zawartość pliku dab-config.json . Sprawdź, czy:

    • data-source.connection-string Używa @env('DATABASE_CONNECTION_STRING')
    • Twoje encje i uprawnienia są poprawne

    Ważna

    Nie umieszczaj literalnych ciągów połączeń ani sekretów w dab-config.json. Użyj funkcji @env(), aby wartości były pobierane ze zmiennych środowiskowych w czasie wykonywania.

Tworzenie manifestu narzędzia lokalnego

Użyj lokalnego manifestu narzędzia .NET, aby pakiet wdrożeniowy zawierał daB jako zależność projektu. Takie podejście pozwala uniknąć polegania na globalnie zainstalowanym narzędziu w usłudze App Service.

  1. Utwórz manifest narzędzia lokalnego .NET w katalogu projektu.

    dotnet new tool-manifest
    
  2. Zainstaluj konstruktora interfejsu API danych jako narzędzie lokalne.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Sprawdź, czy manifest istnieje pod adresem .config/dotnet-tools.json.

    Note

    Flaga --prerelease instaluje najnowszą wersję przedpremierową Data API Builder. Usuń flagę, aby zainstalować najnowszą stabilną wersję.

Testowanie lokalne

Przed wdrożeniem w Azure upewnij się, że środowisko uruchomieniowe zostanie uruchomione, a punkty końcowe działają.

  1. Ustaw parametry połączenia jako lokalną zmienną środowiskową.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Uruchom środowisko uruchomieniowe języka DAB lokalnie.

    dab start
    
  3. Przetestuj punkt końcowy REST, przechodząc do interfejsu użytkownika struktury Swagger lub wysyłając żądanie do /api/<entity-name>.

  4. Przetestuj punkt końcowy graphQL pod adresem /graphql.

  5. Zatrzymaj czas wykonywania po sprawdzeniu wszystkich punktów końcowych.

Tworzenie zasobów usługi App Service

Utwórz zasoby Azure wymagane do hostowania DAB w usłudze App Service.

  1. Utwórz nową grupę zasobów. Ta grupa zasobów jest używana dla wszystkich nowych zasobów w tym przewodniku.

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

    Wskazówka

    Rozważ nadanie grupie zasobów nazwy msdocs-dab-appservice.

  2. Utwórz plan usługi App Service.

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

    Note

    W tym przewodniku jest używana warstwa B1 (Podstawowa) w systemie Linux.

  3. Utwórz aplikację internetową przy użyciu środowiska uruchomieniowego .NET 8.

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

    Wskazówka

    Zweryfikuj dostępne środowiska uruchomieniowe dla planu za pomocą polecenia az webapp list-runtimes --os linux.

Konfigurowanie ustawień usługi App Service

Należy skonfigurować zmienne środowiskowe i polecenie uruchamiania, które usługa App Service musi wykonać, aby uruchomić DAB.

  1. Skonfiguruj dostawcę uwierzytelniania dla usługi App Service. To ustawienie informuje DAB o zaufaniu w wbudowane uwierzytelnienie usługi App Service (Easy Auth) w celu pozyskiwania informacji o tożsamości.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Ustaw ciąg połączenia bazy danych jako ustawienie aplikacji w usłudze App Service.

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

    Wskazówka

    Użyj łańcucha połączenia, który nie zawiera tajnych informacji. Zamiast tego użyj tożsamości zarządzanych i uwierzytelniania Microsoft Entra, aby zarządzać dostępem między bazą danych a usługą App Service. Aby uzyskać więcej informacji, zobacz Usługi platformy Azure korzystające z tożsamości zarządzanych.

  3. Utwórz skrypt uruchamiania, który przywraca lokalny manifest narzędzia i uruchamia język DAB. Utwórz plik o nazwie startup.sh w katalogu projektu.

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

    Ważna

    Upewnij się, że startup.sh używa końców wierszy LF (Unix), a nie CRLF. Windows edytory mogą domyślnie zapisywać pliki CRLF, co powoduje niepowodzenie skryptu na hoście usługi App Service systemu Linux.

  4. Ustaw polecenie uruchamiania w usłudze App Service.

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

Wdrażaj na App Service

Spakuj pliki projektu i wdróż je w usłudze App Service przy użyciu narzędzia ZIP deploy.

  1. Utwórz pakiet wdrożeniowy zawierający pliki projektu. Uwzględnij co najmniej następujące elementy:

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

    Ważna

    Plik ZIP musi zawierać pliki na poziomie głównym. Nie zipuj folderu nadrzędnego zawierającego pliki. Katalog główny archiwum powinien zawierać dab-config.json, .config/ i startup.sh bezpośrednio.

  2. Wdróż pakiet ZIP w usłudze App Service.

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

Weryfikowanie wdrożenia

Po wdrożeniu upewnij się, że usługa DAB została pomyślnie uruchomiona w usłudze App Service.

  1. Otwórz adres URL usługi App Service.

    https://<app-name>.azurewebsites.net
    
  2. Sprawdź punkt końcowy stanu zdrowia.

    https://<app-name>.azurewebsites.net/health
    
  3. Przetestuj punkty końcowe REST i GraphQL przy użyciu tych samych ścieżek jednostek przetestowanych lokalnie. Wdrożona aplikacja używa tego samego dab-config.jsonelementu , więc zachowanie punktu końcowego powinno być zgodne z lokalnym środowiskiem uruchomieniowym.

  4. Jeśli dowolny punkt końcowy zwróci nieoczekiwany błąd, włącz rejestrowanie aplikacji i przejrzyj dzienniki.

    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>
    

Konfigurowanie uwierzytelniania (opcjonalnie)

Chroń punkt końcowy usługi App Service przy użyciu Microsoft Entra ID do użytku produkcyjnego.

Aby uzyskać szczegółowe instrukcje, zobacz Konfigurowanie uwierzytelniania usługi App Service.

Ważna

AppService Dostawca uwierzytelniania w dab-config.json ufa nagłówkom wstrzykiwanym przez uwierzytelnianie usługi App Service. Upewnij się, że uwierzytelnianie usługi App Service jest włączone w przypadku korzystania z tego dostawcy w środowisku produkcyjnym. Aby uzyskać więcej informacji, zobacz Easy Auth (App Service).

Note

Uwierzytelnianie usługi App Service chroni dojście do punktu końcowego. Uprawnienia encji DAB nadal określają, na jakie operacje zezwala runtime. Jeśli chcesz uzyskać dostęp oparty na rolach, zaktualizuj uprawnienia jednostki, aby używać określonych ról zamiast anonymous:*.

Uprzątnij zasoby

Jeśli nie potrzebujesz już przykładowej aplikacji lub zasobów, usuń odpowiednie wdrożenie i wszystkie zasoby.

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