You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用最新Azure SDK库查询消费数据遇权限与API版本问题

解决Azure最新资源管理库获取消费数据的问题

一、解决GetPriceSheet()的404错误

你遇到的404错误并非API版本问题,而是GetPriceSheet()方法对应的资源操作不匹配你的订阅类型(Microsoft Azure Plan for Dev/Test),且该方法并非获取消费数据的正确入口。

在Azure.ResourceManager.Consumption 1.0.1版本中,获取订阅级消费数据的正确方式是使用**使用详情(Usage Details)或成本详情(Cost Details)**相关操作,示例代码如下:

获取订阅的使用详情

// 确保已引用Azure.ResourceManager.Consumption NuGet包
var consumptionClient = armClient.GetConsumptionUsageDetails(subscription.Id);
// 可添加时间范围筛选
var usageDetails = consumptionClient.GetAllAsync(
    filter: "properties/usageStart ge '2023-01-01' and properties/usageEnd le '2023-01-31'"
).Result.ToList();

获取订阅的成本详情

var costDetailsClient = armClient.GetConsumptionCostDetails(subscription.Id);
var costDetails = costDetailsClient.GetAllAsync(
    new ConsumptionCostDetailsContent()
    {
        Metric = ConsumptionMetricType.ActualCost,
        TimePeriod = new ConsumptionTimePeriod()
        {
            Start = new DateTimeOffset(2023, 1, 1, 0, 0, 0, TimeSpan.Zero),
            End = new DateTimeOffset(2023, 1, 31, 23, 59, 59, TimeSpan.Zero)
        }
    }
).Result.ToList();

二、解决管理组GetAggregatedCost()的403错误

你的服务主体虽拥有订阅Owner、Management Group Reader和Cost Management Contributor角色,但Management Group Reader角色需分配到管理组作用域,而非仅订阅。如果仅需单个订阅的消费数据,完全无需通过管理组操作,直接使用上述订阅级方法即可,避免不必要的权限配置。

若确实需要跨订阅聚合成本,需确保:

  • 将Management Group Reader和Cost Management Contributor角色分配到目标管理组或管理组根节点,而非仅订阅。
  • 通过Azure门户「管理组」→「访问控制(IAM)」检查角色分配的作用域是否覆盖目标管理组。

三、必要权限说明

获取订阅级消费数据,服务主体只需拥有以下任一角色(分配到订阅作用域):

  • Cost Management Reader:只读访问消费数据
  • Cost Management Contributor:读写访问消费数据
  • Owner/Contributor:默认包含消费数据访问权限

无需额外管理组权限,除非需要跨订阅或管理组聚合成本。

内容的提问来源于stack exchange,提问作者Jan Bahlmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:12:14