Показать данные анализа стоимости Azure с помощью API/SDK для биллинга Azure

На портале Azure, если выбрана одна подписка, анализ затрат можно посмотреть следующим образом

Анализ стоимости Azure

Я хочу программно получить информацию, подобную той, которую может использовать отображаемая выше, используя Python SDK API/REST API. Если у кого-то есть опыт / идея по этому вопросу, пожалуйста, помогите.

После получения ответов я прошел через API Azure Billing Rest и теперь могу вызывать API-интерфейсы Rest, связанные с использованием Aggrgate и RateCard.

Ниже приведены результаты этих вызовов REST., Совокупный ответ на использование счетов Azure

Azure Billing Ratecard Response

Но, честно говоря, я до сих пор не выяснил, как это даст мне подробное представление, как анализ затрат показывает, где для каждого ресурса может отображаться, сколько связанных затрат. На самом деле я очень новичок в Azure, возможно, поэтому я скучаю по ссылку где-нибудь.

Может кто-нибудь дать здесь подсказку?

2 ответа

У меня такая же проблема. Но, к сожалению, использовать 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() вернет токен, который вы можете использовать в заголовках.

вы можете найти restapi в https://docs.microsoft.com/en-us/rest/api/ или использовать F12 в Chrome при доступе к панели мониторинга Azure.

Если у вас уже есть данные об использовании и прайс-листе, вы должны объединить их. Возьмите meterId данных об использовании и получите соответствующие данные карты. Данные карты тарифов содержат MeterRates и IncludedQuantity, которые вы должны взять. Вероятно, есть расценки нескольких счетчиков и включенное количество, потому что, вероятно, существуют разные затраты на использование (например, первые 10 бесплатных звонков, 3 ГБ бесплатно, ...). Потребление начинается / сбрасывается в 14 числа месяца. Вот почему вы должны читать данные за весь расчетный период (начинается с 14 числа каждого месяца), потому что это единственный способ получить правильное потребление.

Итак, если вы используете, например, функции Azure и используете 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€. К счастью, у лазурных функций есть только одна скорость. Если скорость меняется, например, после 5.000.000 единиц, то вы также должны принять это во внимание. Если у вас есть все расходы, то вы можете отфильтровать по дате, которая составляет 20.-30. и вы получите результат.

Это краткое объяснение расчета. Я реализовал этот расчет в C# и опубликовал его как пакет NuGet. Исходный код на github - возможно, это поможет. Он также содержит образец консоли, которую вы можете использовать для экспорта данных.

Ниже приведены официальные документы для извлечения данных биллинга с использованием Python SDK или REST API в Python.

  1. Для использования Python SDK см. http://azure-sdk-for-python.readthedocs.io/en/latest/resourcemanagementcommerce.html.
  2. Для использования Billing API REST, пожалуйста, смотрите https://docs.microsoft.com/en-us/rest/api/billing/, и вы можете попробовать использовать пакет Python requests чтобы получить эти данные.

Тем не менее, я думаю, что вы, возможно, знаете это выше, ключ в том, что вам нужно следовать учебнику Manage access to billing information for Azure using role-based access controlчтобы получить разрешение на роль через администратора вашей учетной записи.

И затем вам также может понадобиться зарегистрировать клиентское приложение, чтобы получить идентификатор клиента для аутентификации управления ресурсами, если вы хотите использовать Service Principal/ADAL (не AD User/Password) в Python SDK или использовать REST API для той же аутентификации, что и Azure. Справочная страница API REST. Что касается темы аутентификации, вы можете обратиться к карте содержимого в разделе " Управление приложениями", чтобы узнать больше, если у вас возникли проблемы.

Надеюсь, поможет. Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.

Другие вопросы по тегам