本指南介绍如何使用基于代码的部署模型(DAB)将数据 API 生成器(DAB)部署到Azure 应用服务,而无需生成或管理容器映像。 应用服务为 TLS、自定义域、缩放、监视和Microsoft Entra身份验证提供内置支持。
提示
如果环境使用容器,请参阅 部署到 Azure 容器应用或者 部署到 Azure Kubernetes 服务。
先决条件
- 拥有有效订阅的 Azure 帐户。 免费创建帐户。
- 数据 API 生成器 CLI。 安装 CLI。
- Azure CLI。 安装 Azure CLI。
- 在本地安装 .NET 8 或更高版本。
- 可从 Azure 访问的现有数据库。
生成配置文件
生成 DAB 配置文件以连接到现有数据库。
在本地计算机上创建一个空目录来存储配置文件和部署项目。
使用
dab init.. 初始化新的基本配置文件。 使用@env()函数引用DATABASE_CONNECTION_STRING环境变量,以便凭据不会存储在配置文件中。dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"重要
替换为
<database-type>受支持的数据库类型,例如mssql,postgresql或mysqlcosmosdb_nosql。 某些数据库类型需要在初始化时设置额外的配置设置。将至少一个数据库实体添加到配置中。 使用
dab add命令来配置实体。 根据需要对dab add进行多次重复,从而适用于您的实体。dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"打开并查看 dab-config.json 文件的内容。 验证:
-
data-source.connection-string使用@env('DATABASE_CONNECTION_STRING') - 您的实体和权限是正确的
重要
不要在
dab-config.json中嵌入明文连接字符串或敏感信息。 使用函数@env(),以便从运行时的环境变量解析值。-
创建本地工具清单
使用本地.NET工具清单,以便部署包包含 DAB 作为项目依赖项。 此方法避免依赖应用服务内的全局安装工具。
在项目目录中创建.NET本地工具清单。
dotnet new tool-manifest将数据 API 生成器安装为本地工具。
dotnet tool install microsoft.dataapibuilder --prerelease验证清单是否存在于
.config/dotnet-tools.json.注释
该
--prerelease标志安装最新的数据 API 生成器预发行版。 请删除标志以安装最新的稳定版本。
在本地测试
在部署到 Azure 之前,请确保运行时已启动,终结点正常工作。
将连接字符串设置为本地环境变量。
$env:DATABASE_CONNECTION_STRING = "<your-connection-string>"在本地启动 DAB 运行时。
dab start通过导航到 Swagger UI 或者向
/api/<entity-name>发送请求来测试 REST 终结点。请在
/graphql测试 GraphQL 终结点。验证所有终结点后停止运行时。
创建应用服务资源
创建在应用服务上托管 DAB 所需的Azure资源。
创建新的资源组。 在本指南中,使用此资源组处理所有新资源。
az group create \ --name <resource-group-name> \ --location <location>提示
请考虑命名资源组 msdocs-dab-appservice。
创建应用服务计划。
az appservice plan create \ --name <plan-name> \ --resource-group <resource-group-name> \ --sku B1 \ --is-linux注释
本指南使用 Linux 上的 B1 (基本)层。
使用 .NET 8 运行时创建 Web 应用。
az webapp create \ --name <app-name> \ --resource-group <resource-group-name> \ --plan <plan-name> \ --runtime "DOTNETCORE:8.0"提示
使用
az webapp list-runtimes --os linux.. 验证计划的可用运行时。
配置应用服务设置
配置应用服务需要运行 DAB 的环境变量和启动命令。
为 App Service 配置身份验证提供程序。 此设置告知 DAB 信任应用服务的内置身份验证(简易身份验证)来获取标识信息。
dab configure --runtime.host.authentication.provider AppService将数据库连接字符串设置为应用服务的应用程序设置。
az webapp config appsettings set \ --name <app-name> \ --resource-group <resource-group-name> \ --settings DATABASE_CONNECTION_STRING="<your-connection-string>"提示
使用不包含机密信息的连接字符串。 请改用托管标识和Microsoft Entra身份验证来管理数据库和应用服务之间的访问。 有关详细信息,请参阅 使用托管标识的 Azure 服务。
创建一个启动脚本,用于还原本地工具清单并启动 DAB。 在项目目录中创建一个名为
startup.sh的文件。#!/bin/sh dotnet tool restore dotnet tool run dab start重要
确保
startup.sh使用 LF (Unix) 行尾,而不是 CRLF。 默认情况下,Windows编辑器可能会随 CRLF 一起保存,这会导致脚本在 Linux 应用服务主机上失败。在应用服务中设置启动命令。
az webapp config set \ --name <app-name> \ --resource-group <resource-group-name> \ --startup-file "startup.sh"
部署到应用服务
打包项目文件,并使用 ZIP 部署将其部署到应用服务。
创建包含项目文件的部署包。 至少包括:
dab-config.json.config/dotnet-tools.jsonstartup.sh
Compress-Archive -Path dab-config.json, .config, startup.sh -DestinationPath deploy.zip -Force重要
ZIP 必须包含根级别的文件。 不要压缩包含文件的父文件夹。 存档根目录应直接包含
dab-config.json、.config/和startup.sh。将 ZIP 包部署到应用服务。
az webapp deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --src-path deploy.zip \ --type zip
验证部署
部署后,确认 DAB 在应用服务上成功启动。
打开应用服务 URL。
https://<app-name>.azurewebsites.net检查运行状况终结点。
https://<app-name>.azurewebsites.net/health使用在本地测试的相同实体路径测试 REST 和 GraphQL 终结点。 部署的应用使用相同的
dab-config.json,因此端点行为应与本地运行时匹配。如果任何终结点返回意外错误,请启用应用日志并查看日志。
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保护应用服务终结点以供生产使用。
有关详细步骤,请参阅 “配置应用服务身份验证”。
重要
dab-config.json身份验证提供程序信任AppService应用服务身份验证注入的标头。 确保在生产环境中使用此提供程序时启用应用服务身份验证。 有关详细信息,请参阅 Easy Auth(应用服务)。
注释
应用服务身份验证可以保护对终结点的访问。 DAB 实体权限仍控制运行时允许的操作。 如果想要基于角色的访问,请更新实体权限以使用特定角色,而不是使用anonymous:*。
清理资源
不再需要示例应用程序或资源时,请删除相应的部署和所有资源。
az group delete \
--name <resource-group-name> \
--yes \
--no-wait