Last month we announced a preview release of subscription level budgets for enterprise customers, that was only the first step. Today we're announcing the release of additional features that support the scoping of more granular budgets with filters as well as support for usage and cost budgets. We've heard from our customers that multiple teams share a subscription and that resource groups serve as cost boundaries. Today's updates will support resource group and resource level budgets in addition to the subscription level budgets. The budgets API is now generally available and we welcome your feedback.
The preview release of budgets only supported cost based budgets. In this release we are also adding support for usage budgets. Additionally, support for filters enables you to define the scope at which a budget applies.
Here are a few common scenarios that the budgets API addresses:
- A budget for the subscription with no constraints.
- A resource group budget with no constraints.
- A budget for multiple resource groups within a subscription.
- A budget for multiple resources within a resource group or a subscription.
- Budgets based on usage on a subscription or resource group.
This enables most common scenarios where resource groups or specific resources within resource groups need to be budgeted. The table describes the specific filters available for crafting a budget of different types and scopes.
Support for Azure Action Groups
One of the most requested features from the preview was the ability to orchestrate services based on cost thresholds. Integrating with Action Groups allows us to support multiple notification channels including webhooks. With webhooks, you can trigger an Azure Logic App and/or an Azure Automation script to take any desired action. For instance, you might want to notify a developer via email on the first threshold, but start to spin down resources on the next.
The budgets API has a few limitations
- Budgets are currently only supported for Enterprise customers.
- Calls to the budgets API enforce a user context. So you will need to call the budgets API in the context of a user and not a service principal. For customers using MFA the ARM client is an option to get a user token to use with the request.
- Usage based budgets require a meter, the constraint enforced by the budget API is to enforce a single unit of measure for all meters within a budget. For instance, if you are budgeting your compute hours, you cannot include meters for networking that measure the GB transferred in the same budget.
Enhancements to Cost Management APIs
Support for New Data Indicator (E-Tags)
Customers who are heavy users of our APIs have requested a new data indicator. This will help them avoid polling the API and getting a full response back that has not changed since the last call. To support this need, we are releasing an updated version of the usage details API that will use E-Tags to let callers know when data has been refreshed. Each call to the API will return an E-Tag, in subsequent calls to the same API, pass the captured E-Tag with the key If-None-Match in the request header, the API will not return any data in the case there is no change since the E-Tag was generated.
ARM APIs for Pricesheet and Marketplace Charges
One ongoing initiative for the team has been standardizing all our APIs to be ARM (Azure Resource Manager) based APIs from the legacy key based APIs. With the release of Marketplace Charges and the Pricesheet API this month we will have converted all the major APIs to ARM.
We continue to work on improving our budgets feature and have a few releases planned over the next few months. As always, we welcome your feedback how we could make the experience better.