快速入门:使用 Azure 应用程序配置创建 Azure Functions 应用

本快速入门介绍如何使用 Azure 应用配置在代码之外集中和管理 Azure Functions 应用程序设置。 通过 .NET 配置提供程序集成,只需更改几个简单的代码,即可将应用配置添加为额外的配置源。

先决条件

添加键值

将以下键值添加到应用程序配置存储区,并让“标签”和“内容类型”保留默认值。 有关如何使用 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(推荐)或连接字符串连接到应用程序配置存储区。

  1. 右键单击项目,然后选择“管理 NuGet 包” 。 在“ 浏览 ”选项卡上,搜索以下 NuGet 包的最新稳定版本并将其添加到项目中。

    • Microsoft.Azure.AppConfiguration.Functions.Worker
    • Azure.Identity
  2. 打开 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:*");
    });
    
  3. 打开 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;
    }
    
  4. 更新 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.");
    }
    

在本地测试函数

  1. 设置 环境变量。

    将名为 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>'
    
  2. 按 F5 测试函数。 如果系统提示,请按 Visual Studio 的请求下载和安装 Azure Functions Core (CLI) 工具。 你还需要启用防火墙例外,这样工具才能处理 HTTP 请求。

  3. 从 Azure Functions 运行时输出复制函数的 URL。

    在 VS 中的函数调试快速入门

  4. 将 HTTP 请求的 URL 粘贴到浏览器的地址栏。 下图显示了浏览器中函数返回的本地 GET 请求的响应。

    本地函数启动快速入门

使用应用配置引用管理触发器参数

Azure Functions 触发器定义如何调用函数。 触发器属性(例如队列名称或数据库名称)在主机启动时加载,无法直接从 Azure 应用配置检索值。 若要管理这些参数,可以使用可用于 Azure Functions 和应用服务的应用配置参考功能。

应用配置参考功能允许直接从应用程序设置引用存储在 Azure 应用配置中的键值。 Azure Functions 在启动时解析这些引用,使你能够集中安全地管理触发器参数。

例如,请考虑队列触发的函数应用程序。 可以引用 Azure 应用配置中存储的键值,而不是直接在触发器属性中指定队列名称。

  1. 在 Azure 应用配置存储区中,为队列名称添加键值:

    密钥
    TestApp:Storage:QueueName <存储帐户中的队列名称>
  2. 在 Function App 中,选择 Azure 门户中 的设置 ->环境变量 ->应用设置 ,并创建引用应用配置密钥的应用程序设置:

    名称
    MyQueueName @Microsoft.AppConfiguration(Endpoint=<your-store-endpoint>; Key=TestApp:Storage:QueueName)

    提示

    如果在 Azure 应用配置中有多个键值,则可以使用 Azure 门户或 CLI 以应用配置引用的形式批量导出它们

  3. 为 Azure Functions 应用程序启用托管标识,并为应用配置存储分配 应用配置数据读取者 角色。 有关设置应用配置引用的详细说明,请参阅 应用服务和 Azure Functions 中的“使用应用配置”参考

  4. 请更新队列触发的函数以使用应用设置:

    [Function("QueueTriggeredFunction")]
    public void Run([QueueTrigger(queueName: "%MyQueueName%")] QueueMessage message)
    {
        _logger.LogInformation($"C# Queue trigger function processed: {message.MessageText}");
    }
    

    在运行时,Azure Functions 会将 %MyQueueName% 占位符解析为 Azure 应用配置中存储的值,从而集中管理触发器参数,而无需将它们硬编码到函数代码中。

清理资源

如果不想继续使用本文中创建的资源,请删除此处创建的资源组以避免产生费用。

重要

删除资源组的操作不可逆。 将永久删除资源组以及其中的所有资源。 请确保不要意外删除错误的资源组或资源。 如果在包含要保留的其他资源的资源组中创建了本文的资源,请从相应的窗格中单独删除每个资源,而不是删除该资源组。

  1. 登录到 Azure 门户,然后选择“资源组”。
  2. 在“按名称筛选”框中,输入资源组的名称
  3. 在结果列表中,选择资源组名称以查看概述。
  4. 选择“删除资源组”。
  5. 系统会要求确认是否删除资源组。 重新键入资源组的名称进行确认,然后选择“删除”。

片刻之后,将会删除该资源组及其所有资源。

后续步骤

在本快速入门中,你已将 Azure 应用配置与 Azure Functions 应用集成。 若要了解如何使函数应用能够动态刷新配置设置,请继续学习下一教程。

若要了解如何在 Azure Functions 应用中使用 Azure 应用配置中的功能标志,请继续学习以下教程。

若要了解如何使用 Azure 托管标识简化对应用配置的访问,请继续学习以下教程。