Как найти уникальность в записях об использовании Azure из API выставления счетов

Я создаю решение Azure Chargeback и для этого извлекаю данные об использовании Azure из API REST выставления счетов Azure для нескольких подписок и разных дат. Мне нужно сохранить это в пользовательской базе данных MS SQL в соответствии с требованиями заказчика. Я получаю различные записи об использовании из Azure.

  • Проблема: в этих записях об использовании я не могу найти комбинацию столбцов в получаемых мной данных, которые дадут мне уникальный ключ для идентификации записи об использовании для конкретной подписки и для конкретной Дата. Единственный столбец, который я считаю другим, - это количество, но даже его можно продублировать. Например. Если в одной облачной службе есть 2 виртуальные машины типа A1 без данных или приложений, то они будут использовать точное количество. Я не могу получить точное имя виртуальной машины или любого другого ресурса через API использования.
  • Одно индивидуальное решение (неэффективно): я могу добавить счетчик или уникальный идентификатор к записям об использовании, но если я получу данные в следующий раз, заказ может перетасоваться или могут быть введены новые данные, что повлияет на логику уникальности . Любая логика, которую я создаю для проверки отсутствия каких-либо данных в БД, приведет к ошибкам, если есть какие-либо изменения в порядке возврата записей об использовании (для конкретной подписки на определенную дату).

Я уверен, что Microsoft хранит эти данные в какой-то базе данных. Я не могу найти уникальный идентификатор для идентификации записи об использовании из многих записей, возвращаемых Billing API. Может, я что-то здесь упускаю.

Буду признателен за любую помощь или любые указатели по этому поводу.


person Aman Sharma    schedule 24.02.2016    source источник
comment
Вы используете C # Azure SDK или PowerShell?   -  person juvchan    schedule 25.02.2016
comment
@juvchan Я использую C # Azure SDK. В частности, я использую официальный образец использования, доступный здесь: Billing Usage Console Приложение. Но я считаю, что это не имеет значения. Данные JSON остаются прежними, которые мне нужно сохранить в MS SQL Server.   -  person Aman Sharma    schedule 25.02.2016
comment
Можете ли вы объяснить, хотите ли вы хранить необработанные данные об использовании или агрегировать данные в какой-либо форме или форме, а затем сохранять их? Если это агрегированные данные, можете ли вы описать, как вы хотите их агрегировать?   -  person Gaurav Mantri    schedule 25.02.2016
comment
@GauravMantri Я хочу сохранить необработанные данные. Я также буду хранить соответствующие данные о тарифах.   -  person Aman Sharma    schedule 26.02.2016


Ответы (1)


Когда вы вызываете Usage API, установите для параметра ShowDetails значение true: &showDetails=true

Документ MSDN

Это заполнит данные экземпляра в возвращенном JSON уникальным URI для ресурса, который включает имя, например:

Веб-сайт:

"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, ваши виртуальные машины будут объединены в облачную службу, на которой они размещены.

person Francois    schedule 26.02.2016
comment
Я использовал переключатель showDetails = true. Если у вас есть 2 виртуальные машины в облачной службе, она не даст вам точное имя виртуальной машины. Он даст вам только имя облачной службы. Я отправляю запрос после проверки фактических данных JSON и сравнения двух записей для 2 виртуальных машин в 1 облачной службе. Повторите попытку для нескольких виртуальных машин на классическом портале в одной облачной службе, и вы увидите то же наблюдение, что и мое. Я знаю, что данные виртуальных машин и веб-сайтов отображаются по-разному. Сегодня невозможно получить точное имя виртуальной машины из API использования. - person Aman Sharma; 26.02.2016
comment
@AmanSharma В моих данных об использовании я получаю уникальный URI для каждой виртуальной машины, но я использую ARM. Я провел тест для создания виртуальных машин на старом портале, а для устаревших виртуальных машин использование агрегировано в облачной службе, на которой они размещены, я также не получаю уникальных имен для виртуальных машин. - person Francois; 28.02.2016