Udostępnij za pośrednictwem


Otrzymywanie niedrogich zestawów danych na żądanie

Użyj interfejsu API Cost Details, aby uzyskać nieprzetworzone, nieagregowane dane kosztów odpowiadające rachunku za korzystanie z platformy Azure. Interfejs API jest przydatny, gdy organizacja potrzebuje programowego rozwiązania do pobierania danych. Rozważ użycie interfejsu API, jeśli chcesz przeanalizować mniejsze zestawy danych kosztów 2 GB (2 miliony wierszy) lub mniej. Jednak należy użyć opcji Eksporty dla bieżących obciążeń pozyskiwania danych i pobierania większych zestawów danych.

Jeśli chcesz regularnie pobierać duże ilości eksportowanych danych, zobacz Pobieranie zestawów danych z dużymi kosztami cyklicznie z eksportami.

Aby dowiedzieć się więcej na temat danych w szczegółach kosztów (wcześniej określanych jako szczegóły użycia ), zobacz pozyskiwanie danych szczegółów kosztów.

Raport dotyczący szczegółów kosztów jest dostępny tylko dla klientów z umową Enterprise lub umową klienta Microsoft. Jeśli jesteś klientem MSDN, subskrypcji z opłatą za zużycie lub programu Visual Studio, zobacz sprawdź szczegóły kosztów subskrypcji.

Uprawnienia

Aby korzystać z interfejsu API szczegółów kosztów, musisz mieć uprawnienia tylko do odczytu dla obsługiwanych funkcji i zakresów.

Uwaga

Interfejs API Cost Details nie obsługuje grup zarządzania dla klientów z umową EA lub MCA.

Aby uzyskać więcej informacji, zobacz:

Najlepsze praktyki dotyczące interfejsu API szczegółowych danych kosztowych

Firma Microsoft zaleca następujące najlepsze rozwiązania podczas korzystania z interfejsu API szczegółów kosztów.

Harmonogram żądań

Jeśli chcesz uzyskać najnowsze dane dotyczące kosztów, zalecamy wykonywanie zapytań co najwyżej raz dziennie. Raporty są odświeżane co cztery godziny. Jeśli dzwonisz częściej, otrzymujesz identyczne dane. Po pobraniu danych kosztowych dla faktur archiwalnych opłaty nie ulegają zmianie, chyba że wyraźnie otrzymasz powiadomienie. Zalecamy buforowanie danych kosztów w magazynie z możliwością wykonywania zapytań, aby zapobiec powtarzającym się wywołaniom identycznych danych.

Fragmentowanie żądań

Podziel wywołania na małe zakresy dat, aby uzyskać łatwiejsze do zarządzania pliki, które można pobrać z sieci. Na przykład zalecamy fragmentowanie według dnia lub tygodnia, jeśli masz duży plik kosztów platformy Azure od miesiąca do miesiąca. Jeśli masz zakresy z dużą ilością danych kosztów (na przykład konto rozliczeniowe), rozważ wykonanie wielu wywołań do zakresów podrzędnych, aby uzyskać bardziej przystępne do zarządzania pliki, które można pobrać. Aby uzyskać więcej informacji na temat zakresów usługi Cost Management, zobacz Omówienie zakresów i praca z nimi. Po pobraniu danych użyj programu Excel, aby dokładniej analizować dane za pomocą filtrów i tabel przestawnych.

Jeśli zestaw danych przekracza 2 GB (lub około 2 miliony wierszy) miesięcznie, rozważ użycie Eksporty jako bardziej skalowalne rozwiązanie.

Opóźnienia i limity szybkości

Wywołania na żądanie do interfejsu API są ograniczone. Czas potrzebny na wygenerowanie pliku szczegółów kosztów jest bezpośrednio skorelowany z ilością danych w pliku. Aby zrozumieć oczekiwany czas, zanim plik stanie się dostępny do pobrania, możesz użyć nagłówka retry-after w odpowiedzi interfejsu API.

Obsługiwane zakresy czasu zestawu danych

Interfejs API szczegółów kosztów obsługuje maksymalny zakres czasu zestawu danych wynoszący jeden miesiąc na raport. Dane historyczne można pobrać przez maksymalnie 13 miesięcy przed bieżącą datą. Jeśli chcesz wygenerować 13-miesięczny zestaw danych historycznych, zalecamy wykonanie 13 wywołań w comiesięcznych zestawach danych z ostatnich 13 miesięcy. Aby pobrać dane historyczne starsze niż 13 miesięcy, użyj REST API Eksportów.

Przykładowe żądania API szczegóły kosztów

Następujące przykładowe żądania są używane przez klientów firmy Microsoft do obsługi typowych scenariuszy. Dane zwrócone przez żądanie odpowiadają dacie odebrania kosztu przez system rozliczeniowy. Może obejmować koszty z wielu faktur. Jest to asynchroniczny interfejs API. W związku z tym należy wykonać początkowe wywołanie w celu zażądania raportu i odebrania linku sondowania w nagłówku odpowiedzi. Z tego miejsca możesz sprawdzać podany link, aż raport będzie dostępny.

Użyj nagłówka retry-after w odpowiedzi interfejsu API, aby zdefiniować, kiedy sprawdzać interfejs API. Nagłówek zawiera szacowany minimalny czas generowania raportu.

Aby dowiedzieć się więcej na temat umowy interfejsu API, zobacz sekcję Cost Details API.

Koszt rzeczywisty a koszt zamortyzowany

Aby określić, czy chcesz wyświetlić raport kosztów rzeczywistych, czy zamortyzowanych kosztów, zmień wartość używaną dla pola metryki w początkowej treści żądania. Dostępne wartości metryk są ActualCost lub AmortizedCost.

Koszt zamortyzowany dzieli zakupy rezerwacji na codzienne części i rozkłada je na cały okres rezerwacji. Na przykład zamiast zobaczyć zakup w wysokości 365 USD 1 stycznia, codziennie od 1 stycznia do 31 grudnia zobaczysz zakup w wysokości 1,00 USD. Oprócz podstawowej amortyzacji koszty są również ponownie przydzielane i skojarzone z użyciem określonych zasobów wykorzystanych w ramach rezerwacji. Jeśli na przykład opłata dzienna w wysokości 1,00 USD została podzielona między dwie maszyny wirtualne, zobaczysz dwie opłaty po 0,50 USD za każdą. Jeśli część rezerwacji nie jest używana przez ten dzień, zobaczysz jedną opłatę w wysokości 0,50 USD powiązaną z odpowiednią maszyną wirtualną, a drugą opłatą w wysokości 0,50 USD z typem opłaty UnusedReservation. Nieużywane koszty rezerwacji są widoczne tylko podczas wyświetlania kosztu zamortyzowanego.

Ze względu na zmianę sposobu przedstawiania kosztów należy pamiętać, że widoki kosztów rzeczywistych i amortyzowanych kosztów pokazują różne liczby całkowite. Ogólnie rzecz biorąc, całkowity koszt związany z zakupem rezerwacji będzie się zmniejszać z czasem, gdy uwzględnimy koszty zamortyzowane. Koszt wzrasta w miesiącach po dokonaniu zakupu rezerwacji. Amortyzacja jest dostępna tylko w przypadku zakupów rezerwacji i obecnie nie ma zastosowania do zakupów na platformie Azure Marketplace.

Początkowe żądanie utworzenia raportu

POST https://management.azure.com/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2022-05-01

Treść żądania:

Oto przykładowe żądanie zestawu danych ActualCost dla określonego zakresu dat.

{
  "metric": "ActualCost",
  "timePeriod": {
    "start": "2020-03-01",
    "end": "2020-03-15"
  }
}

Dostępne {scope} opcje tworzenia odpowiedniego identyfikatora URI są udokumentowane w Identyfikowanie identyfikatora zasobu dla zakresu.

Poniżej przedstawiono dostępne pola, które można podać w treści żądania raportu.

  • metryka — żądany rodzaj raportu. Może to być koszt rzeczywisty lub amortyzowany koszt. Nie jest to wymagane. Jeśli pole nie zostanie określone, domyślnie zostanie wygenerowany raport dotyczący kosztów rzeczywistych przez API.
  • timePeriod — żądany zakres dat dla danych. Nie jest to wymagane. Tego parametru nie można używać razem z parametrami invoiceId lub billingPeriod. Jeśli parametr timePeriod, invoiceId lub billingPeriod nie jest podany w treści żądania interfejs API zwraca koszt bieżącego miesiąca.
  • invoiceId — żądana faktura dla Twoich danych. Ten parametr jest używany tylko przez klientów z Umową z Klientem Microsoft. Ponadto można go używać tylko w obszarze Profil rozliczeniowy lub Zakres klienta. Tego parametru nie można używać razem z parametrami billingPeriod lub timePeriod. Jeśli parametr timePeriod, invoiceId lub billingPeriod nie jest podany w treści żądania interfejs API zwraca koszt bieżącego miesiąca.
  • billingPeriod — żądany okres rozliczeniowy danych. Ten parametr jest używany tylko przez klientów z umową Enterprise Agreement. Użyj formatu YearMonth. Na przykład 202008. Tego parametru nie można używać razem z parametrami invoiceId lub timePeriod. Jeśli parametr timePeriod, invoiceId lub billingPeriod nie jest podany w treści żądania interfejs API zwraca koszt bieżącego miesiąca.

Odpowiedź interfejsu API :

Response Status: 202 – Accepted : wskazuje, że żądanie zostało zaakceptowane. Użyj nagłówka Location, aby sprawdzić stan.

Nagłówki odpowiedzi:

Nazwa Typ Forma Opis
Lokalizacja Sznurek Adres URL do sprawdzenia wyniku operacji asynchronicznej.
Retry-After Integer Int32 Oczekiwany czas wygenerowania raportu. Poczekaj na ten czas trwania przed ponownym sondowaniem.

Sondowanie i pobieranie raportów

Skieruj żądanie raportu przy użyciu punktu końcowego podanego w nagłówku location odpowiedzi interfejsu API po wysłaniu żądania utworzenia raportu Szczegółów kosztów. Oto przykładowe żądanie sondowania.

Żądanie sondowania raportu:

GET https://management.azure.com/{scope}/providers/Microsoft.CostManagement/costDetailsOperationStatus/{operationId}?api-version=2022-05-01

Response Status 200 – Succeeded: wskazuje, że żądanie zakończyło się pomyślnie.

{
  "id": "subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.CostManagement/operationResults/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
  "name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
  "status": "Completed",
  "manifest": {
    "manifestVersion": "2022-05-01",
    "dataFormat": "Csv",
    "blobCount": 1,
    "byteCount": 160769,
    "compressData": false,
    "requestContext": {
      "requestScope": "subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
      "requestBody": {
        "metric": "ActualCost",
        "timePeriod": {
          "start": "2020-03-01",
          "end": "2020-03-15"
        }
      }
    },
    "blobs": [
      {
        "blobLink": "{downloadLink}",
        "byteCount": 32741
      }
    ]
  },
  "validTill": "2022-05-10T08:08:46.1973252Z"
}

Oto podsumowanie kluczowych pól w odpowiedzi interfejsu API:

  • manifestVersion — „wersja kontraktu manifestu” stosowana w odpowiedzi. Obecnie wersja manifestu pozostaje taka sama dla danej wersji interfejsu API.
  • dataFormat — plik CSV jest obecnie jedynym obsługiwanym formatem pliku udostępnianym przez interfejs API.
  • blobCount — oznacza liczbę indywidualnych blobów danych znajdujących się w zestawie danych raportu. Należy pamiętać, że ten interfejs API może udostępnić partycjonowany zestaw danych zawierający więcej niż jeden plik w odpowiedzi. Zaprojektuj potoki danych, aby móc odpowiednio obsługiwać partycjonowane pliki. Partycjonowanie umożliwia w przyszłości szybsze pobieranie większych zestawów danych.
  • byteCount — łączna liczba bajtów zestawu danych raportu we wszystkich partycjach.
  • compressData — kompresja jest zawsze ustawiona na wartość false dla pierwszej wersji. Jednak interfejs API będzie obsługiwać kompresję w przyszłości.
  • requestContext — początkowa konfiguracja żądana dla raportu.
  • bloby — lista n plików blobów, które razem składają się na pełny raport.
    • blobLink — adres URL pobierania pojedynczej partycji obiektu blob.
    • byteCount — liczba bajtów pojedynczej partycji blob.
  • validTill — data, gdy raport nie jest już dostępny.