你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure Functions 和 Azure Cosmos DB 存储非结构化数据
Azure Cosmos DB 是存储非结构化数据和 JSON 数据的良好方式。 将 Azure Cosmos DB 与 Azure Functions 结合使用,可以快速、轻松地存储数据,并且所需的代码也比在关系数据库中存储数据时所需的代码少得多。
注意
此时,Azure Cosmos DB 触发器、输入绑定和输出绑定仅可与 SQL API 和图形 API 帐户一起使用。
在 Azure Functions 中,输入和输出绑定提供从函数连接到外部服务数据的声明性方式。 本文介绍了如何更新现有的函数,以便添加输出绑定,在 Azure Cosmos DB 文档中存储非结构化数据。
先决条件
完成本教程:
本主题以在从 Azure 门户创建第一个函数主题中创建的资源为基础。 请现在就完成以下步骤,以便创建函数应用(如果尚未这样做)。
创建 Azure Cosmos DB 帐户
在创建输出绑定之前,必须已具有使用 SQL API 的 Azure Cosmos DB 帐户。
在 Azure 门户菜单或主页中,选择“创建资源” 。
搜索 Azure Cosmos DB。 选择“创建”>“Azure Cosmos DB”。
在“创建 Azure Cosmos DB 帐户”页上,选择“Azure Cosmos DB for NoSQL”部分中的“创建”选项。
Azure Cosmos DB 提供了多个 API:
- NoSQL,用于文档数据
- PostgreSQL
- MongoDB,用于文档数据
- Apache Cassandra
- 表
- Apache Gremlin,用于图形数据
若要详细了解 API for NoSQL,请参阅欢迎使用 Azure Cosmos DB。
在“创建 Azure Cosmos DB 帐户”页中,输入新 Azure Cosmos DB 帐户的基本设置。
设置 值 说明 订阅 订阅名称 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。 资源组 资源组名称 选择一个资源组,或者选择“新建”,然后输入新资源组的唯一名称。 帐户名 唯一的名称 输入标识 Azure Cosmos 帐户的名称。 由于 documents.azure.com 将追加到所提供的名称以创建 URI,因此,请使用唯一的名称。 名称只能包含小写字母、数字和连字符 (-)。 它必须是 3-44 个字符。 位置 离用户最近的区域 选择用于托管 Azure Cosmos DB 帐户的地理位置。 使用离用户最近的位置,使他们能够以最快的速度访问数据。 容量模式 预配吞吐量或无服务器 选择“预配吞吐量”以在预配吞吐量模式下创建帐户。 选择“无服务器”以在无服务器模式下创建帐户。 应用 Azure Cosmos DB 免费层折扣 “应用”或“不应用” 如果使用 Azure Cosmos DB 免费层,在帐户中使用的前 1000 RU/s 和 25 GB 存储空间是免费的。 了解免费层的详细信息。 限制总帐户吞吐量 已选中或未选中 限制可在此帐户上预配的总吞吐量。 此限制可防止与预配吞吐量相关的意外费用。 创建帐户后,可以更新或删除此限制。 每个 Azure 订阅最多可以有一个免费层 Azure Cosmos DB 帐户,并且你必须在创建帐户时选择加入。 如果看不到用于应用免费层折扣的选项,那么订阅中的另一个帐户已启用免费层。
注意
如果选择“无服务器”作为“容量模式”,则以下选项不可用 :
- 应用免费层折扣
- 限制总帐户吞吐量
在“全局分发”选项卡中,配置以下详细信息。 在本快速入门中,你可以保留默认值:
设置 值 说明 异地冗余 禁用 通过将你的区域与另一区域进行配对来启用或禁用帐户的全局分发。 稍后可以将更多区域添加到帐户。 多区域写入 禁用 借助多区域写入功能,可以利用全球数据库和容器的预配吞吐量。 可用性区域 禁用 可用性区域有助于进一步提高应用程序的可用性和复原能力。 注意
如果在前面的“基本信息”页中选择“无服务器”作为“容量模式”,则以下选项不可用:
- 异地冗余
- 多区域写入
(可选)可以在以下选项卡中配置更多详细信息:
选择“查看 + 创建”。
检查帐户设置,然后选择“创建”。 创建帐户需要几分钟时间。 等待门户页显示“你的部署已完成”消息。
选择“转到资源”,转到 Azure Cosmos DB 帐户页。
添加输出绑定
在 Azure 门户中,导航到之前创建的函数应用并选择它。
选择“函数”,然后选择 HttpTrigger 函数。
选择“集成”和“+ 添加输出”。
根据表中的指定使用“创建输出”设置:
设置 建议值 说明 绑定类型 Azure Cosmos DB 要选择的绑定类型的名称,用于创建到 Azure Cosmos DB 的输出绑定。 文档参数名称 taskDocument 引用代码中的 Azure Cosmos DB 对象的名称。 数据库名称 taskDatabase 用于保存文档的数据库的名称。 集合名称 taskCollection 数据库集合的名称。 如果为 true,则创建 Azure Cosmos DB 数据库和集合 是 集合不存在,因此创建集合。 Azure Cosmos DB 帐户连接 新设置 选择“新建”,然后选择前面创建的 Azure Cosmos DB 帐户和数据库帐户,然后选择“确定”。 为帐户连接创建应用程序设置。 此设置由数据库连接的绑定使用。 选择“确定”以创建绑定。
更新函数代码
根据你选择的语言将现有函数代码替换为以下代码:
将现有 C# 函数替换为以下代码:
#r "Newtonsoft.Json"
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
public static IActionResult Run(HttpRequest req, out object taskDocument, ILogger log)
{
string name = req.Query["name"];
string task = req.Query["task"];
string duedate = req.Query["duedate"];
// We need both name and task parameters.
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(task))
{
taskDocument = new
{
name,
duedate,
task
};
return (ActionResult)new OkResult();
}
else
{
taskDocument = null;
return (ActionResult)new BadRequestResult();
}
}
此代码示例读取 HTTP 请求查询字符串,并将其分配到 taskDocument
对象中的字段。 taskDocument
绑定从此绑定参数发送对象数据,该参数将存储在已绑定文档数据库中。 该数据库在首次运行函数时创建。
测试函数和数据库
选择“测试/运行”。 在“查询”下选择“+ 添加参数”,然后将以下参数添加到查询字符串:
name
task
duedate
选择“运行”并验证是否返回了 200 状态。
在 Azure 门户中,搜索并选择“Azure Cosmos DB”。
选择 Azure Cosmos DB 帐户,然后选择“数据资源管理器”。
展开“TaskCollection”节点,选择新的文档,确认该文档包含查询字符串值以及一些其他的元数据。
你已成功地将绑定添加到 HTTP 触发器,用以在 Azure Cosmos DB 实例中存储非结构化数据。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。
从 Azure 门户菜单或“主页”页上,选择“资源组” 。 然后,在“资源组”页上,选择“myResourceGroup” 。
在“myResourceGroup”页中,确保列出的资源是要删除的资源。
选择“删除资源组” ,在文本框中键入“myResourceGroup” 以确认,然后选择“删除” 。
后续步骤
若要详细了解如何绑定到 Azure Cosmos DB 实例,请参阅 Azure Functions Azure Cosmos DB 绑定。
- Azure Functions 触发器和绑定概念
了解 Functions 如何与其他服务集成。 - Azure Functions 开发人员参考
提供有关 Functions 运行时的更多技术信息,并为编码函数及定义触发器和绑定提供参考。 - 在本地对 Azure Functions 进行编码和测试
介绍在本地开发函数的选项。