你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如何在 Azure Functions 中禁用函数
本文介绍如何在 Azure Functions 中禁用函数。 禁用函数意味着使运行时忽略旨在触发该函数的事件。 此功能使你能够阻止特定函数运行,而无需修改和重新发布整个函数应用。
可以通过创建格式为 AzureWebJobs.<FUNCTION_NAME>.Disabled
的应用设置,并设置为 true
来禁用函数。 可以通过多种方式创建和修改此应用程序设置,包括使用 Azure CLI、Azure PowerShell 以及 Azure 门户中函数的“概述”选项卡。
更改应用程序设置会导致函数应用重启。 有关详细信息,请参阅 Azure Functions 的应用设置参考。
禁用函数
使用以下模式之一创建一个应用设置,该设置会禁用名为 QueueTrigger
的示例函数:
请使用函数的“概述”页上的“启用”和“禁用”按钮 。 这两个按钮通过更改 AzureWebJobs.QueueTrigger.Disabled
应用设置的值来工作。 首次禁用函数时会创建特定于函数的应用设置。
即使从本地项目发布到函数应用时,仍可以使用门户来禁用函数应用中的函数。
注意
仍可以使用主密钥通过调用 REST 终结点来运行已禁用的函数。 有关详细信息,请参阅运行已禁用的函数。 这意味着,当使用主密钥(主机密钥)从门户中的“测试/运行”窗口启动时,已禁用的函数仍会运行。
禁用槽中的函数
在默认情况下,应用设置还会应用于在部署槽位中运行的应用。 但是,可以通过设置特定于槽位的应用设置来替代该槽位使用的应用设置。 例如,你可能希望函数在生产环境中处于活动状态,但在部署测试期间不处于活动状态。 通常情况下,我们会禁用槽中计时器触发的函数,以防止同时执行。
若要只在过渡槽中禁用函数,请执行以下操作:
导航到函数应用的槽位实例,方法是:选择“部署”下的“部署槽位”,选择槽位,然后选择槽位实例中的“函数” 。 选择函数,然后使用函数的“概述”页上的“启用”和“禁用”按钮 。 这两个按钮通过更改 AzureWebJobs.<FUNCTION_NAME>.Disabled
应用设置的值来工作。 首次禁用函数时会创建此特定于函数的设置。
还可以在该槽位实例的“配置”中直接添加名为 AzureWebJobs.<FUNCTION_NAME>.Disabled
且值为 true
的应用设置。 在添加特定于槽位的应用设置时,请确保选中“部署槽位设置”框。 此选项可在交换期间保留槽位的设置值。
若要了解详细信息,请参阅 Azure Functions 部署槽位。
运行已禁用的函数
通过将 REST 请求中的主访问密钥 (_master
) 提供给禁用函数的终结点 URL,仍可导致禁用函数运行。 这样,就可以在 Azure 中开发和验证处于已禁用状态的函数,同时防止其他人访问这些函数。 在请求中使用任何其他类型的密钥将返回 HTTP 404 响应。
注意
由于主密钥在函数应用中授予提升的权限,不应与第三方共享此密钥或在本机客户端应用程序中分发此密钥。 为函数终结点选择管理员 HTTP 访问级别时请慎重。
若要详细了解主密钥,请参阅了解密钥。 若要详细了解如何调用非 HTTP 触发的函数,请参阅手动运行非 HTTP 触发的函数。
在本地禁用函数
在本地运行时,可以用相同的方式禁用函数。 若要禁用名为 QueueTrigger
的函数,请在 local.settings.json 文件的“值”集合中添加一个条目,如下所示:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobs.QueueTrigger.Disabled": true
}
}
注意事项
禁用函数时,请谨记以下注意事项:
如果使用本文中所述方法禁用 HTTP 触发的函数,则当终结点在本地计算机上和在门户中运行时,你依然可以访问终结点。
目前,对于函数名称包含连字符 (
-
) 的函数,当其在 Linux 上运行时,我们无法禁用。 如果系统正在 Linux 上运行函数,而你计划在这种情况下禁用相应函数,则请不要在函数名称中使用连字符。
后续步骤
本文介绍了如何禁用自动触发器。 有关触发器的详细信息,请参阅触发器和绑定。