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

Область применения: Центр партнеров | Центр партнеров для Microsoft Cloud for US Government

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

Необходимые компоненты

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

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

Java

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

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

// 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)

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

Имя. Type Обязательно Описание
customer-tenant-id строка Да Строка в формате GUID, определяющая клиент.
subscription-id строка Да Строка в формате GUID, определяющая подписку.
start_time строка в формате смещения даты и времени в формате UTC Да Начало диапазона времени, представляющего, когда в системе выставления счетов сообщалось об использовании.
end_time строка в формате смещения даты и времени в формате UTC Да Конец диапазона времени, представляющего, когда в системе выставления счетов сообщалось об использовании.
Степень детализации строка Нет Определяет степень детализации агрегатов использования. Доступные варианты: daily (по умолчанию) и hourly.
show_details boolean No Указывает, следует ли получать сведения об использовании на уровне экземпляра. Значение по умолчанию — true.
size Номер No Определяет число агрегатов, возвращаемых в одном вызове 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/FC8F8908-F918-4406-AF13-D5BC0FE41865/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: a687bc47-8d08-4b78-aff6-5a59aa2055c2
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: a687bc47-8d08-4b78-aff6-5a59aa2055c2
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/ab7e2384-eeee-489a-a14f-1eb41ddd261d/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "dbd1aa30-e40d-4436-b465-3a8bc11df027",
          "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/ab7e2384-eeee-489a-a14f-1eb41ddd261d/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "dbd1aa30-e40d-4436-b465-3a8bc11df027",
          "azureStack.Location": "local",
          "azureStack.EventDateTime": "06/05/2017 06:00:00"
        },
        "attributes": {
          "objectType": "AzureUtilizationRecord"
        }
      },

      "links": {
        "self": {
          "uri": "customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/FC8F8908-F918-4406-AF13-D5BC0FE41865/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"
      }
    }
  ]
}