快速入门:使用 Azure Functions 响应 Azure Cosmos DB 中的数据库更改

在本快速入门中,你将使用 Visual Studio Code 生成一个应用,以响应 Azure Cosmos DB 中 No SQL 数据库中的数据库更改。 在本地测试代码后,将其部署到你创建的在 Azure Functions 的 Flex 消耗计划中运行的新无服务器函数应用中。

项目源将 Azure 开发人员 CLI (azd) 扩展与 Visual Studio Code 配合使用,以简化本地初始化和验证项目代码,以及将代码部署到 Azure。 此部署遵循安全且可缩放的 Azure Functions 部署的当前最佳做法。

重要

本文目前仅在 C#、Python 和 TypeScript 中受支持。 若要完成快速入门,请在文章顶部选择其中一种受支持的语言。

先决条件

  • Node.js 18.x 或更高版本。 可以使用 node --version 命令检查你的版本。

初始化项目

可以使用 azd init 命令面板中的命令从模板创建本地 Azure Functions 代码项目。

  1. 在 Visual Studio Code 中,打开要在其中创建项目的文件夹或工作区。

  2. F1 打开命令面板,搜索并运行命令 Azure Developer CLI (azd): Initialize App (init),然后选择 “选择模板”。

    初始化当前文件夹或工作区时 azd 可能会稍有延迟。

  1. 出现提示时,选择 “选择模板”,然后搜索并选择 Azure Functions with Cosmos DB Bindings (.NET)

  2. 出现提示时,输入唯一的环境名称,例如 cosmosdbchanges-dotnet

    此命令从 模板存储库 拉取项目文件,并初始化当前文件夹或工作区中的项目。 在 azd 中,环境用于维护应用的唯一部署上下文,你可以定义多个环境。 它也是在 Azure 中创建的资源组的名称的一部分。

  1. 出现提示时,选择 “选择模板”,然后搜索并选择 Azure Functions TypeScript CosmosDB trigger

  2. 出现提示时,输入唯一的环境名称,例如 cosmosdbchanges-ts

    此命令从 模板存储库 拉取项目文件,并初始化当前文件夹或工作区中的项目。 在 azd 中,环境用于维护应用的唯一部署上下文,你可以定义多个环境。 它也是在 Azure 中创建的资源组的名称的一部分。

  1. 出现提示时,选择 “选择模板”,然后搜索并选择 Azure Functions Python with CosmosDB triggers and bindings...

  2. 出现提示时,输入唯一的环境名称,例如 cosmosdbchanges-py

    此命令从 模板存储库 拉取项目文件,并初始化当前文件夹或工作区中的项目。 在 azd 中,环境用于维护应用的唯一部署上下文,你可以定义多个环境。 它也是在 Azure 中创建的资源组的名称的一部分。

  1. 根据本地作系统运行此命令,授予配置脚本所需的权限:

    使用足够的权限运行此命令:

    chmod +x ./infra/scripts/*.sh
    

必须先在 Azure 中创建资源,然后才能在本地运行应用。 此项目不使用 Azure Cosmos DB 的本地仿真。

创建 Azure 资源

此项目配置为使用 azd provision 命令在 Flex Consumption 计划中创建函数应用,以及遵循当前最佳做法的其他必需 Azure 资源。

  1. 在 Visual Studio Code 中,按 F1 打开命令面板,搜索并运行命令 Azure Developer CLI (azd): Sign In with Azure Developer CLI,然后使用 Azure 帐户登录。

  2. F1 打开命令面板,搜索并运行命令 Azure Developer CLI (azd): Provision Azure resources (provision) 以创建所需的 Azure 资源:

  3. 在终端窗口中出现提示时,请提供以下所需的部署参数:

    Prompt Description
    选择要使用的 Azure 订阅 选择您希望创建资源的订阅。
    位置 部署参数 要在其中创建包含新 Azure 资源的资源组的 Azure 区域。 仅显示当前支持 Flex 消耗计划的区域。
    vnetEnabled 部署参数 虽然模板支持在虚拟网络中创建资源,但为了简化部署和测试,请选择 False

    azd provision 命令使用 Bicep 配置文件对这些提示的响应来创建和配置这些所需的 Azure 资源,遵循最新的最佳做法:

    • Flex 消耗计划和函数应用
    • Azure Cosmos DB 帐户
    • Azure 存储(必需)和 Application Insights(推荐)
    • 帐户的访问策略和角色
    • 使用托管标识(而不是存储的连接字符串)的服务到服务连接

    预配后挂钩还会在本地运行时生成所需的 local.settings.json 文件。 此文件还包含连接到 Azure 中的 Azure Cosmos DB 数据库所需的设置。

    小窍门

    如果预配过程中的任何步骤都失败,可以在解决任何问题后再次重新运行 azd provision 该命令。

    命令成功完成后,可以在本地运行项目代码并在 Azure 中的 Azure Cosmos DB 数据库上触发。

在本地运行函数

Visual Studio Code 与 Azure Functions Core 工具 集成,可在发布到 Azure 中的新函数应用之前在本地开发计算机上运行此项目。

  1. F1 并在命令面板中搜索并运行命令 Azurite: Start

  2. 若要在本地启动函数,请按 F5 或左侧活动栏中的 “运行和调试 ”图标。 “终端”面板将显示 Core Tools 的输出。 应用在 终端 面板中启动,可以看到在本地运行的函数的名称。

    如果在 Windows 上运行时遇到问题,请确保用于 Visual Studio Code 的默认终端未设置为“WSL Bash”。

  3. 如果 Core Tools 仍在 终端中运行,请按 F1 并在命令面板中搜索并运行命令 NoSQL: Create Item... ,并选择 document-db 数据库和 documents 容器。

  4. 新 Item.json 文件的内容替换为此 JSON 数据,然后选择“ 保存

    {
        "id": "doc1", 
        "title": "Sample document", 
        "content": "This is a sample document for testing my Azure Cosmos DB trigger in Azure Functions."
    } 
    

    选择 “保存”后,你将在终端中看到函数的执行,本地文档将更新为包含服务添加的元数据。

  5. 完成后,在终端窗口中按 Ctrl+C 停止 func.exe 主机进程。

查看代码(可选)

该函数基于 Azure Cosmos DB NoSQL 数据库中的更改源触发。 这些环境变量配置触发器如何监视更改源:

  • COSMOS_CONNECTION__accountEndpoint:Cosmos DB 帐户终结点
  • COSMOS_DATABASE_NAME:要监视的数据库的名称
  • COSMOS_CONTAINER_NAME:要监视的容器的名称

这些环境变量会在azd provision操作过程中,在 Azure(函数应用设置)和本地(local.settings.json)中为您创建。

可以在 CosmosTrigger.cs项目文件中查看定义 Azure Cosmos DB 触发器的代码。

可以在 cosmos_trigger.ts项目文件中查看定义 Azure Cosmos DB 触发器的代码。

可以查看在 function_app.py项目文件中定义 Azure Cosmos DB 触发器的代码。

在本地查看并验证函数代码后,即可将项目发布到 Azure。

部署到 Azure 云

可以从 Visual Studio Code 运行 azd deploy 命令,将项目代码部署到 Azure 中已预配的资源。

  • F1 打开命令面板,搜索并运行命令 Azure Developer CLI (azd): Deploy to Azure (deploy)

    命令 azd deploy 将代码打包并部署到部署容器。 然后,应用将启动并在已部署的包中运行。

    命令成功完成后,应用在 Azure 中运行。

在 Azure 上调用函数

  1. 在 Visual Studio Code 中,按 F1 并在命令面板中搜索并运行命令 Azure: Open in portal,选择 Function app并选择新应用。 如有必要,请使用 Azure 帐户登录。

    此命令将在 Azure 门户中打开新的函数应用。

  2. 在主页的“ 概述 ”选项卡中,选择函数应用名称,然后选择“ 日志 ”选项卡。

  3. 在 Visual Studio Code 中使用 NoSQL: Create Item 命令,再次将文档添加到容器中,如前所述。

  4. 再次验证函数是否由受监视容器中的更新触发。

重新部署代码

可以根据需要多次运行 azd deploy 命令,以便将代码更新部署到函数应用。

注释

已部署的代码文件始终被最新的部署包覆盖。

azd 提示的初始响应和 azd 生成的任何环境变量都本地存储在你的命名环境中。 使用 azd env get-values 命令查看创建 Azure 资源时使用的环境中的所有变量。

清理资源

使用完函数应用和相关资源后,可以使用此命令从 Azure 中删除函数应用及其相关资源,并避免产生任何进一步的成本:

azd down --no-prompt

注释

--no-prompt 选项指示 azd 在未经你确认的情况下删除资源组。

此命令不会影响本地代码项目。