Pobieranie rekordów dotyczących wykorzystania platformy Azure przez klienta

Dotyczy: Centrum partnerskie | Centrum partnerskie dla chmury firmy Microsoft dla instytucji rządowych USA

Rekordy wykorzystania subskrypcji platformy Azure klienta w określonym przedziale czasu można uzyskać przy użyciu interfejsu API użycia platformy Azure.

Wymagania wstępne

  • Poświadczenia zgodnie z opisem w temacie Uwierzytelnianie w Centrum partnerskim. Ten scenariusz obsługuje uwierzytelnianie zarówno przy użyciu aplikacji autonomicznej, jak i poświadczeń aplikacji i użytkownika.

  • Identyfikator klienta (customer-tenant-id). Jeśli nie znasz identyfikatora klienta, możesz wyszukać go w Centrum partnerskim, wybierając obszar roboczy Klienci , a następnie klienta z listy klienta, a następnie pozycję Konto. Na stronie Konto klienta poszukaj identyfikatora Microsoft w sekcji Informacje o koncie klienta. Identyfikator Microsoft jest taki sam jak identyfikator klienta (customer-tenant-id).

  • Identyfikator subskrypcji.

Ten interfejs API zwraca dzienne i godzinowe użycie bez oceny dla dowolnego przedziału czasu. Jednak ten interfejs API nie jest obsługiwany w przypadku planów platformy Azure. Jeśli masz plan platformy Azure, zapoznaj się z artykułami Pobieranie niezaliczonych elementów wiersza użycia na fakturze i Zamiast tego pobierz rozliczane elementy wiersza użycia. W tych artykułach opisano sposób oceniania zużycia na poziomie dziennym na miernik na zasób. To użycie jest równoważne z danymi dziennego ziarna udostępnianymi przez interfejs API wykorzystania platformy Azure. Aby pobrać rozliczane dane użycia, musisz użyć identyfikatora faktury. Możesz też użyć bieżących i poprzednich okresów, aby uzyskać niezliczone szacunki użycia. Dane ziarna godzinowego i dowolne filtry zakresu dat nie są obecnie obsługiwane dla zasobów subskrypcji planu platformy Azure.

Interfejs API wykorzystania platformy Azure

Ten interfejs API wykorzystania platformy Azure zapewnia dostęp do rekordów wykorzystania przez okres, który reprezentuje, kiedy użycie zostało zgłoszone w systemie rozliczeniowym. Zapewnia on dostęp do tych samych danych użycia, które są używane do tworzenia i obliczania pliku uzgodnień. Nie ma jednak wiedzy na temat logiki pliku uzgodnień systemu rozliczeń. Nie należy oczekiwać, że wyniki podsumowania pliku uzgodnień będą zgodne z wynikiem pobranym z tego interfejsu API dokładnie przez ten sam okres.

Na przykład system rozliczeń pobiera te same dane użycia i stosuje reguły opóźnienia, aby określić, co jest uwzględniane w pliku uzgodnień. Po zamknięciu okresu rozliczeniowego wszystkie użycie do końca dnia zakończenia okresu rozliczeniowego zostanie uwzględnione w pliku uzgodnień. Każde opóźnione użycie w okresie rozliczeniowym zgłoszonym w ciągu 24 godzin po zakończeniu okresu rozliczeniowego jest uwzględniane w następnym pliku uzgodnień. Aby uzyskać reguły opóźnienia dotyczące sposobu naliczania opłat od partnera, zobacz Pobieranie danych użycia dla subskrypcji platformy Azure.

Ten interfejs API REST jest stronicowany. Jeśli ładunek odpowiedzi jest większy niż jedna strona, musisz skorzystać z następnego linku, aby uzyskać następną stronę rekordów użycia.

Scenariusz: Partner A przeniosł własność rozliczeń starszej subskrypcji platformy Azure (145P) do partnera B

Jeśli partner przenosi własność rozliczeń starszej subskrypcji platformy Azure do innego partnera, gdy nowy partner wywołuje interfejs API wykorzystania dla przeniesionej subskrypcji, musi używać identyfikatora subskrypcji handlowej (który jest wyświetlany na koncie Centrum partnerskiego), a nie identyfikatora upoważnienia platformy Azure. Identyfikator uprawnień platformy Azure jest wyświetlany dla partnera B tylko wtedy, gdy są Administracja w imieniu (AOBO) w witrynie Azure Portal klienta.

Aby pomyślnie wywołać interfejs API wykorzystania dla przeniesionej subskrypcji, nowy partner musi użyć identyfikatora subskrypcji handlowej.

C#

Aby uzyskać rekordy wykorzystania platformy Azure:

  1. Pobierz identyfikator klienta i identyfikator subskrypcji.

  2. Wywołaj metodę IAzureUcollection.Query, aby zwrócić element ResourceCollection zawierający rekordy użycia.

  3. Uzyskaj moduł wyliczający rekordu wykorzystania platformy Azure, aby przejść przez strony wykorzystania. Ten krok jest wymagany, ponieważ kolekcja zasobów jest stronicowana.

  • Przykład: aplikacja testowa konsoli
  • Projekt: Przykłady zestawu SDK Centrum partnerskiego
  • Klasa: GetAzureSubscriptionUbic.cs
// 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

Zestaw SDK Java Centrum partnerskiego może służyć do zarządzania zasobami Centrum partnerskiego. Jest to projekt typu open source obsługiwany przez społeczność partnerów i nie jest oficjalnie obsługiwany przez firmę Microsoft. Jeśli wystąpi problem, możesz uzyskać pomoc od społeczności lub otworzyć problem w usłudze GitHub .

Aby uzyskać rekordy wykorzystania platformy Azure, najpierw potrzebujesz identyfikatora klienta i identyfikatora subskrypcji. Następnie wywołasz funkcję IAzureUcollection.query , aby zwrócić element ResourceCollection zawierający rekordy użycia. Ponieważ kolekcja zasobów jest stronicowana, należy uzyskać moduł wyliczający rekordu wykorzystania platformy Azure, aby przejść przez strony wykorzystania.

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

Moduł PowerShell Centrum partnerskiego może służyć do zarządzania zasobami Centrum partnerskiego. Jest to projekt typu open source obsługiwany przez społeczność partnerów i nie jest oficjalnie obsługiwany przez firmę Microsoft. Jeśli wystąpi problem, możesz uzyskać pomoc od społeczności lub otworzyć problem w usłudze GitHub .

Aby uzyskać rekordy wykorzystania platformy Azure, najpierw potrzebujesz identyfikatora klienta i identyfikatora subskrypcji. Następnie wywołasz metodę Get-PartnerCustomerSubscriptionUprzedanie. To polecenie zwróci wszystkie rekordy dostępne przez określony okres czasu.

# $customerId
# $subscriptionId

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

Żądanie REST

Składnia żądania

Metoda Identyfikator URI żądania
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}

Parametry identyfikatora URI

Użyj następującej ścieżki i parametrów zapytania, aby uzyskać rekordy wykorzystania.

Nazwisko Type Wymagania opis
identyfikator dzierżawy klienta string Tak Ciąg sformatowany za pomocą identyfikatora GUID, który identyfikuje klienta.
subscription-id string Tak Ciąg sformatowany przez identyfikator GUID, który identyfikuje subskrypcję.
start_time ciąg w formacie przesunięcia daty i godziny UTC Tak Początek zakresu czasu, który reprezentuje, kiedy użycie zostało zgłoszone w systemie rozliczeniowym.
end_time ciąg w formacie przesunięcia daty i godziny UTC Tak Koniec zakresu czasu, który reprezentuje, kiedy użycie zostało zgłoszone w systemie rozliczeniowym.
Ziarnistość string Nie Definiuje stopień szczegółowości agregacji użycia. Dostępne opcje to: daily (wartość domyślna) i hourly.
show_details boolean Nie. Określa, czy uzyskać szczegóły użycia na poziomie wystąpienia. Wartość domyślna to true.
size numer Nie. Określa liczbę agregacji zwracanych przez pojedyncze wywołanie interfejsu API. Wartość domyślna to 1000. Wartość maksymalna to 1000.

Nagłówki żądań

Aby uzyskać więcej informacji, zobacz Nagłówki REST Centrum partnerskiego.

Treść żądania

Brak

Przykład żądania

Poniższe przykładowe żądanie generuje wyniki podobne do tego, co w pliku uzgodnień będzie wyświetlany okres 7/2 – 8/1. Te wyniki mogą nie być dokładnie zgodne (zobacz sekcję Interfejs API wykorzystania platformy Azure, aby uzyskać szczegółowe informacje).

To przykładowe żądanie zwraca dane użycia zgłoszone w systemie rozliczeniowym między 7/2 o 12:00 (UTC) i 8/2 o 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

Odpowiedź REST

Jeśli ta metoda powiedzie się, zwraca kolekcję zasobów rekordu wykorzystania platformy Azure w treści odpowiedzi. Jeśli dane użycia platformy Azure nie są jeszcze gotowe w systemie zależnym, ta metoda zwraca kod stanu HTTP 204 z nagłówkiem Ponów próbę po.

Kody powodzenia i błędów odpowiedzi

Każda odpowiedź zawiera kod stanu HTTP, który wskazuje powodzenie lub niepowodzenie i dodatkowe informacje o debugowaniu. Użyj narzędzia do śledzenia sieci, aby odczytać kod stanu HTTP, typ kodu błędu i dodatkowe parametry.

Przykład odpowiedzi

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"
      }
    }
  ]
}