在本快速入门中,你将使用 Visual Studio Code 生成一个应用,以响应 Azure Cosmos DB 中 No SQL 数据库中的数据库更改。 在本地测试代码后,将其部署到你创建的在 Azure Functions 的 Flex 消耗计划中运行的新无服务器函数应用中。
项目源将 Azure 开发人员 CLI (azd) 扩展与 Visual Studio Code 配合使用,以简化本地初始化和验证项目代码,以及将代码部署到 Azure。 此部署遵循安全且可缩放的 Azure Functions 部署的当前最佳做法。
重要
本文目前仅在 C#、Python 和 TypeScript 中受支持。 若要完成快速入门,请在文章顶部选择其中一种受支持的语言。
先决条件
拥有有效订阅的 Azure 帐户。 创建账户。
在某个受支持的平台上运行Visual Studio Code。
用于 Visual Studio Code 的 Azure Functions 扩展 。 此扩展需要 Azure Functions Core Tools。 当此工具在本地不可用时,扩展会尝试使用基于包的安装程序进行安装。 还可以通过从命令面板运行
Azure Functions: Install or Update Azure Functions Core Tools来安装或更新 Core Tools 包。 如果未在本地计算机上安装 npm 或 Homebrew,则必须改为手动安装或更新 Core Tools。
Visual Studio Code 的 C# 扩展。
-
Node.js 18.x 或更高版本。 可以使用
node --version命令检查你的版本。
Azure Functions 支持的 Python 版本。 有关详细信息,请参阅 如何安装 Python。
Visual Studio Code 的 Python 扩展 。
- 适用于 Visual Studio Code 的 Azure 开发人员 CLI 扩展 。
初始化项目
可以使用 azd init 命令面板中的命令从模板创建本地 Azure Functions 代码项目。
在 Visual Studio Code 中,打开要在其中创建项目的文件夹或工作区。
按 F1 打开命令面板,搜索并运行命令
Azure Developer CLI (azd): Initialize App (init),然后选择 “选择模板”。初始化当前文件夹或工作区时
azd可能会稍有延迟。
出现提示时,选择 “选择模板”,然后搜索并选择
Azure Functions with Cosmos DB Bindings (.NET)。出现提示时,输入唯一的环境名称,例如
cosmosdbchanges-dotnet。此命令从 模板存储库 拉取项目文件,并初始化当前文件夹或工作区中的项目。 在
azd中,环境用于维护应用的唯一部署上下文,你可以定义多个环境。 它也是在 Azure 中创建的资源组的名称的一部分。
出现提示时,选择 “选择模板”,然后搜索并选择
Azure Functions TypeScript CosmosDB trigger。出现提示时,输入唯一的环境名称,例如
cosmosdbchanges-ts。此命令从 模板存储库 拉取项目文件,并初始化当前文件夹或工作区中的项目。 在
azd中,环境用于维护应用的唯一部署上下文,你可以定义多个环境。 它也是在 Azure 中创建的资源组的名称的一部分。
出现提示时,选择 “选择模板”,然后搜索并选择
Azure Functions Python with CosmosDB triggers and bindings...。出现提示时,输入唯一的环境名称,例如
cosmosdbchanges-py。此命令从 模板存储库 拉取项目文件,并初始化当前文件夹或工作区中的项目。 在
azd中,环境用于维护应用的唯一部署上下文,你可以定义多个环境。 它也是在 Azure 中创建的资源组的名称的一部分。
根据本地作系统运行此命令,授予配置脚本所需的权限:
使用足够的权限运行此命令:
chmod +x ./infra/scripts/*.sh
必须先在 Azure 中创建资源,然后才能在本地运行应用。 此项目不使用 Azure Cosmos DB 的本地仿真。
创建 Azure 资源
此项目配置为使用 azd provision 命令在 Flex Consumption 计划中创建函数应用,以及遵循当前最佳做法的其他必需 Azure 资源。
在 Visual Studio Code 中,按 F1 打开命令面板,搜索并运行命令
Azure Developer CLI (azd): Sign In with Azure Developer CLI,然后使用 Azure 帐户登录。按 F1 打开命令面板,搜索并运行命令
Azure Developer CLI (azd): Provision Azure resources (provision)以创建所需的 Azure 资源:在终端窗口中出现提示时,请提供以下所需的部署参数:
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 中的新函数应用之前在本地开发计算机上运行此项目。
按 F1 并在命令面板中搜索并运行命令
Azurite: Start。若要在本地启动函数,请按 F5 或左侧活动栏中的 “运行和调试 ”图标。 “终端”面板将显示 Core Tools 的输出。 应用在 终端 面板中启动,可以看到在本地运行的函数的名称。
如果在 Windows 上运行时遇到问题,请确保用于 Visual Studio Code 的默认终端未设置为“WSL Bash”。
如果 Core Tools 仍在 终端中运行,请按 F1 并在命令面板中搜索并运行命令
NoSQL: Create Item...,并选择document-db数据库和documents容器。将 新 Item.json 文件的内容替换为此 JSON 数据,然后选择“ 保存:
{ "id": "doc1", "title": "Sample document", "content": "This is a sample document for testing my Azure Cosmos DB trigger in Azure Functions." }选择 “保存”后,你将在终端中看到函数的执行,本地文档将更新为包含服务添加的元数据。
完成后,在终端窗口中按 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 上调用函数
在 Visual Studio Code 中,按 F1 并在命令面板中搜索并运行命令
Azure: Open in portal,选择Function app并选择新应用。 如有必要,请使用 Azure 帐户登录。此命令将在 Azure 门户中打开新的函数应用。
在主页的“ 概述 ”选项卡中,选择函数应用名称,然后选择“ 日志 ”选项卡。
在 Visual Studio Code 中使用
NoSQL: Create Item命令,再次将文档添加到容器中,如前所述。再次验证函数是否由受监视容器中的更新触发。
重新部署代码
可以根据需要多次运行 azd deploy 命令,以便将代码更新部署到函数应用。
注释
已部署的代码文件始终被最新的部署包覆盖。
对 azd 提示的初始响应和 azd 生成的任何环境变量都本地存储在你的命名环境中。 使用 azd env get-values 命令查看创建 Azure 资源时使用的环境中的所有变量。
清理资源
使用完函数应用和相关资源后,可以使用此命令从 Azure 中删除函数应用及其相关资源,并避免产生任何进一步的成本:
azd down --no-prompt
注释
--no-prompt 选项指示 azd 在未经你确认的情况下删除资源组。
此命令不会影响本地代码项目。