成本管理 API 可帮助你查看和管理 Azure 成本。
特别是成本详细信息 API,通过提供详细的未聚合成本数据来帮助查看和管理 Azure 成本。
此异步 API 允许为企业协议(EA)计费帐户、部门或注册帐户生成和下载成本报告。
本文介绍如何使用成本详细信息 API 检索与 EA 计费帐户、部门或注册帐户关联的计费信息。
小窍门
此 REST API 非常适合自动化方案,需要定期以编程方式检索成本数据。 可以将它集成到脚本、应用程序或自动化工作流中,以拉取成本报表进行分析、预算或合规性报告。
重要
成本详细信息 API 是异步的和基于报表的。 提交请求以生成可下载的报告文件,查询其完成情况,然后从安全 URL 下载生成的文件。
成本详细信息 API 的工作原理
成本详细信息 API 使用异步工作流:
- 创建报表:提交 POST 请求以生成 EA 范围的成本详细信息报表
- 轮询状态:检查操作状态,直至报告完成
- 下载报表:使用提供的下载 URL 获取包含成本数据的 CSV 文件
注释
API 支持 ActualCost 和 AmortizedCost 指标。 ActualCost 在如原样计费时显示费用,而 AmortizedCost 将预留和节省计划的购买成本在其使用期限内平均分摊,并将成本重新分配给使用预留或节省计划的资源。 例如,1 年期保留费用为 365 美元,在购买日期显示为单笔费用。 在 AmortizedCost 中,相同的 365 美元作为每日 1.00 美元的使用费分散在受益于预留的使用情况中。
在不同的 EA 范围内工作
成本详细信息 API 支持三个 EA 范围,每个范围提供不同的成本聚合级别:
- 计费帐户范围:整个 EA 计费帐户的成本详细信息
- 部门范围:为特定部门中的所有帐户聚合的成本详细信息
- 注册帐户范围:注册中特定帐户的成本详细信息
步骤 1:创建成本详细信息报表
提交 POST 请求以生成成本详细信息报告:
POST https://management.chinacloudapi.cn/providers/Microsoft.Billing/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2025-03-01
Content-Type: application/json
Authorization: Bearer {access-token}
{
"metric": "ActualCost",
"timePeriod": {
"start": "2025-07-01",
"end": "2025-07-31"
}
}
根据 {scope}
所需范围而异的位置:
-
计费帐户范围:
billingAccounts/{billingAccountId}
-
部门范围:
departments/{departmentId}
-
注册帐户范围:
enrollmentAccounts/{enrollmentAccountId}
步骤 2:轮询报告状态
查看操作状态,直到报告完成。
GET https://management.chinacloudapi.cn/providers/Microsoft.Billing/{scope}/providers/Microsoft.CostManagement/costDetailsOperationStatus/{operationId}?api-version=2025-03-01
Authorization: Bearer {access-token}
其中 {scope}
使用与步骤 1 中相同的值:
-
计费帐户范围:
billingAccounts/{billingAccountId}
-
部门范围:
departments/{departmentId}
-
注册帐户范围:
enrollmentAccounts/{enrollmentAccountId}
步骤 3:下载报表
当报表状态显示“已完成”时,响应中会包括一个 blobLink
,用于下载包含您选择的范围的成本详细信息的 CSV 文件。
请求参数
请求正文支持以下参数:
-
metric - 请求的报表类型。 可以是
ActualCost
或者AmortizedCost
。 如果未指定,则默认为ActualCost
. -
timePeriod - 数据请求的日期范围。 以 YYYY-MM-DD 格式指定
start
和end
日期。 不能与 invoiceId 或 billingPeriod 参数一起使用。 - invoiceId - 所请求的数据发票。 微软客户协议的客户在计费档案或客户范围内支持此参数。 不能与 billingPeriod 或 timePeriod 参数一起使用。
- billingPeriod - 请求的数据计费周期。 企业协议客户支持此参数。 使用 YearMonth 格式(例如,202408)。 不能与 invoiceId 或 timePeriod 参数一起使用。
注释
如果在请求正文中未提供 timePeriod、invoiceId 或 billingPeriod 参数,API 将返回当前月份的成本。
以下标头是必需的:
请求标头 | 说明 |
---|---|
Content-Type: | 必需。 设置为 application/json 。 |
Authorization: | 必需。 设置为有效的 Bearer 访问令牌。 |
响应
初始响应 (HTTP 202 已接受)
初始 POST 请求返回状态代码 202(已接受),其中包含响应标头:
Name | 类型 | 说明 |
---|---|---|
位置 | String | 用于检查异步操作状态的 URL |
Retry-After | 整数 | 要生成的报表的预期时间(以秒为单位) |
轮询响应 (HTTP 200 正常)
报告完成后,轮询端点返回状态代码 200 (OK),同时提供报告详细信息,包括一个用于下载 CSV 文件的 blobLink
。
关键响应字段
Response 属性 | 说明 |
---|---|
地位 | 报告生成的状态(InProgress、Completed、Failed) |
dataFormat | 生成的报表的格式(CSV) |
blobCount | 报告数据集中的 Blob 文件数量 |
byteCount | 报表数据集的总大小(以字节为单位) |
blobLink | 下载成本详细信息 CSV 文件的 URL |
validTill | 下载 URL 的到期日期/时间 |
成本明细文件字段
下载的 CSV 文件包含包含关键字段的详细成本和使用情况数据,包括:
- 日期 - 费用的使用情况或购买日期
- BillingAccountId - EA 计费帐户的唯一标识符
- InvoiceSectionId - EA 部门的唯一标识符(如果适用)
- AccountId - EA 注册帐户的唯一标识符
- SubscriptionId - Azure 订阅的唯一标识符
- ResourceGroup - 资源组的名称
- CostInBillingCurrency - 在信用额度或税款之前按计费货币收取费用的成本
- ChargeType - 指示费用是代表使用情况、购买还是退款
- PricingModel - 指示计量定价方式的标识符
有关所有字段及其说明的完整列表,请参阅 “了解成本详细信息”字段。
最佳做法
- 请求频率:针对给定的范围和日期范围每天最多生成一次报告。 每四小时刷新一次成本数据。
- 日期范围:对于大型数据集,限制日期范围(例如生成每日或每周报表),以保持文件大小可管理。
- 数据保留:立即下载和存储报表。 下载 URL 将在短时间内过期(通常为一小时)。