当超出成本阈值时关闭Azure Functions应用的免费实现方案
免费实现成本阈值触发停止Azure Functions应用的方案
方案1:成本警报通过Webhook触发自动化Runbook(利用自动化账户免费额度)
你已创建的自动化账户和PowerShell Runbook可直接复用,Azure Automation每月提供500分钟免费作业运行时间,完全满足单次触发停止应用的需求,无需额外付费。操作步骤如下:
- 为PowerShell Runbook配置Webhook
进入自动化账户,找到用于停止Functions应用的Runbook,点击「添加Webhook」,设置名称、过期时间并勾选「启用」,复制生成的Webhook URL(仅显示一次,务必保存)。 - 修改成本警报的通知方式
进入「成本管理 + 计费」的成本警报页面,编辑目标警报的「通知设置」,添加「Webhook」类型通知并粘贴上述URL。保存后,成本阈值触发时会自动调用Webhook,触发Runbook执行停止操作。 - 配置Runbook权限
给自动化账户的服务主体分配「网站参与者」或「Functions参与者」权限到Functions应用所在资源组,确保Runbook有权限停止应用。
方案2:Azure Monitor自定义警报规则关联自动化Runbook
若成本+计费模块的警报无法配置Webhook,可通过Azure Monitor创建基于成本查询的警报,直接关联Runbook:
- 进入Azure Monitor,创建「自定义日志搜索」警报规则
- 在查询编辑器中编写成本筛选查询(例如按资源组或Functions应用过滤,判断成本是否超出阈值)
- 设置警报触发条件(如成本大于指定金额)
- 在「操作组」中添加「自动化Runbook」类型操作,选择已创建的停止应用Runbook
- Azure Monitor的警报触发属于免费范围,自动化Runbook使用免费额度即可
示例PowerShell Runbook脚本
# 替换为你的资源组和Functions应用名称 $resourceGroupName = "your-resource-group-name" $functionAppName = "your-function-app-name" Stop-AzFunctionApp -ResourceGroupName $resourceGroupName -Name $functionAppName
内容的提问来源于stack exchange,提问作者afriedman111
相关产品推荐
相关产品推荐

