使用Azure结算API / SDK

时间:2017-06-11 07:56:45

标签: python azure azure-billing-api azure-sdk azure-sdk-python

在Azure门户中,如果选择了一个订阅,则可以查看成本分析,如下面的屏幕截图

Azure Cost Analysis

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

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

以下是这些REST调用的结果。 。Azure Billing Usage Aggregate Response

Azure Billing Ratecard Response

但说实话,我仍然没有想出这些如何给我详细的视图,如成本分析,每个资源可以显示多少相关成本可以显示。实际上我是Azure的新手可能这就是为什么我我错过了某处的链接。

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

下面有一些官方文档,用于在Python中使用Python SDK或REST API检索计费数据。

  1. 有关使用Python SDK的信息,请参阅http://azure-sdk-for-python.readthedocs.io/en/latest/resourcemanagementcommerce.html
  2. 要使用Billing REST API,请参阅https://docs.microsoft.com/en-us/rest/api/billing/,您可以尝试使用Python包requests来获取这些数据。
  3. 但是,我认为您可能已经了解上述内容,关键是您需要按照教程Manage access to billing information for Azure using role-based access control通过您的帐户管理员获取角色权限。

    如果您想在Python SDK中使用Service Principal / ADAL(非AD用户/密码)或使用REST API执行操作,那么您可能还需要注册客户端应用以获取Resource Management Authentication的客户端ID与Azure REST API Reference页面相同的身份验证说。对于身份验证主题,您可以参考Manage Apps的内容地图,了解更多信息,如果您遇到了麻烦。

    希望它有所帮助。如有任何疑虑,请随时告诉我。

答案 2 :(得分:0)

我有同样的问题。但不幸的是,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生成的凭据获得令牌。 certificate.token()将返回您可以在标头中使用的令牌。

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