azure - 使用任何配置禁用某些 Azure 功能
问题描述
在使用 Azure 函数时,我有一种情况,我希望函数应用程序的一些函数处于“禁用”模式,而其他函数则要启用。问题是,我不想使用可以轻松启用/禁用各个功能的功能屏幕手动执行此操作。有这篇文章说 Functions 2.x 支持这一点(Functions 1.x 不是我的选择)。
https://docs.microsoft.com/en-us/azure/azure-functions/disable-function
只是文章对需要做什么有点模糊。它说,我引用>
在 Functions 2.x 中,您可以使用应用设置禁用某个功能。例如,要禁用名为 QueueTrigger 的函数,请创建名为 AzureWebJobs.QueueTrigger.Disabled 的应用设置,并将其设置为 true。要启用该功能,请将应用设置设置为 false。
我试过这个,但它不像记录的那样工作。我有一个名为的函数应用程序foo
和一个名为bar
. 我都试过了:
disabled: true
在函数.json
也:
foo: {
bar: {
disabled: true
}
}
进行这些更改并重新部署后,对 UI 没有任何影响。我错过了什么?
解决方案
推荐的方法是使用应用程序设置,您可以通过访问门户来完成。[注意:当他们说应用程序设置时,他们并不是指 function.json。]
选项 1:使用应用程序设置
在 azure 门户中,导航到您的函数应用程序foo
-> Confuguration
,您应该会看到Application Settings
已定义一些变量的选项卡。您需要通过单击New application setting
按钮创建一个新变量。将名称设置为AzureWebJobs.bar.Disabled
并将值设置为true
。请注意,函数应用名称foo
不在变量名称中。
选项 2:使用 host.json 因为您正在寻找从代码中禁用功能,您可以尝试在 host.json 中执行此操作。请注意,这适用于本地开发,不推荐用于 prod,但它可以工作。 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]
属性。这是一个 Functions 1.x 构造,但它也适用于 2.x。与上面类似,门户 UI 将无法正确显示。
[Disable]
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
}
选项 4:仅在使用 C# 时删除 FunctionName 属性。这听起来可能违反直觉,但如果您从函数中删除 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 门户中。
推荐阅读
- c++ - 基于 C++ 范围的 for 循环,容器是否被复制?
- fonts - 希伯来语字体 PUA 标记未正确放置在 Word 中
- python-3.x - Pyomo 找不到 gurobi 求解器
- postman - Postman Sushi Selector 演示 - 基于关键字的测试失败?
- javascript - Vanilla JavaScript - 在满足多个条件时尝试更新数组元素
- javascript - 使用 Javascript 或 jQuery 通过元素的高度更改元素的颜色?
- angular - 如何使用带有控件 ID 的 Typescript 隐藏控件
- scala - 将大文件拆分为小文件并使用spark保存在不同的路径中
- sql - where 语句中的 case 语句
- android - XML 文件结束