1

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

  • 问题:从这些使用记录中,我无法在收到的数据中找到任何列组合,这将为我提供唯一键来识别特定订阅和特定日期的使用记录。我认为唯一不同的列是数量,但即使是可以复制的。例如,如果在同一个云服务中有 2 个 A1 类型的虚拟机,它们上面没有数据或应用程序,那么它们将具有准确的使用量。我没有通过 Usage API 获得 VM 或任何其他资源的确切名称。
  • 一种自定义解决方案(无效):我可以在使用记录中附加一个计数器或唯一 ID,但如果我下次获取数据,订单可能会打乱或引入新数据,从而影响唯一性逻辑。如果返回使用记录的顺序有任何更改(针对特定日期的特定订阅),我为检查数据库中是否缺少任何数据而构建的任何逻辑都将导致错误。

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

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

4

1 回答 1

0

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

MSDN 文档

这将使用包含名称的资源的唯一 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,您的虚拟机将在托管它们的云服务下聚合。

于 2016-02-26T00:36:16.270 回答