本快速入门介绍如何使用 Azure 应用配置在代码之外集中和管理 Azure Functions 应用程序设置。 通过 .NET 配置提供程序集成,只需更改几个简单的代码,即可将应用配置添加为额外的配置源。
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
- 应用程序配置存储区。 创建存储区。
- 包含 Azure 开发工作负载的 Visual Studio。
- Azure Functions 工具。
将以下键值添加到应用程序配置存储区,并让“标签”和“内容类型”保留默认值。 有关如何使用 Azure 门户或 CLI 将键值添加到存储区的详细信息,请转到创建键值。
密钥 | 值 |
---|---|
TestApp:Settings:Message | Azure 应用配置的数据 |
通过选择 Azure Functions (C#) 模板,使用 Visual Studio 创建 Azure Functions 应用。 此模板指导你配置项目的基本设置。 有关详细说明,请参阅 使用 Visual Studio 开发 Azure Functions。
创建 Function App 时,请使用下表作为关键参数的参考。
设置 | 值 |
---|---|
函数辅助角色 | .NET 8.0(独立) |
功能 | HTTP 触发器 |
授权级别 | 匿名 |
备注
Azure Functions 可与 Azure 应用程序配置配合使用,无论是在 独立进程模型 还是 进程内模型 中。 本快速入门以独立辅助角色模型为例。 可以在 Azure 应用配置 GitHub 存储库中找到这两个模型的完整代码示例。
你可以使用 Microsoft Entra ID(推荐)或连接字符串连接到应用程序配置存储区。
右键单击项目,然后选择“管理 NuGet 包” 。 在“ 浏览 ”选项卡上,搜索以下 NuGet 包的最新稳定版本并将其添加到项目中。
- Microsoft.Azure.AppConfiguration.Functions.Worker
- Azure.Identity
打开 Program.cs 并更新代码,如下所示。 通过调用该方法
AddAzureAppConfiguration
将 Azure 应用配置添加为其他配置源。使用
DefaultAzureCredential
向应用程序配置存储区进行身份验证。 按照说明为凭据分配“应用程序配置数据读取者”角色。 运行应用程序前,请务必留出足够的时间让权限生效。using Azure.Identity; using Microsoft.Azure.Functions.Worker.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; var builder = FunctionsApplication.CreateBuilder(args); // Connect to Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { Uri endpoint = new(Environment.GetEnvironmentVariable("AZURE_APPCONFIG_ENDPOINT") ?? throw new InvalidOperationException("The environment variable 'AZURE_APPCONFIG_ENDPOINT' is not set or is empty.")); options.Connect(endpoint, new DefaultAzureCredential()) // Load all keys that start with `TestApp:` and have no label .Select("TestApp:*"); });
打开 Function1.cs,并添加以下命名空间。
using Microsoft.Extensions.Configuration;
更新构造函数以获取通过依赖项注入的
IConfiguration
实例。private readonly IConfiguration _configuration; private readonly ILogger<Function1> _logger; public Function1(IConfiguration configuration, ILogger<Function1> logger) { _configuration = configuration; _logger = logger; }
更新
Run
方法以从配置中读取值。[Function("Function1")] public IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req) { _logger.LogInformation("C# HTTP trigger function processed a request."); // Read configuration data string key = "TestApp:Settings:Message"; string? message = _configuration[key]; return new OkObjectResult(message ?? $"Please create a key-value with the key '{key}' in Azure App Configuration."); }
设置 环境变量。
将名为 AZURE_APPCONFIG_ENDPOINT 的环境变量设置为 Azure 门户中应用商店的“概述”下找到的应用程序配置存储区的终结点。
如果使用 Windows 命令提示符,则请运行以下命令并重启命令提示符,这样更改才会生效:
setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
如果使用 PowerShell,请运行以下命令:
$Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
如果使用 macOS 或 Linux,则请运行以下命令:
export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
按 F5 测试函数。 如果系统提示,请按 Visual Studio 的请求下载和安装 Azure Functions Core (CLI) 工具。 你还需要启用防火墙例外,这样工具才能处理 HTTP 请求。
从 Azure Functions 运行时输出复制函数的 URL。
将 HTTP 请求的 URL 粘贴到浏览器的地址栏。 下图显示了浏览器中函数返回的本地 GET 请求的响应。
Azure Functions 触发器定义如何调用函数。 触发器属性(例如队列名称或数据库名称)在主机启动时加载,无法直接从 Azure 应用配置检索值。 若要管理这些参数,可以使用可用于 Azure Functions 和应用服务的应用配置参考功能。
应用配置参考功能允许直接从应用程序设置引用存储在 Azure 应用配置中的键值。 Azure Functions 在启动时解析这些引用,使你能够集中安全地管理触发器参数。
例如,请考虑队列触发的函数应用程序。 可以引用 Azure 应用配置中存储的键值,而不是直接在触发器属性中指定队列名称。
在 Azure 应用配置存储区中,为队列名称添加键值:
密钥 值 TestApp:Storage:QueueName <存储帐户中的队列名称> 在 Function App 中,选择 Azure 门户中 的设置 ->环境变量 ->应用设置 ,并创建引用应用配置密钥的应用程序设置:
名称 值 MyQueueName @Microsoft.AppConfiguration(Endpoint=<your-store-endpoint>; Key=TestApp:Storage:QueueName)
提示
如果在 Azure 应用配置中有多个键值,则可以使用 Azure 门户或 CLI 以应用配置引用的形式批量导出它们 。
为 Azure Functions 应用程序启用托管标识,并为应用配置存储分配 应用配置数据读取者 角色。 有关设置应用配置引用的详细说明,请参阅 应用服务和 Azure Functions 中的“使用应用配置”参考。
请更新队列触发的函数以使用应用设置:
[Function("QueueTriggeredFunction")] public void Run([QueueTrigger(queueName: "%MyQueueName%")] QueueMessage message) { _logger.LogInformation($"C# Queue trigger function processed: {message.MessageText}"); }
在运行时,Azure Functions 会将
%MyQueueName%
占位符解析为 Azure 应用配置中存储的值,从而集中管理触发器参数,而无需将它们硬编码到函数代码中。
如果不想继续使用本文中创建的资源,请删除此处创建的资源组以避免产生费用。
重要
删除资源组的操作不可逆。 将永久删除资源组以及其中的所有资源。 请确保不要意外删除错误的资源组或资源。 如果在包含要保留的其他资源的资源组中创建了本文的资源,请从相应的窗格中单独删除每个资源,而不是删除该资源组。
- 登录到 Azure 门户,然后选择“资源组”。
- 在“按名称筛选”框中,输入资源组的名称。
- 在结果列表中,选择资源组名称以查看概述。
- 选择“删除资源组”。
- 系统会要求确认是否删除资源组。 重新键入资源组的名称进行确认,然后选择“删除”。
片刻之后,将会删除该资源组及其所有资源。
在本快速入门中,你已将 Azure 应用配置与 Azure Functions 应用集成。 若要了解如何使函数应用能够动态刷新配置设置,请继续学习下一教程。
若要了解如何在 Azure Functions 应用中使用 Azure 应用配置中的功能标志,请继续学习以下教程。
若要了解如何使用 Azure 托管标识简化对应用配置的访问,请继续学习以下教程。