Azure RM订阅成本分析REST API获取带标签资源使用费用问询
使用Azure Cost Management REST API获取带指定标签的资源成本
别担心,Azure确实提供了对应的REST API来实现这个需求——就是Azure Cost Management API,专门用来获取成本分析相关的数据,包括按标签筛选的资源费用。下面我给你一步步拆解怎么用:
核心API端点:CostManagementQuery
你需要调用CostManagementQuery的POST接口,通过自定义查询条件来筛选带xyz标签的资源并汇总成本。
1. 准备认证
首先得获取有效的Azure AD访问令牌,这是调用Azure REST API的前提。你可以通过服务主体、用户身份等方式获取令牌,确保令牌对应的身份拥有Cost Management Reader或Reader这类能读取成本数据的权限。
2. 构造请求
请求URL
POST https://management.azure.com/subscriptions/{你的订阅ID}/providers/Microsoft.CostManagement/query?api-version=2023-11-01
记得替换{你的订阅ID}为实际的订阅ID,API版本建议用最新的稳定版(比如2023-11-01),避免旧版本功能缺失。
请求体(JSON)
下面是一个示例请求体,专门筛选带有xyz标签的资源,并按标签和资源ID分组汇总成本:
{ "type": "ActualCost", "timeframe": "MonthToDate", "dataset": { "granularity": "Daily", "filter": { "and": [ { "tag": { "name": "xyz", "operator": "Exists" } } ] }, "aggregation": { "totalCost": { "name": "PreTaxCost", "function": "Sum" } }, "grouping": [ { "type": "Tag", "name": "xyz" }, { "type": "ResourceId" } ] } }
3. 参数解释
type: 指定成本类型,ActualCost是实际产生的成本,也可以用AmortizedCost(摊销成本)timeframe: 时间范围,比如MonthToDate(当月至今)、LastMonth(上月);如果需要自定义时间范围,可以换成Custom并添加timePeriod字段来指定起止日期filter.tag: 这里用Exists操作符匹配所有带有xyz标签的资源;如果要筛选标签值为特定内容的资源,可以把operator改成Equals,并添加value字段(比如"value": "abc")aggregation: 定义成本的聚合方式,这里是对税前成本求和,方便你直接拿到总费用grouping: 按标签和资源ID分组,让你能清晰看到每个带xyz标签的资源的具体费用明细
4. 解析响应
API返回的JSON响应里,properties.rows是具体的成本数据行,properties.columns对应每行数据的字段含义,你可以根据这两个部分提取需要的费用信息。
内容的提问来源于stack exchange,提问作者Sudha Ganesan
相关产品推荐
相关产品推荐

