You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell实现Azure Function App基于闲置时长的自动启停

Azure Function 自动启停 PowerShell 实现方案

基于闲置时长触发的实现说明

可以实现该能力,但没有原生直接触发的内置机制,需要结合Azure Monitor的指标查询做闲置判断,逻辑如下:

  • 提前安装Azure PowerShell Az模块并完成Azure身份认证
  • 每次执行检测时拉取目标Function App过去30分钟的Function Invocations指标,若调用次数为0则判定为闲置,执行停止操作
  • 若需要闲置后自动恢复运行,可额外搭配定时计划、上游调用前置检测等规则触发启动操作

示例代码(闲置检测+停止):

# 登录Azure(如果在Azure自动化账户中运行可使用托管身份,无需手动登录)
Connect-AzAccount

# 配置参数
$resourceGroupName = "你的资源组名称"
$functionAppName = "你的Function App名称"
$idleThresholdMinutes = 30
$endTime = Get-Date
$startTime = $endTime.AddMinutes(-$idleThresholdMinutes)

# 查询过去30分钟的调用次数
$invocationMetrics = Get-AzMetric -ResourceId "/subscriptions/$((Get-AzContext).Subscription.Id)/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$functionAppName" `
  -MetricName "FunctionInvocations" `
  -StartTime $startTime `
  -EndTime $endTime `
  -AggregationType Total

$totalInvocations = ($invocationMetrics.Data | Measure-Object -Property Total -Sum).Sum

# 调用次数为0则停止Function App
if ($totalInvocations -eq 0) {
  Stop-AzWebApp -ResourceGroupName $resourceGroupName -Name $functionAppName -Force
}

常规自动启停的PowerShell实现

可以直接实现,你可以将脚本放到Azure自动化账户、本地计划任务或其他定时触发服务中,按自定义时间执行启停操作:

# 启动Function App
Start-AzWebApp -ResourceGroupName "你的资源组名称" -Name "你的Function App名称"

# 停止Function App
Stop-AzWebApp -ResourceGroupName "你的资源组名称" -Name "你的Function App名称" -Force

注意:如果你的Function App运行在弹性计划或消费计划下,原生会自动处理闲置实例的回收,不需要手动停止来节约成本,手动启停更适合专用App Service计划的场景


内容的提问来源于stack exchange,提问作者Sheikh Sadique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:18:02