2

在 Azure 门户中,如果选择一个订阅,可以查看成本分析,如下图所示

Azure 成本分析

我想以编程方式获取上面显示的信息,可能正在使用某些 python SDK API/REST API。如果有人对此有任何经验/想法,请提供帮助。

浏览完回复后,我浏览了 Azure Billing Rest API,现在可以调用 Usage Aggrgate 和 RateCard 相关的 Rest API。

以下是这些 REST 调用的结果。. Azure 计费使用聚合响应

Azure 计费价目表响应

但老实说,我仍然没有弄清楚这些如何给我详细的视图,比如成本分析在哪里可以显示每个资源的相关成本。实际上我对 Azure 很陌生,可能这就是为什么我错过了链接一些地方。

有人可以在这里给出一些提示吗?

4

3 回答 3

1

我有同样的问题。但不幸的是,python SDK 太难用了。

此外,您在 Google 上找不到可用的示例或示例。

所以,我选择使用restapi而不是python SDK。

使用python代码,您可以先执行此操作,

import requests
from azure.common.credentials import ServicePrincipalCredentials

并设置标题 pyload 和 url。

 headers = {
     "Content-Type": "application/json",
     "Authorization": <token> }

您可以通过由 client_id、secret、tenant 生成的凭据获取令牌。credentials.token() 将返回您可以在标头中使用的令牌。

您可以在https://docs.microsoft.com/en-us/rest/api/中找到 restapi,或者在访问 Azure 仪表板时在 Chrome 中使用 F12。

于 2019-12-05T08:28:39.310 回答
1

如果您已经拥有使用情况和价目表数据,那么您必须将它们结合起来。获取使用数据的meterId,获取相关的ratecard数据。价目表数据包含您必须采用的 MeterRates 和 IncludedQuantity。可能有多个计量费率和包含的数量,因为每次使用可能存在不同的成本(例如,前 10 次免费通话,3 GB 免费......)。消费在每月 14 日开始/重置。这就是为什么您必须从整个计费周期(从每月 14 日开始)读取数据的原因,因为这是您获得正确消费的唯一方法。

因此,如果您正在使用例如 Azure Functions,并且您每天使用 100.000 个单位,并且您想要从 20 日到 30 日的成本,那么计算如下:从 14 日到 30 日读取数据。这些是 17 天,因此它使用了 1.700.000 个单位。前 400.000 是免费的 = IncludedQuantity(因此在此示例中为前 4 天)。从 400.001 单位开始,您必须采用计量费率 (0,0000134928 €) 并计算成本。1.300.000 * 0,0000134928 = ~17,54€。幸运的是,azure 函数只有一种速率。如果汇率发生变化,例如在 5.000.000 单位之后,您还必须考虑到这一点。如果您有全部费用,那么您可以过滤您的日期,即 20.-30。你会得到结果。

这是计算的简短解释。我在 C# 中实现了这个计算并将其发布为 NuGet 包。源代码在 github - 可能有帮助。它还包含一个示例控制台,您可以使用它来导出数据。

于 2017-08-30T21:04:19.357 回答
0

以下是使用 Python SDK 或 REST API 在 Python 中检索计费数据的官方文档。

  1. 如需使用 Python SDK,请参阅http://azure-sdk-for-python.readthedocs.io/en/latest/resourcemanagementcommerce.html
  2. 使用BillingREST API,请参阅https://docs.microsoft.com/en-us/rest/api/billing/,您可以尝试使用 Python 包requests来获取这些数据。

不过,我想您可能已经知道以上这些,关键是您需要按照教程Manage access to billing information for Azure using role-based access control通过您的帐户管理员获得角色权限。

然后,如果您想在 Python SDK 中使用服务主体/ADAL(不是 AD 用户/密码)或使用 REST API 进行与Azure相同的身份验证,您可能还需要注册客户端应用程序以获取资源管理身份验证的客户端 ID REST API 参考页说。关于认证主题,如果遇到问题,可以参考管理应用的内容图了解更多。

希望能帮助到你。任何问题,请随时告诉我。

于 2017-06-12T13:32:17.613 回答