Idle Functions Premium plans
Always-on capacity for code that rarely runs
Why it happens
The premium option keeps a machine warm so your code never has a slow first start. If it runs a few times a day, that readiness is most of the bill.
Elastic Premium buys a warm instance so functions never cold start. A function that runs a handful of times a day is paying for readiness it does not need.
Paste this into Resource Graph Explorer in the Azure portal.
resources
| where type =~ 'microsoft.web/serverfarms'
// Scope below matches CloudFinOpsPro policy DEFAULTS: exclusions.protectTag, environment.tagKeys,
// environment.allowedTagValues, and allowUntagged false so an untagged resource counts as production.
// If your policy.yaml differs, edit the three lines below or this will disagree with your own agent.
| where tolower(tostring(coalesce(tags['cfop:protect'], ''))) !in ('true', 'yes', '1')
| extend cfopEnv = tolower(trim(' ', tostring(coalesce(tags['Environment'], tags['environment'], tags['env'], ''))))
| where cfopEnv in ('dev', 'development', 'test', 'qa', 'sandbox', 'nonprod', 'non-prod', 'staging')
| where sku.tier =~ 'ElasticPremium'
| project name, resourceGroup, location,
sku = tostring(sku.name),
sites = toint(properties.numberOfSites)Compare against FunctionExecutionCount in Azure Monitor. Low execution counts usually cost less on the Consumption plan.
Applies to microsoft.web/serverfarmsWhat the agent does about it
An Elastic Premium plan whose function apps execute rarely enough that Consumption would cost far less.
It will not fix this one
It reports this and takes no action. A check only earns the right to change something once the action behind it can re-read live state before it fires and knows the way back.
Related checks
App Service plan with no apps
A paid App Service plan hosting no applications.
App Service plan larger than its sustained demand
A plan whose sustained CPU and memory sit far below the tier it is provisioned in.
App Service plan on a tier its workload does not justify
A plan whose observed load fits a cheaper tier, not just a smaller SKU inside the current tier.