如何实现每日指定时间启停Azure Function资源本身
Azure Function资源级定时启停实现方案
以下是两种落地性最高的原生实现方式,无需依赖Function内部的触发器,也不需要借助Azure DevOps流水线即可完成配置:
方案一:Azure自动化账户+Runbook定时作业(推荐)
该方案是Azure官方推荐的资源定时管控方案,配置简单、成本极低:
- 首先创建Azure自动化账户,为其分配目标Function App所属资源组的
Contributor权限,确保账户有资源启停操作权限 - 新建两个PowerShell类型的Runbook,分别写入启动、停止Function App的命令:
启动命令:Start-AzFunctionApp -Name <FunctionApp名称> -ResourceGroupName <所属资源组名称>
停止命令:Stop-AzFunctionApp -Name <FunctionApp名称> -ResourceGroupName <所属资源组名称> - 为两个Runbook分别绑定定时调度计划,自定义设置每日启动、停止的时间,可选择对应时区避免UTC时间偏差
方案二:Azure Logic Apps定时调度
适合已经在用Logic Apps做业务流程编排的场景,可视化配置门槛更低:
- 创建消费级Logic Apps工作流,添加递归触发器,设置你需要的每日启动触发时间
- 新增「Azure Resource Manager 执行资源操作」动作,选择对应订阅、资源组,资源类型选择
Microsoft.Web/sites,资源名填写目标Function App的名称,操作项选择start - 同理再配置一个停止工作流,或在同一工作流中添加时间延迟步骤,到指定时间执行
stop操作即可
注意事项
- 两种方案均属于Azure原生能力,成本极低:自动化账户每月有免费的作业运行额度,Logic Apps消费计划单步执行成本不到0.01元,完全覆盖日常启停需求
- 启停操作执行后通常1分钟内即可生效,建议将调度时间设置为比实际业务需要的运行时间提前3-5分钟,避免资源启动冷启动影响业务
- 如果需要同时管控多个环境的多台Function App,可在Runbook或Logic Apps中配置参数批量执行,无需为每个资源单独创建调度规则
内容的提问来源于stack exchange,提问作者Jack Rogers
相关产品推荐
相关产品推荐

