如何以编程方式查询我们的 Azure 消耗量?

问题描述 投票:0回答:0

我正在尝试以编程方式访问我们的 Azure 消费数据。我以前这样做过,但我想使用最新的库:Azure.Identity(1.8.2)、Azure.ResourceManager (1.4.0) 和 Azure.ResourceManager.Consumption (1.0.1)。

我不确定如何使用它们。我可以查询我们所有的资源,但是当我尝试获取有关消费的信息时,我没有看到任何专用方法,例如

GetConsumption()
。我只看到
subscription.GetPriceSheet()
,但这给了我一个奇怪的错误,抱怨旧的 API 版本,虽然我确实在最新的 nugets 上。

我搜索了文档,但是关于如何存档的信息很少,或者我没有找对地方。

我将相关代码提取到测试程序中,并且能够查询我们订阅中的所有资源。

ClientSecretCredential cred = new ClientSecretCredential(
               tenantId,
               clientId,
               clientSecret);
var armClient = new ArmClient(cred);

TenantCollection tenants = armClient.GetTenants();
SubscriptionResource subscription = armClient.GetSubscriptionResource(new Azure.Core.ResourceIdentifier($"/subscriptions/{subscriptionId}"));
ResourceGroupResource resourceGroup = subscription.GetResourceGroup(resourceGroupName);

// check, that we have access to azure
var resourcesInSubscription = subscription.GetGenericResources();
int amountResourcesInSubscription= resourcesInSubscription.Count();
var resourcesInResourceGroup = resourceGroup.GetGenericResources();
int amountResourcesInResourceGroup = resourcesInSubscription.Count();

我能找到的唯一与消费有关的方法是

// now try to get some information about consumption/pricing
var prices=subscription.GetPriceSheet();

但这给出了一个奇怪的错误

成本管理数据不支持订阅 ---- 在提供的 api 版本中。请使用 api-version 2019-10-01 或更高版本。 (请求ID:----) 状态:404(未找到) 错误代码:404

我感觉,Api 版本并不是真正的问题,因为 nuget 库至少在 2023 年 2 月 8 日之后全部发布。 我可能会错过我的服务主体或某些角色的一些 Api 权限,我必须在我的订阅中提供它,毕竟它是一个较新的订阅和服务主体?

非常感谢对这个问题的帮助!

更新 我还尝试了以下方法:

var managementGroups = armClient.GetManagementGroups();
var cost=managementGroups.First().GetAggregatedCost();

这给出了另一个错误: 对象ID为'----'的客户'----'没有授权 在范围“/providers/Microsoft.Management”上执行操作“Microsoft.Management/managementGroups/read”或范围无效。 如果最近授予访问权限,请刷新您的凭据。 状态:403(禁止访问) 错误代码:授权失败

我需要访问管理组吗?以及服务委托人是否、如何拥有订阅的所有者权利,以及角色“管理组读者”和“成本管理贡献者”

c# azure-active-directory azure-resource-manager consumption
© www.soinside.com 2019 - 2024. All rights reserved.