Поделиться через


Получение записей об использовании клиента для Azure

применимо к: Центр партнеров | Центр партнеров для Microsoft Cloud для государственных организаций США

Вы можете получить записи об использовании подписки Azure клиента за указанный период времени с помощью API использования Azure.

Необходимые условия

  • Учетные данные, как описано в аутентификации Центра партнеров. Этот сценарий поддерживает проверку подлинности с помощью автономных приложений и учетных данных app+User.

  • Идентификатор клиента (customer-tenant-id). Если вы не знаете идентификатор клиента, его можно найти в Центре партнеров, сначала выбрав рабочую область Клиенты, затем клиента из списка клиентов, и после этого выбрав учетную запись. На странице "Учетная запись клиента" найдите идентификатор Microsoft в разделе Сведения об учетной записи клиента. Идентификатор Майкрософт совпадает с идентификатором клиента (customer-tenant-id).

  • Идентификатор подписки.

API возвращает данные о ежедневном и почасовом неотсортированном потреблении за произвольный интервал времени. Однако этот API не поддерживается для планов Azure. Если у вас есть план Azure, ознакомьтесь со статьями Получить строки неучтенного потребления по счету и Получить строки учтенного потребления по счету. В этих статьях описывается, как получить оценку потребления на ежедневном уровне на единицу измерения на ресурс. Это значение эквивалентно ежедневному потреблению данных зерна, предоставляемых API использования Azure. Вам потребуется использовать идентификатор счета-фактуры для получения учтенных данных о использовании. Кроме того, можно использовать текущие и предыдущие периоды для получения необязанных оценок использования. Почасовые данные по сегментации и произвольные фильтры диапазона дат в настоящее время не поддерживаются для ресурсов подписки на Azure.

API использования Azure

Этот API использования Azure предоставляет доступ к записям об использовании в течение периода времени, представляющего время, когда в системе выставления счетов сообщалось об использовании. Он предоставляет доступ к тем же данным об использовании, которые используются для создания и вычисления файла выверки. Однако у него нет знаний о логике файла согласования в системе биллинга. Вы не должны ожидать, что результаты сводки файла выверки соответствуют результату, полученному из этого API точно за тот же период времени.

Например, система выставления счетов принимает те же данные об использовании и применяет правила задержки, чтобы определить, что учитывается в файле выверки. При закрытии периода выставления счетов все данные об использовании до конца дня окончания периода выставления счетов будут включены в файл выверки. Любое позднее использование в течение периода выставления счетов, которое сообщается в течение 24 часов после окончания периода выставления счетов, учитывается в следующем файле выверки. Правила позднего выставления счетов партнёру см. в разделе Получение данных о потреблении для подписки Azure.

Этот REST API пейджируется. Если полезная нагрузка ответа больше одной страницы, необходимо перейти по ссылке следующей страницы, чтобы получить следующую страницу записей об использовании.

Сценарий: партнер A передал права на выставление счетов за устаревшую подписку Azure (145P) партнеру B.

Если партнер передает права на выставление счетов по устаревшей подписке Azure другому партнеру, новый партнер при вызове API учёта использования для переданной подписки должен использовать идентификатор коммерческой подписки (который отображается в их учетной записи Центра партнеров) вместо идентификатора права Azure. Идентификатор права Azure отображается для партнера B только в том случае, если он действует в качестве администратора от имени клиента (AOBO) на портале Azure этого клиента.

Чтобы успешно вызвать API использования для переданной подписки, новый партнер должен использовать идентификатор коммерческой подписки.

C#

Чтобы получить записи об использовании Azure, выполните следующие действия.

  1. Получите идентификатор клиента и идентификатор подписки.

  2. Вызовите метод IAzureUtilizationCollection.Query, чтобы вернуть ResourceCollection , содержащую записи об использовании.

  3. Получите перечислитель записей использования Azure для обхода страниц использования. Этот шаг является обязательным, так как коллекция ресурсов разбита на страницы.

// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;

IPartner partner = PartnerService.Instance.CreatePartnerOperations(credentials);

// Retrieve the utilization records for the last year in pages of 100 records.
var utilizationRecords = partner.Customers[customerId].Subscriptions[subscriptionId].Utilization.Azure.Query(
    DateTimeOffset.Now.AddYears(-1),
    DateTimeOffset.Now,
    size: 100);

// Create an Azure utilization enumerator which will aid us in traversing the utilization pages.
var utilizationRecordEnumerator = partner.Enumerators.Utilization.Azure.Create(utilizationRecords);

while (utilizationRecordEnumerator.HasValue)
{
    //
    // Insert code here to work with this page.
    //

    // Get the next page.
    utilizationRecordEnumerator.Next();
}

Ява

SDK на языке Java для Центра партнеров можно использовать для управления ресурсами Центра партнеров. Это проект с открытым исходным кодом, поддерживаемый сообществом партнеров и официально не поддерживаемый корпорацией Майкрософт. Вы можете получить помощь от сообщества или открыть проблему на сайте GitHub, если возникла проблема.

Чтобы получить записи об использовании Azure, сначала потребуется идентификатор клиента и идентификатор подписки. Затем вы вызываете функцию IAzureUtilizationCollection.query, чтобы вернуть ResourceCollection, содержащую записи об использовании. Поскольку коллекция ресурсов представлена по страницам, необходимо получить перечислитель записей использования Azure для прохода по страницам использования.

// IAggregatePartner partnerOperations;
// String customerId;
// String subscriptionId;

ResourceCollection<AzureUtilizationRecord> utilizationRecords = partnerOperations.getCustomers()
  .byId(customerId).getSubscriptions().byId(subscriptionId)
  .getUtilization().getAzure().query(
      new DateTime().minusYears(1),
      new DateTime(),
      AzureUtilizationGranularity.Daily,
      true,
      100);

// Create an Azure utilization enumerator which will aid us in traversing the utilization pages
IResourceCollectionEnumerator<ResourceCollection<AzureUtilizationRecord>> utilizationRecordEnumerator =
    partnerOperations.getEnumerators().getUtilization().getAzure().create(utilizationRecords);

while (utilizationRecordEnumerator.hasValue())
{
    //
    // Insert code here to work with this page.
    //

    // get the next page
    utilizationRecordEnumerator.next();
}

PowerShell

Модуль PowerShell для Центра партнеров можно использовать для управления его ресурсами. Это проект с открытым исходным кодом, поддерживаемый сообществом партнеров и официально не поддерживаемый корпорацией Майкрософт. Вы можете получить помощь от сообщества или открыть вопрос на сайте GitHub, если столкнулись с проблемой.

Чтобы получить записи об использовании Azure, сначала потребуется идентификатор клиента и идентификатор подписки. Затем вызовите Get-PartnerCustomerSubscriptionUtilization. Эта команда вернет все записи, доступные в течение указанного периода времени.

# $customerId
# $subscriptionId

Get-PartnerCustomerSubscriptionUtilization -CustomerId $customerId -SubscriptionId $subscriptionId -StartDate (Get-Date).AddDays(-2).ToUniversalTime() -Granularity Hourly -ShowDetails

запрос REST

Синтаксис запроса

Метод URI запроса
GET {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/utilizations/azure?start_time={start-time}&end_time={end-time}&granularity={granularity}&show_details={True}

Параметры URI

Чтобы получить записи об использовании, используйте следующий путь и параметры запроса.

Имя Тип Обязательно Описание
идентификатор-клиент-арендатор струна Да Строка с форматом GUID, идентифицирующая клиента.
идентификатор подписки струна Да Строка с форматом GUID, идентифицирующая подписку.
время начала строка со смещением в формате даты и времени UTC Да Начало диапазона времени, представляющего, когда в системе выставления счетов сообщалось об использовании.
время окончания строка в формате смещения времени относительно UTC Да Конец диапазона времени, представляющего, когда в системе выставления счетов сообщалось об использовании.
зернистость струна Нет Определяет степень детализации агрегации данных об использовании. Доступны следующие варианты: daily (по умолчанию) и hourly.
показать_подробности булев Нет Указывает, следует ли получать сведения об использовании на уровне экземпляра. Значение по умолчанию — true.
размер число Нет Указывает количество агрегатов, возвращаемых одним вызовом API. Значение по умолчанию — 1000. Максимальное значение — 1000.

Заголовки запросов

Дополнительные сведения см. в заголовках REST Центра партнеров.

Текст запроса

Никакой

Пример запроса

Следующий пример запроса дает результаты, аналогичные тем, которые покажет файл выверки за период с 7/2 по 8/1. Эти результаты могут не совпадать точно (дополнительные сведения см. в разделе API использования Azure).

В этом примере запрос возвращает данные об использовании, сообщаемые в системе выставления счетов между 7/2 в 12:00 (UTC) и 8/2 в 12:00 (UTC).

GET https://api.partnercenter.microsoft.com/v1/customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/utilizations/azure?start_time=2017-07-02T00:00:00-08:00&end_time=2017-08-02T00:00:00-08:00 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: e6a3b6b2-230a-4813-999d-57f883b60d38
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
Host: api.partnercenter.microsoft.com

ОТВЕТ REST

В случае успешного выполнения этот метод возвращает коллекцию записей об использовании Azure ресурсов в тексте ответа. Если данные об использовании Azure еще не готовы в зависимой системе, этот метод возвращает код состояния HTTP 204 с заголовком Retry-After.

Коды успешных и ошибочных ответов

Каждый ответ содержит код состояния HTTP, указывающий на успешность или сбой и дополнительные сведения об отладке. Используйте средство трассировки сети для чтения кода состояния HTTP, типа кода ошибкии дополнительных параметров.

Пример ответа

HTTP/1.1 200 OK
Content-Length: 2630
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: e6a3b6b2-230a-4813-999d-57f883b60d38
MS-CV: PjuGoYrw806o6A3Y.0
MS-ServerId: 030020525
Date: Fri, 04 Aug 2017 23:48:28 GMT

{
  "totalCount": 2,
  "items": [
    {
      "usageStartTime": "2017-06-07T17:00:00-07:00",
      "usageEndTime": "2017-06-08T17:00:00-07:00",
      "resource": {
        "id": "8767aeb3-6909-4db2-9927-3f51e9a9085e",
        "name": "Storage Admin",
        "category": "Storage",
        "subcategory": "Block Blob",
        "region": "Azure Stack"
      },
      "quantity": 0.217790327034891,
      "unit": "1 GB/Hr",
      "infoFields": {},
      "instanceData": {
        "resourceUri": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
          "azureStack.Location": "local",
          "azureStack.EventDateTime": "06/05/2017 06:00:00"
        }
      },
      "attributes": {
        "objectType": "AzureUtilizationRecord"
      }
    },
    {
      "usageStartTime": "2017-06-07T17:00:00-07:00",
      "usageEndTime": "2017-06-08T17:00:00-07:00",
      "resource": {
        "id": "8767aeb3-6909-4db2-9927-3f51e9a9085e",
        "name": "Storage Admin",
        "category": "Storage",
        "subcategory": "Block Blob",
        "region": "Azure Stack"
      },
      "quantity": 0.217790327034891,
      "unit": "1 GB/Hr",
      "infoFields": {},
      "instanceData": {
        "resourceUri": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
          "azureStack.Location": "local",
          "azureStack.EventDateTime": "06/05/2017 06:00:00"
        },
        "attributes": {
          "objectType": "AzureUtilizationRecord"
        }
      },

      "links": {
        "self": {
          "uri": "customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/utilizations/azure?start_time=2017-06-10T00:00:00Z&end_time=2017-07-09T00:00:00Z&granularity=Daily&show_details=True&size=1000",
          "method": "GET",
          "headers": []
        }
      },
      "attributes": {
        "objectType": "Collection"
      }
    }
  ]
}