如何通过Java程序使用AzureResourceManager启用/禁用单条Azure Function
实现方案
实现原理
Azure Function App 中单个函数的启用/禁用能力,本质是通过修改应用配置项 AzureWebJobs.<函数名称>.Disabled 的取值实现的:
- 取值为
true时,对应函数被禁用 - 取值为
false或删除该配置项时,对应函数恢复启用
代码示例
你使用的 azure-resourcemanager 2.1.0 版本已支持直接修改Function App的应用配置,示例代码如下:
禁用单个函数
import com.azure.resourcemanager.AzureResourceManager; import com.azure.resourcemanager.appservice.models.FunctionApp; // 入参说明: // azureResourceManager: 已完成认证的Azure资源管理器实例 // functionAppId: 目标Function App的资源ID // functionName: 要禁用的单条函数名称,需与部署的函数名完全一致 public void disableFunction(AzureResourceManager azureResourceManager, String functionAppId, String functionName) { FunctionApp targetApp = azureResourceManager.functionApps().getById(functionAppId); String disableConfigKey = String.format("AzureWebJobs.%s.Disabled", functionName); targetApp.update() .withAppSetting(disableConfigKey, "true") .apply(); }
启用单个函数
public void enableFunction(AzureResourceManager azureResourceManager, String functionAppId, String functionName) { FunctionApp targetApp = azureResourceManager.functionApps().getById(functionAppId); String disableConfigKey = String.format("AzureWebJobs.%s.Disabled", functionName); targetApp.update() // 两种写法二选一即可,效果完全一致 .withoutAppSetting(disableConfigKey) // .withAppSetting(disableConfigKey, "false") .apply(); }
注意事项
- 修改应用配置会触发Function App实例重启,配置会在重启完成后正式生效
- 函数名称大小写敏感,需和你实际部署的函数名称完全匹配
- 操作需要目标Function App的写入权限,与启停整个Function App所需的权限一致
内容的提问来源于stack exchange,提问作者Thunderbird
相关产品推荐
相关产品推荐

