创建由 Azure Cosmos DB 触发的函数

了解如何创建在数据添加到 Azure Cosmos DB 或在其中更改数据时触发的函数。

在日志中查看消息。

先决条件

完成本教程:

  • 如果没有 Azure 订阅,可在开始前创建一个试用帐户

Note

Azure Cosmos DB 绑定只能与 SQL API 配合使用。 对于所有其他的 Azure Cosmos DB API,应使用适用于 API 的静态客户端通过函数来访问数据库。API 包括 Azure Cosmos DB 的 API for MongoDB 和表 API。

创建 Azure Cosmos DB 帐户

在创建触发器之前,必须已拥有使用 SQL API 的 Azure Cosmos DB 帐户。

  1. 在新浏览器窗口中,登录到 Azure 门户
  2. 选择“创建资源” > “数据库” > “Azure Cosmos DB”。

    Azure 门户“数据库”窗格

  3. 在“创建 Azure Cosmos DB 帐户”页上,输入新 Azure Cosmos DB 帐户的基本设置。

    设置 说明
    订阅 订阅 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。
    资源组 新建

    然后输入在 ID 中提供的同一唯一名称
    选择“新建”。 然后输入帐户的新资源组名称。 为简单起见,可以使用与 ID 相同的名称。
    帐户名 输入唯一的名称 输入标识此 Azure Cosmos DB 帐户的唯一名称。 由于 documents.azure.cn 字符串将追加到所提供的 ID 后面以创建 URI,因此,请使用唯一的 ID。

    ID 只能包含小写字母、数字和连字符 (-) 字符。 它的长度必须介于 3 到 31 个字符之间。
    API Core(SQL) API 确定要创建的帐户的类型。 Azure Cosmos DB 提供两种 API:适用于文档数据库的 Core(SQL) 和适用于文档数据库的 MongoDB。 目前,你必须为每种 API 创建单独的帐户。

    之所以选择 Core(SQL) 是因为本文将使用 SQL 语法创建文档数据库并进行查询。

    详细了解 SQL API
    位置 选择离用户最近的区域 选择用于托管 Azure Cosmos DB 帐户的地理位置。 使用离用户最近的位置,使他们能够以最快的速度访问数据。

    选择“查看 + 创建”。 可以跳过“网络”和“标记”部分。

    Azure Cosmos DB 的“新建帐户”页

  4. 创建帐户需要几分钟时间。 等待门户中显示“祝贺你!已创建 Azure Cosmos DB 帐户”页。

    Azure 门户“通知”窗格

创建 Azure Function App

  1. 选择 Azure 门户左上角的“新建”按钮,然后选择“计算” > “Function App”。

    在 Azure 门户中创建函数应用

  2. 使用图像下面的表格中指定的函数应用设置。

    定义新的函数应用设置

    设置 建议的值 说明
    应用名称 全局唯一名称 用于标识新 Function App 的名称。 有效的字符是 a-z0-9-
    订阅 你的订阅 要在其下创建此新函数应用的订阅。
    资源组 MyResourceGroup 要在其中创建 Function App 的新资源组的名称。
    运行时堆栈 首选语言 选择支持你喜欢的函数编程语言的运行时。 对于 C# 和 F# 函数,选择 .NET
    存储 全局唯一名称 创建函数应用使用的存储帐户。 存储帐户名称必须为 3 到 24 个字符,并且只能包含数字和小写字母。 也可使用现有帐户,但该帐户必须符合存储帐户要求
    应用服务计划/位置 按应用服务计划运行时,必须管理函数应用的缩放
  3. 选择“创建”以预配和部署函数应用。

  4. 选择门户右上角的“通知”图标,留意是否显示“部署成功”消息。

    定义新的函数应用设置

  5. 选择“转到资源”,查看新的函数应用。

Tip

如果在门户中找不到函数应用,请尝试将 Function App 添加到 Azure 门户中的收藏夹

接下来,在新的 Function App 中创建一个函数。

创建 Azure Cosmos DB 触发器

  1. 展开 Function App,单击“Functions”旁边的 + 按钮。 如果这是函数应用中的第一个函数,请依次选择“门户中”、“继续”。 否则,请转到第三步。

    Azure 门户中的 Functions 快速入门页

  2. 依次选择“更多模板”、“完成并查看模板”。

    Functions 快速入门选择更多模板

  3. 在搜索字段中,键入 cosmos,然后选择“Azure Cosmos DB 触发器”模板。

  4. 如果系统提示,请选择“安装”以在函数应用中安装 Azure 存储扩展的任何依赖项。 安装成功后,选择“继续”。

    安装绑定扩展

  5. 使用图像下面的表中指定的设置来配置新的触发器。

    创建 Azure Cosmos DB 触发函数

    设置 建议的值 说明
    名称 默认 使用模板建议的默认函数名称。
    Azure Cosmos DB 帐户连接 新设置 选择“新建”,选择你的订阅、你之前创建的数据库帐户,然后选择“选择”。 这将为帐户连接创建应用程序设置。 此设置由数据库连接的绑定使用。
    集合名称 Items 要监视的集合的名称。
    创建租赁集合(如果不存在) 已选中 集合不存在,因此创建集合。
    数据库名称 任务 数据库的名称和要监视的集合。
  6. 单击“创建”创建你的 Azure Cosmos DB 触发函数。 创建函数后,将显示基于模板的函数代码。

    运用 C# 语言的 Cosmos DB 函数模板

    此函数模板将文档的数量和第一个文档 ID 写入到日志中。

接下来,连接到 Azure Cosmos DB 帐户并在 Tasks 数据库中创建 Items 集合。

创建项集合

  1. 在浏览器的新选项卡中打开 Azure 门户的第二个实例。

  2. 在门户左侧展开图标栏,在搜索字段中键入 cosmos,然后选择“Azure Cosmos DB”。

    搜索 Azure Cosmos DB 服务

  3. 选择你的 Azure Cosmos DB 帐户,然后选择“数据资源管理器”。

  4. 在“集合”中,选择“taskDatabase”并选择“新集合”。

    创建集合

  5. 在“添加集合”中,使用图像下的表中所示的设置。

    定义 taskCollection

    设置 建议的值 说明
    数据库 ID 任务 新数据库的名称。 它必须匹配函数绑定中定义的名称。
    集合 ID Items 新集合的名称。 它必须匹配函数绑定中定义的名称。
    存储容量 固定 (10 GB) 使用默认值。 此值是数据库的存储容量。
    吞吐量 400 RU 使用默认值。 如果想要减少延迟,以后可以增加吞吐量。
    分区键 /category 一个分区键,用于将数据均匀分配到每个分区。 选择正确的分区键对于创建高性能集合而言很重要。
  6. 单击“确定”创建项集合。 创建该集合可能需要一点时间。

函数绑定中指定的集合存在后,可以通过将文档添加到此新集合来测试函数。

测试函数

  1. 展开数据资源管理器中的新“taskCollection”集合,选择“文档”,然后选择“新建文档”。

    在 taskCollection 创建文档

  2. 将新文档的内容替换为以下内容,然后选择“保存”。

     {
         "id": "task1",
         "category": "general",
         "description": "some task"
     }
    
  3. 切换到包含门户中的函数的第一个浏览器选项卡。 展开函数日志并验证新的文档已触发该函数。 会看到 task1 文档 ID 值已写入日志。

    在日志中查看消息。

  4. (可选)返回到文档进行更改,然后单击“更新”。 然后,回到函数日志,并验证此更新同样已触发该函数。

清理资源

本教程系列中的其他快速入门教程是在本文的基础上制作的。 如果打算使用后续的快速入门、教程或者在本快速入门中创建的任何服务,请勿清理这些资源。

Azure 中的资源是指函数应用、函数、存储帐户等。 这些资源可以组合到资源组中,删除该组即可删除组中的所有内容。

已创建完成这些快速入门所需的资源。 这些资源可能需要付费,具体取决于帐户状态服务定价。 如果不再需要这些资源,请参阅下面介绍的资源删除方法:

  1. 在 Azure 门户中转到“资源组”页。

    若要从函数应用页转到该页,请选择“概览”选项卡,然后选择“资源组”下的链接。

    从函数应用页选择要删除的资源组。

    若要从仪表板转到该页,请选择“资源组”,然后选择用于本快速入门的资源组。

  2. 在“资源组”页中查看所包括的资源的列表,然后验证这些资源是否是要删除的。

  3. 选择“删除资源组”,然后按说明操作。

    可能需要数分钟才能删除完毕。 完成后会显示一个通知,持续数秒。 也可以选择页面顶部的钟形图标来查看通知。

后续步骤

你已经创建一个函数,当在 Azure Cosmos DB 中添加或修改文档时会运行此函数。 有关 Azure Cosmos DB 触发器的详细信息,请参阅适用于 Azure Functions 的 Azure Cosmos DB 绑定

创建第一个函数以后,即可向这个可以将消息写入存储队列的函数添加输出绑定。