Azure waste

Non-production API Management service on a paid tier

A non-production API Management service on the Basic, Standard or Premium tier, where Microsoft names Developer as the tier for evaluation.
The agent reports this
Reversible
Saving holds until someone undoes it
Why it happens

An API Management service bills a fixed hourly rate for every provisioned unit whatever traffic it serves, and the tiers are far apart: about 48 US dollars a month for a Developer unit, 147 for Basic, 687 for Standard and 2,795 for Premium. Microsoft states that the Developer tier should be used to evaluate the service and should not be used for production, so a development or test service on a paid tier is buying throughput and an availability agreement that its environment does not need. Microsoft also states that you can upgrade and downgrade to and from the classic tiers, which are Developer, Basic, Standard and Premium, so this is a change of setting rather than a rebuild. The saving is the current rate multiplied by the provisioned unit count, less a single Developer unit, because Microsoft states the Developer tier has no availability agreement and cannot be scaled by adding or removing units, so a three unit Premium service does not become a three unit Developer one. Two consequences of the move travel on every finding rather than being discovered afterwards: the article states that the service does not experience gateway downtime while updating except in the Developer tier, so this particular move does interrupt the gateway, and that downgrading can remove features, giving the example that moving from Premium to Standard or Basic can remove virtual networks or multi-region deployment. The Consumption tier is excluded because Microsoft states you cannot upgrade from or downgrade to it, and the v2 tiers are excluded because the documented downgrade path joins them only to each other and never to Developer. This rule requires the gateway to be serving requests above the same threshold idle_api_management uses, so a service nothing calls is that rule findings and is never counted twice here.

Azure Resource Graph holds ARM properties, not metrics, and this check decides on an Azure Monitor metric measured over a window: it fires only where gateway requests are ABOVE the same threshold idle_api_management stops at, which is what keeps the two from reporting one service twice. A Resource Graph query could list every non-production service on Basic, Standard or Premium, and that list would include the idle ones this rule deliberately leaves to the other check, so it would look like the answer and would not be it. Switch the check on to see the real finding.

Applies to microsoft.apimanagement/service
What the agent does about it

A non-production API Management service on the Basic, Standard or Premium tier, where Microsoft names Developer as the tier for evaluation.

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.