如何从结算API

时间:2016-02-24 22:44:55

标签: sql-server azure billing azure-billing-api

我正在构建Azure Chargeback解决方案,为此,我将从Azure Billing REST API中提取Azure使用数据,以获取多个订阅和不同日期。我需要根据客户的要求将其存储到自定义MS SQL数据库中。我从Azure获得了各种使用记录。

  • 问题:从这些使用记录中,我无法在我收到的数据中找到任何列的组合,这将给我一个 用于标识特定订阅的使用记录的唯一键 并针对具体日期。只有我认为不同的列是数量 但即使这样也可以重复。例如。如果有2个类型为A1的VM 然后,在同一个云服务中没有数据或应用程序 他们将有确切的使用量。我没有得到确切的名字 通过使用API​​的VM或任何其他资源。
  • 一个自定义解决方案(无效):我可以在使用记录中附加计数器或唯一ID,但如果我下次获取数据 订单可能会混乱,或者可能会引入新数据,从而影响 独特的逻辑。我构建的任何逻辑来检查是否有任何数据 数据库中缺少将导致错误,如果有任何更改 订单返回使用记录(针对特定订阅) 具体日期)。

我确信Microsoft会将此数据存储在某个数据库中。我找不到唯一ID来识别Billing API返回的许多记录中的使用记录。也许我在这里遗漏了一些东西。

我将不胜感激任何帮助或任何指示。

1 个答案:

答案 0 :(得分:0)

当您调用Usage API时,将ShowDetails参数设置为true:&showDetails=true

MSDN Doc

这将使用包含名称的资源的唯一URI填充返回的JSON中的实例数据,例如:

网站:

"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/xxx-xxxx/resourceGroups/mygoup/providers/Microsoft.Web/sites/WebsiteName\",\"...

虚拟机:

"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/xxx-xxxx/resourceGroups/TESTINGBillGroup/providers/Microsoft.Compute/virtualMachines/TestingBillVM\",\...

如果ShowDetails为false,所有资源将根据资源类型在服务器端聚合,您的所有网站都将显示为一个条目。

据我所知,资源URI,日期范围和meterid将形成一个唯一的密钥。

注意:如果您使用的是旧版API,则您的虚拟机将在托管它们的云服务下进行汇总。