共用方式為

使用 Azure 资源管理器模板通过 GitHub 中的 Web 应用部署 Azure Cosmos DB 和 Azure 应用服务

本教程介绍如何对首次运行时连接到 Azure Cosmos DB 的 Web 应用程序执行“无接触”部署,而无需将 Azure Cosmos DB 中的任何连接信息剪切并粘贴到 appsettings.json Azure 门户中的 Azure 应用服务应用程序设置。 所有这些操作都是使用 Azure 资源管理器模板在单次操作中完成的。 在此示例中,我们将部署 Azure Cosmos DB ToDo 示例

资源管理器模板非常灵活,允许跨 Azure 中的任何服务编写复杂的部署。 这包括从 GitHub 部署应用程序以及将连接信息注入 Azure 门户中 Azure 应用服务的应用程序设置等高级任务。 本教程介绍如何使用单个资源管理器模板执行以下作。

  • 部署 Azure Cosmos DB 帐户。
  • 部署 Azure 应用服务托管计划。
  • 部署 Azure 应用服务。
  • 将 Azure Cosmos DB 帐户中的终结点和密钥注入到 Azure 门户中的应用服务应用程序设置中。
  • 将 Web 应用程序从 GitHub 存储库部署到应用服务。

生成的部署具有一个功能齐全的 Web 应用程序,该应用程序可以连接到 Azure Cosmos DB,而无需从 Azure 门户剪切和粘贴 Azure Cosmos DB 的终结点 URL 或身份验证密钥。

先决条件

小窍门

虽然本教程不假设之前有 Azure 资源管理器模板或 JSON 的经验,但如果想要修改引用的模板或部署选项,则需要了解其中每个方面。

步骤 1:部署模板

首先,选择下面的“ 部署到 Azure ”按钮,打开 Azure 门户以创建自定义部署。 还可以从 Azure 快速入门模板库查看 Azure 资源管理器模板

部署到 Azure

在 Azure 门户中,选择要部署到的订阅,然后选择或创建新的资源组。 然后填写以下值。

模板部署 UI 的屏幕截图

  • 区域 - 资源管理器需要此项。 输入资源所在位置参数所使用的相同区域。
  • 应用程序名称 - 此名称用于此部署中的所有资源。 请确保选择唯一名称以避免与现有 Azure Cosmos DB 和应用服务帐户冲突。
  • 位置 - 部署资源的区域。
  • 应用服务计划层 - 应用服务计划的定价层。
  • 应用服务计划实例 - 应用服务计划中的工作者数量。
  • 存储库 URL - GitHub 上的 Web 应用程序的存储库。
  • 分支 - GitHub 存储库的分支。
  • 数据库名称 - Azure Cosmos DB 数据库名称。
  • 容器名称 - Azure Cosmos DB 容器名称。

填写值后,选择“ 创建 ”按钮以启动部署。 此步骤需要 5 到 10 分钟才能完成。

小窍门

该模板不会验证模板中输入的 Azure 应用服务名称和 Azure Cosmos DB 帐户名称是否有效且可用。 强烈建议在提交部署之前验证计划提供的名称的可用性。

步骤 2:浏览资源

查看已部署的资源

模板部署资源后,现在可以在资源组中看到每个资源。

资源组

查看 Azure Cosmos DB 终结点和密钥

接下来,在门户中打开 Azure Cosmos DB 帐户。 以下屏幕截图显示了 Azure Cosmos DB 帐户的终结点和密钥。

Azure Cosmos DB 密钥

在应用程序设置中查看 Azure Cosmos DB 密钥

接下来,导航到资源组中的 Azure 应用服务。 单击“配置”选项卡可查看应用服务的应用程序设置。 应用程序设置包含连接到 Azure Cosmos DB 所需的 Azure Cosmos DB 帐户和主键值,以及从模板部署传入的数据库和容器名称。

应用程序设置

在部署中心查看 Web 应用

接下来,转到应用服务的部署中心。 在这里,你将看到代码库指向传递到模板中的 GitHub 代码库。 此外,以下状态表示 Success(Active),这意味着应用程序已成功部署和启动。

部署中心

运行 Web 应用程序

单击部署中心顶部的 “浏览 ”以打开 Web 应用程序。 Web 应用程序将打开主屏幕。 单击“ 新建 ”,在字段中输入一些数据,然后单击“保存”。 生成的屏幕显示保存到 Azure Cosmos DB 的数据。

主屏幕

步骤 3:工作原理

这个过程需要三个要素才能正常运行。

在运行时读取应用配置

首先,应用程序需要请求 ASP.NET MVC Web 应用程序中类中的 Azure Cosmos DB 终结点和密钥 StartupAzure Cosmos DB To Do Sample 可以在本地运行,可以在其中将连接信息输入到 appsettings.json中。 但是,部署后,此文件会随应用一起部署。 如果红色的这些行无法访问 appsettings.json的设置,它将从 Azure 应用服务中的应用程序设置尝试。

屏幕截图显示了一个方法,其中包含多个以红色标记的字符串变量,包括 databaseName、containerName、account 和 key。

使用特殊的 Azure 资源管理功能

为使这些值在部署时可供应用程序使用,Azure 资源管理器模板可以使用特殊的 Azure 资源管理功能从 Azure Cosmos DB 帐户请求这些值,包括从 Azure Cosmos DB 帐户获取值的 引用listKeys ,并将这些值插入到应用程序设置值中,这些值具有与上述应用程序中使用的密钥名称匹配的“{”部分:key}' 格式。 例如,CosmosDb:Account

模板密钥

从 GitHub 部署 Web 应用

最后,我们需要将 Web 应用程序从 GitHub 部署到应用服务。 这是使用以下 JSON 完成的。 要注意的两件事是此资源的类型和名称。 和"type": "sourcecontrols""name": "web"属性值都是硬编码的,不应更改。

从 GitHub 部署

后续步骤

祝贺! 你已部署 Azure Cosmos DB、Azure 应用服务和示例 Web 应用程序,该应用程序自动具有连接到 Azure Cosmos DB 所需的连接信息,所有这些作都在一个作中,而无需剪切和粘贴敏感信息。 将此模板用作起点,可以对其进行修改,以以相同的方式部署自己的 Web 应用程序。