在 Azure Functions 中使用 Azure App Configuration 的功能标志

Usage of Azure App Configuration's Feature Flags in Azure Functions

我正在研究 Azure Function 的 Http 触发器中 Azure 应用程序配置的以下 2 个功能

  1. 外部化应用程序设置
  2. 功能标志

以下是我获取配置参考的方式

因此,当我使用 _configuration["SomeAppSettingKey"] 时,我能够检索该值。所以,我能够实现上面提到的 #1 功能。

我的问题是,我们如何检索功能标志信息?我尝试了以下方法。

如果有人可以帮助我了解如何在 Azure Functions 中检索它(我使用的是 V3),我将不胜感激?示例代码或对文档的任何参考都会有所帮助。

谢谢。

更新1: 我可以反序列化 json 内容,如下所示。但是,这是正确的做法吗?

其中 FeatureManager 是我定义的 class,如下所示。

反序列化 JSON 不是一个好主意,每次添加新密钥时都需要修改 class.

private static IConfiguration Configuration { set; get; }

static Function1()
{
    var builder = new ConfigurationBuilder();
    builder.AddAzureAppConfiguration(Environment.GetEnvironmentVariable("ConnectionString"));
    Configuration = builder.Build();
}

public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string keyName = "TestApp:Settings:Message";
    string message = Configuration[keyName];

    return message != null
        ? (ActionResult)new OkObjectResult(message)
        : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration.");
}

您只需调用 UseFeatureFlags() 函数作为 AddAzureAppConfiguration 的一部分,让应用程序配置提供程序知道您想要使用功能标志。可以在下面的 link 之后找到一个示例。它使用 Azure Functions 的 FunctionsStartup 和依赖注入 (DI)。功能管理器的一个实例被放入 DI。

https://github.com/Azure/AppConfiguration/blob/master/examples/DotNetCore/AzureFunction/FunctionApp/Startup.cs

下面的 link 显示了如何从 DI 获取 IFeatureManagerSnapshot 的实例并将其用作 Azure Functions 调用的一部分。

https://github.com/Azure/AppConfiguration/blob/master/examples/DotNetCore/AzureFunction/FunctionApp/ShowBetaFeature.cs