使用任何配置禁用某些Azure功能

时间:2019-06-01 14:32:48

标签: azure azure-functions

在使用Azure函数时,我遇到一种情况,我希望功能应用程序处于“禁用”模式的一些功能,而其他功能则要启用。问题是,我不想使用可以轻松启用/禁用各个功能的功能屏幕手动进行操作。有一篇文章说Functions 2.x支持此功能(Functions 1.x对我来说不是一个选择)。

https://docs.microsoft.com/en-us/azure/azure-functions/disable-function

只是这篇文章对需要做的事情有些含糊。它说,我引用>

在“功能2.x”中,您可以通过使用应用程序设置禁用功能。例如,要禁用名为QueueTrigger的功能,可以创建一个名为AzureWebJobs.QueueTrigger.Disabled的应用程序设置,并将其设置为true。要启用该功能,请将应用程序设置设置为false。

我尝试过此操作,但是它不能像所记录的那样工作。我有一个名为foo的函数应用程序和一个名为bar的函数。我都尝试过:

disabled: true在function.json中

以及:

foo: { 
  bar: {
    disabled: true
  }
}

进行这些更改并重新部署后,对UI无效。我想念什么?

1 个答案:

答案 0 :(得分:0)

推荐的方法是使用应用程序设置,您可以通过转到门户来进行设置。 [注意:说应用程序设置时,它们并不是指function.json。]

选项1:使用应用设置 在azure门户中,导航到功能应用程序foo-> Confuguration,您将看到Application Settings选项卡,其中已经定义了一些变量。您需要通过单击New application setting按钮来创建一个新变量。将名称设置为AzureWebJobs.bar.Disabled,将值设置为true。请注意,函数应用程序名称foo不在变量名称中。

选项2:使用host.json 因为您正在寻找禁用代码中的功能的方法,所以可以尝试在host.json中执行此操作。请注意,这是为本地开发而设计的,不建议用于产品,但它可以工作。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json#functions

{
    "functions": [ "function1", "function2" ] // Don't list function "bar" here, and it would get disabled.
}

请注意,门户网站将无法正确显示此信息,并列出了已启用的“栏”,但在点击该功能时会得到404。

选项3:使用“禁用”属性 如果使用的是C#,还可以使用[Disable]属性。这是一个Function 1.x构造,但它也适用于2.x。与上面类似,门户网站用户界面将无法正确显示。

    [Disable]
    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log)
{
}

选项4:删除FunctionName属性 仅在使用C#时。这听起来可能违反直觉,但是如果您从函数中删除FunctionName属性,则不会将其视为此类。

    // [FunctionName("Function1")]  // Comment this or delete this line to disable this function
    public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log)
{
}

这在两个运行时都应该起作用。该功能不会显示在azure门户中。