使用用于容器的 Azure Web 应用开发数据 API

已完成

使用用于容器的 Azure Web 应用开发数据 API 为新式应用程序提供了强大且可缩放的解决方案。 通过利用容器和 Azure 的托管服务的强大功能,开发人员可以轻松生成、部署和管理 API,确保性能和可靠性。 这种方法不仅简化了开发过程,而且增强了应用程序的可移植性和可伸缩性,使其成为打造当今的现代软件格局的理想选择。

了解使用用于容器的 Web 应用的好处

  • 可移植性:容器会封装应用程序及其依赖项,确保其在不同的环境中一致地运行。 这消除了“它在我的计算机上正常运行”问题,从而可以无缝地部署到各种平台。

  • 可伸缩性:用于容器的 Azure Web 应用允许按需自动缩放。 这意味着数据 API 无需人工干预即可处理增加的负载,从而确保高可用性和性能。

  • 简化管理:Azure 管理底层基础结构,包括操作系统修补、负载均衡和容量预配。 这使得开发人员可以专注于编写代码而不是管理服务器。

使用用于容器的 Azure Web 应用生成数据 API

若要使用用于容器的 Azure Web 应用来生成数据 API,需要使用 DAB 映像创建容器应用、分配必要的权限、设置 Dockerfile,并使用新映像和凭据更新该应用。 最后,检索域名并测试 API。

在开始之前,请确保有一个 Azure 订阅、一个资源组以及对 Azure Cloud Shell 的访问权限。

创建容器应用

可以使用以下步骤创建 Azure 容器应用。

  1. 使用 az containerapp env create 创建新的 Azure 容器应用环境。

    az containerapp env create \ 
      --resource-group $RESOURCE_GROUP_NAME \
      --name $CONTAINER_ENV_NAME \
      --logs-destination none \
      --location $LOCATION
    
  2. 使用 az containerapp create 命令创建一个使用 mcr.microsoft.com/azure-databases/data-api-builder DAB 容器映像的新容器应用。

    az containerapp create \ 
      --resource-group $RESOURCE_GROUP_NAME \
      --environment $CONTAINER_ENV_NAME \
      --name $API_CONTAINER_NAME \
      --image "mcr.microsoft.com/azure-databases/data-api-builder" \
      --ingress "external" \
      --target-port "5000" \
      --system-assigned
    

然后,可以使用 az identity show 获取托管标识的主体标识符。

分配权限

分配系统分配的托管标识权限,以从 Azure SQL 读取数据以及对 Azure 容器注册表进行读取和写入。

az role assignment create \
  --assignee $CURRENT_USER_PRINCIPAL_ID \
  --role $ROLE_ID \
  --scope $RESOURCE_GROUP_ID

创建 Azure 容器注册表实例

若要创建新的 Azure 容器注册表实例,请运行以下命令。

az acr create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name <CONTAINER_REGISTRY_NAME> \
  --sku "Standard" \
  --location <LOCATION> \
  --admin-enabled false

生成并部署容器映像

  1. 对于生成阶段,请使用 mcr.microsoft.com/dotnet/sdk 容器映像。

  2. 安装 DAB CLI

    RUN dotnet tool install Microsoft.DataApiBuilder
    
  3. 通过运行 RUN dotnet tool run dab -- init 为 Azure SQL 数据库到源数据库的连接创建配置文件。

  4. 创建要映射到源数据库中的表的实体。

    RUN dotnet tool run dab -- add Address --source "SalesLT.Address" --permissions "anonymous:read"
    
  5. 将配置文件复制到最终的 mcr.microsoft.com/azure-databases/data-api-builder 容器映像。

  6. 通过运行 az acr build 来生成映像,将映像生成为 Azure 容器注册表任务。

  7. 将容器应用配置为使用容器注册表。

    az containerapp registry set \
      --name <container-app-name> \
      --resource-group <resource-group-name> \
      --server <container-registry-login-server> \
      --username <container-registry-username> \
      --password <container-registry-password>
    
  8. 使用 Azure SQL 连接字符串创建机密。

    az containerapp secret set \
      --name <container-app-name> \
      --resource-group <resource-group-name> \
      --secrets "SQLConnectionString=<your-sql-connection-string>"
    
  9. 使用新的自定义容器映像和连接字符串更新容器应用。

    az containerapp update \
      --name <container-app-name> \
      --resource-group <resource-group-name> \
      --image <container-registry-login-server>/<image-name>:<tag> \
      --secrets "SQLConnectionString=<your-sql-connection-string>"
    
  10. 检索容器应用的完全限定的域名。

    az containerapp show \
      --name <container-app-name> \
      --resource-group <resource-group-name> \
      --query "properties.configuration.ingress.fqdn" \
      --output "tsv"
    

这些步骤使用新的自定义容器映像和凭据更新 Azure 容器应用,并检索容器应用的完全限定的域名。

最后,导航到 URL 并测试 API,以确保一切正常运行。

注意

有关如何使用 Azure CLI 将数据 API 生成器部署到 Azure 容器应用的详细步骤,请参阅教程:使用 Azure CLI 将数据 API 生成器部署到 Azure 容器应用