Развертывание построителя API данных для Служба приложений Azure

В этом руководстве показано, как развернуть построитель данных (DAB) для Служба приложений Azure с помощью модели развертывания на основе кода без создания образов контейнеров или управления ими. Служба приложений обеспечивает встроенную поддержку TLS, пользовательских доменов, масштабирования, мониторинга и проверки подлинности Microsoft Entra.

Диаграмма общей архитектуры после завершения развертывания на службу приложений Azure.

Необходимые условия

Создание файла конфигурации

Создайте файл конфигурации DAB для подключения к существующей базе данных.

  1. Создайте пустой каталог на локальном компьютере, чтобы сохранить файл конфигурации и артефакты развертывания.

  2. Инициализация нового базового файла конфигурации с помощью dab init. @env() Используйте функцию для ссылки на DATABASE_CONNECTION_STRING переменную среды, чтобы учетные данные не хранились в файле конфигурации.

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

    Important

    Замените <database-type>поддерживаемым типом базы данных, например mssql, postgresqlили mysqlcosmosdb_nosql. Для некоторых типов баз данных требуются дополнительные параметры конфигурации при инициализации.

  3. Добавьте хотя бы одну сущность базы данных в конфигурацию. Используйте команду dab add, чтобы настроить сущность. Повторяйте dab add столько раз, сколько необходимо для ваших объектов.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Откройте и просмотрите содержимое файла dab-config.json . Проверьте следующее:

    • data-source.connection-string использует @env('DATABASE_CONNECTION_STRING')
    • Ваши сущности и разрешения правильные

    Important

    Не внедряйте в dab-config.json литеральные строки подключения или секреты. Используйте функцию @env(), чтобы значения определялись из переменных среды во время выполнения.

Создание манифеста локального инструмента

Используйте локальный манифест средства .NET, чтобы пакет развертывания включает DAB в качестве зависимости проекта. Этот подход позволяет избежать использования глобально установленного средства внутри службы приложений.

  1. Создайте манифест локального средства .NET в каталоге проекта.

    dotnet new tool-manifest
    
  2. Установите конструктор API данных в качестве локального инструмента.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Убедитесь, что манифест существует по адресу .config/dotnet-tools.json.

    Note

    Флаг --prerelease устанавливает последнюю предварительную версию конструктора API данных. Удалите флаг, чтобы установить последнюю стабильную версию.

Локальное тестирование

Перед развертыванием в Azure убедитесь, что среда выполнения запускается, а конечные точки работают.

  1. Задайте строка подключения в качестве локальной переменной среды.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Запустите среду выполнения DAB локально.

    dab start
    
  3. Проверьте конечную точку REST, перейдя к пользовательскому интерфейсу Swagger или выполнив запрос /api/<entity-name>.

  4. Проверьте конечную точку GraphQL в /graphql.

  5. Остановите среду выполнения после проверки всех конечных точек.

Создание ресурсов службы приложений

Создайте ресурсы Azure, необходимые для размещения DAB в службе приложений.

  1. Создание группы ресурсов Эта группа ресурсов используется для всех новых ресурсов в этом руководстве.

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

    Tip

    Рассмотрите возможность именования группы ресурсов msdocs-dab-appservice.

  2. Создайте план службы приложений.

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

    Note

    В этом руководстве используется уровень B1 (Базовый) в Linux.

  3. Создайте веб-приложение с помощью среды выполнения .NET 8.

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

    Tip

    Проверьте доступные среды выполнения для плана с помощью az webapp list-runtimes --os linux.

Настройка параметров службы приложений

Настройте переменные среды и команду запуска, необходимые для работы DAB в службе приложений.

  1. Настройте поставщик проверки подлинности для службы приложений. Этот параметр инструктирует DAB доверять встроенной аутентификации службы приложений (Easy Auth) для получения информации об идентификации.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Установите строку подключения к базе данных в параметрах службы App Service.

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

    Tip

    Используйте строку подключения, которая не включает секреты. Вместо этого используйте управляемые удостоверения и проверку подлинности Microsoft Entra для управления доступом между вашей базой данных и службой приложений. Дополнительные сведения см. в службах Azure, использующих управляемые удостоверения.

  3. Создайте скрипт запуска, который восстанавливает манифест локального средства и запускает DAB. Создайте файл с именем startup.sh в каталоге проекта.

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

    Important

    Убедитесь, что startup.sh использует окончания строк LF (Unix), а не CRLF. Windows редакторы могут сохраняться с помощью CRLF по умолчанию, что приводит к сбою скрипта на узле службы приложений Linux.

  4. Задайте команду запуска в Службе приложений.

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

Развертывание в службе приложений Azure

Упаковайте файлы проекта и разверните их в Службе приложений с помощью zip-развертывания.

  1. Создайте пакет развертывания, содержащий файлы проекта. Как минимум, включите:

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

    Important

    ZIP-файл должен содержать файлы на корневом уровне. Не запакуйте родительскую папку, содержащую файлы. Корневой каталог архива должен напрямую включать dab-config.json, .config/ и startup.sh.

  2. Разверните ZIP-пакет в службе приложений.

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

Проверка развертывания

После развертывания убедитесь, что DAB успешно запускается в службе приложений.

  1. Откройте URL-адрес службы приложений.

    https://<app-name>.azurewebsites.net
    
  2. Проверьте конечную точку работоспособности.

    https://<app-name>.azurewebsites.net/health
    
  3. Протестируйте конечные точки REST и GraphQL, используя те же пути сущностей, которые вы проверили локально. Развернутое приложение использует то же самое dab-config.json, поэтому поведение конечной точки должно соответствовать вашей локальной среде выполнения.

  4. Если любая конечная точка возвращает непредвиденное сообщение об ошибке, включите ведение журнала приложений и просмотрите журналы.

    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>
    

Настройка проверки подлинности (необязательно)

Защитите конечную точку службы приложений с помощью Microsoft Entra ID для использования в рабочей среде.

Подробные инструкции см. в разделе "Настройка проверки подлинности службы приложений".

Important

Поставщик AppService проверки подлинности доверяет заголовкам, внедренным проверкой подлинности службы приложений dab-config.json. Убедитесь, что проверка подлинности службы приложений включена при использовании этого поставщика в рабочей среде. Дополнительные сведения см. в статье Easy Auth (Служба приложений).

Note

Проверка подлинности службы приложений защищает входящий трафик к конечной точке. Разрешения сущности DAB по-прежнему управляют операциями, которые позволяет среда выполнения. Если требуется доступ на основе ролей, обновите разрешения сущности, чтобы использовать определенные роли, а не anonymous:*.

Очистите ресурсы

Когда вы больше не нуждаетесь в демонстрационном приложении или ресурсах, удалите соответствующее развертывание и все ресурсы.

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