【问题标题】:Usage of Azure App Configuration's Feature Flags in Azure Functions在 Azure Functions 中使用 Azure 应用程序配置的功能标志
【发布时间】:2020-07-25 14:52:27
【问题描述】:

我正在探索 Azure Function 的 Http Trigger 中 Azure App Configuration 的以下 2 个功能

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

下面是我如何获取配置的参考

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

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

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

谢谢。

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

FeatureManager 是我定义的类,如下所示。

【问题讨论】:

  • 你是说 _configuration["appconfig.featureflag/TurnOnGreeting"] 不起作用吗?
  • 它返回一个 json。但是,这是访问功能标志的最佳方式吗?
  • 我能够反序列化 json 内容。我在问题中更新了相同的内容

标签: azure azure-functions featuretoggle azure-app-configuration


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    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.");
    }
    

    【讨论】:

    • 问题是如何检索功能标志设置而不是常规键值对。
    • 您共享的链接是针对 ASP.NEt 核心的。我正在为 Azure Functions 寻找类似的东西
    • 我认为我们可以在 Azurefucntion 启动类中使用 UseFeatureFlags() 中间件
    猜你喜欢
    • 1970-01-01
    • 2020-10-17
    • 2021-12-08
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多