Omówienie cen detalicznych platformy Azure

Klienci platformy Azure szukają programowego sposobu pobierania cen detalicznych dla wszystkich usług platformy Azure. Teraz możesz użyć interfejsu API cen detalicznych, aby uzyskać ceny detaliczne dla wszystkich usług platformy Azure. Wcześniej jedynym sposobem pobierania cen usług platformy Azure było użycie kalkulatora cen platformy Azure lub użycie Azure Portal. Ten interfejs API zapewnia nieuwierzytelnione środowisko uzyskiwania stawek detalicznych dla wszystkich usług platformy Azure. Użyj interfejsu API, aby zapoznać się z cenami usług platformy Azure w różnych regionach i różnych jednostkach SKU. Programowy interfejs API może również pomóc w tworzeniu własnych narzędzi do wewnętrznej analizy i porównywania cen w jednostkach SKU i regionach.

Ważne

Waluta używana przez firmę Microsoft do wyceny wszystkich usług platformy Azure to USD. Ceny wyświetlane w walucie USD to ceny detaliczne firmy Microsoft. Inne ceny inne niż USD zwrócone przez interfejs API dotyczą Twoich odwołań, aby ułatwić oszacowanie wydatków budżetowych.

Wersja zapoznawcza

Możesz użyć nowej wersji interfejsu API 2023-01-01-preview pod adresem https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview. Wersja zapoznawcza jest zgodna z poprzednimi wersjami interfejsu API. Adres URL zwraca pełny zestaw mierników, w tym mierniki podstawowe i mierniki nieprimary.

Użycie metody https://prices.azure.com/api/retail/prices lub https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview zwraca pełny zestaw mierników.

Stawki planów oszczędnościowych są dostępne tylko w https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview wersji.

Filtrowanie miernika podstawowego

Możesz ograniczyć odpowiedzi, aby pobrać tylko podstawowe ceny mierników za pomocą:

https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview&meterRegion='primary'

Podstawowe filtrowanie mierników jest obsługiwane przez 2021-10-01 nowsze wersje interfejsu API, w tym 2023-01-01.

Uwzględniana jest wielkość liter filtru

W poprzednich wersjach interfejsu API wartość filtru nie uwzględniała wielkości liter. Jednak w wersji i nowszej 2023-01-01-preview jest uwzględniana wielkość liter.

Na przykład:

https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' Działa.

We wcześniejszych wersjach interfejsu Virtual Machines API i virtual machines działało.

Teraz działa tylko Virtual Machines .

Pomoc techniczna dotycząca zapisywania planu platformy Azure

Jak wspomniano wcześniej, ceny detaliczne planu oszczędności platformy Azure są obsługiwane tylko w wersji zapoznawczej (https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview). W przypadku mierników kwalifikujących się do planu oszczędnościowego wyniki mają odpowiednią sekcję dla planu oszczędnościowego. Gdy zobowiązujesz się do planu oszczędnościowego, uzyskasz tańszą cenę niż OnDemand cena. Aby uzyskać więcej informacji na temat planów oszczędnościowych platformy Azure, zobacz dokumentację planów oszczędnościowych platformy Azure.

Oto przykładowa odpowiedź interfejsu API z informacjami o planie oszczędności:


        {
            "currencyCode": "USD",
            "tierMinimumUnits": 0.0,
            "retailPrice": 2.305,
            "unitPrice": 2.305,
            "armRegionName": "southindia",
            "location": "IN South",
            "effectiveStartDate": "2019-05-14T00:00:00Z",
            "meterId": "0084b086-37bf-4bee-b27f-6eb0f9ee4954",
            "meterName": "M8ms",
            "productId": "DZH318Z0BQ4W",
            "skuId": "DZH318Z0BQ4W/00BQ",
            "availabilityId": null,
            "productName": "Virtual Machines MS Series",
            "skuName": "M8ms",
            "serviceName": "Virtual Machines",
            "serviceId": "DZH313Z7MMC8",
            "serviceFamily": "Compute",
            "unitOfMeasure": "1 Hour",
            "type": "Consumption",
            "isPrimaryMeterRegion": true,
            "armSkuName": "Standard_M8ms",
            "savingsPlan": [
                {
                    "unitPrice": 0.8065195,
                    "retailPrice": 0.8065195,
                    "term": "3 Years"
                },
                {
                    "unitPrice": 1.5902195,
                    "retailPrice": 1.5902195,
                    "term": "1 Year"
                }
            ]
        },

Punkt końcowy interfejsu API

https://prices.azure.com/api/retail/prices

Przykładowe wywołania interfejsu API

Oto kilka przykładów:

Przykładowe wywołania filtrowane tylko dla maszyn wirtualnych:

https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines'

Przykładowe wywołania filtrowane tylko dla rezerwacji:

https://prices.azure.com/api/retail/prices?$filter=priceType eq 'Reservation'

Przykładowe wywołania filtrowane dla maszyn wirtualnych wystąpień zarezerwowanych:

https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' and priceType eq 'Reservation'

Przykładowe wywołania filtrowane dla zasobów obliczeniowych:

https://prices.azure.com/api/retail/prices?$filter=serviceFamily eq 'Compute'

Przykładowe wywołania filtrowane pod kątem obliczeń z walutą w euro:

https://prices.azure.com/api/retail/prices?currencyCode='EUR'&$filter=serviceFamily eq 'Compute'

Przykłady odpowiedzi interfejsu API

Oto przykładowa odpowiedź interfejsu API bez cen rezerwacji.

{
            "currencyCode": "USD",
            "tierMinimumUnits": 0.0,
            "retailPrice": 0.176346,
            "unitPrice": 0.176346,
            "armRegionName": "westeurope",
            "location": "EU West",
            "effectiveStartDate": "2020-08-01T00:00:00Z",
            "meterId": "000a794b-bdb0-58be-a0cd-0c3a0f222923",
            "meterName": "F16s Spot",
            "productId": "DZH318Z0BQPS",
            "skuId": "DZH318Z0BQPS/00TG",
            "productName": "Virtual Machines FS Series Windows",
            "skuName": "F16s Spot",
            "serviceName": "Virtual Machines",
            "serviceId": "DZH313Z7MMC8",
            "serviceFamily": "Compute",
            "unitOfMeasure": "1 Hour",
            "type": "DevTestConsumption",
            "isPrimaryMeterRegion": true,
            "armSkuName": "Standard_F16s"
        }

Oto przykładowa odpowiedź interfejsu API z cenami rezerwacji i terminem w odpowiedzi.

{
            "currencyCode": "USD",
            "tierMinimumUnits": 0.0,
            "reservationTerm": "1 Year",
            "retailPrice": 25007.0,
            "unitPrice": 25007.0,
            "armRegionName": "southcentralus",
            "location": "US South Central",
            "effectiveStartDate": "2020-08-01T00:00:00Z",
            "meterId": "0016083a-928f-56fd-8eeb-39287dcf676d",
            "meterName": "E64 v4",
            "productId": "DZH318Z0D1L7",
            "skuId": "DZH318Z0D1L7/018J",
            "productName": "Virtual Machines Ev4 Series",
            "skuName": "E64 v4",
            "serviceName": "Virtual Machines",
            "serviceId": "DZH313Z7MMC8",
            "serviceFamily": "Compute",
            "unitOfMeasure": "1 Hour",
            "type": "Reservation",
            "isPrimaryMeterRegion": true,
            "armSkuName": "Standard_E64_v4"
        }

Oto przykładowa odpowiedź z walutą inną niż USD.

{
  "currencyCode": "EUR",
  "tierMinimumUnits": 0,
  "retailPrice": 0.6176,
  "unitPrice": 0.6176,
  "armRegionName": "westeurope",
  "location": "EU West",
  "effectiveStartDate": "2021-04-01T00:00:00Z",
  "meterId": "000a794b-bdb0-58be-a0cd-0c3a0f222923",
  "meterName": "F16s Spot",
  "productId": "DZH318Z0BQPS",
  "skuId": "DZH318Z0BQPS/00TG",
  "productName": "Virtual Machines FS Series Windows",
  "skuName": "F16s Spot",
  "serviceName": "Virtual Machines",
  "serviceId": "DZH313Z7MMC8",
  "serviceFamily": "Compute",
  "unitOfMeasure": "1 Hour",
  "type": "Consumption",
  "isPrimaryMeterRegion": true,
  "armSkuName": "Standard_F16s"
}

Stronicowanie odpowiedzi interfejsu API

Odpowiedź interfejsu API zapewnia stronicowanie. Dla każdego żądania interfejsu API zwraca się maksymalnie 1000 rekordów. Na końcu odpowiedzi interfejsu API zawiera link do następnej strony. Na przykład:

"NextPageLink": https://prices.azure.com:443/api/retail/prices?$filter=serviceName%20eq%20%27Virtual%20Machines%27&$skip=1000

Szczegóły właściwości interfejsu API

Oto wszystkie szczegóły właściwości, które są częścią odpowiedzi interfejsu API.

Pole Przykładowe wartości Definicja
currencyCode USD Waluta, w której są zdefiniowane kursy i zwraca ceny w USD, chyba że określono.
tierMinimumUnits 0 Minimalna liczba jednostek zużycia w celu skorzystania z ceny
reservationTerm 1 rok Okres rezerwacji — rok lub trzy lata
retailPrice 0.176346 Ceny bez rabatu
unitPrice 0.176346
armRegionName westeurope Region usługi Azure Resource Manager, w którym jest dostępna usługa. Ta wersja obsługuje tylko ceny w chmurze komercyjnej.
Location Europa Zachodnia Centrum danych platformy Azure, w którym wdrożono zasób
effectiveStartDate 2020-08-01T00:00:00Z Pole opcjonalne. Pokazuje datę, kiedy ceny detaliczne są skuteczne.
meterId 000a794b-bdb0-58be-a0cd-0c3a0f222923 Unikatowy identyfikator zasobu
meterName Punkt F16s Nazwa miernika
productid DZH318Z0BQPS UniqueID produktu
skuId DZH318Z0BQPS/00TG UniqueID dla jednostki SKU
productName Virtual Machines FS Series Windows Nazwa produktu
skuName Punkt F16s Nazwa jednostki SKU
serviceName Virtual Machines Nazwa usługi
serviceId DZH313Z7MMC8 UniqueID usługi
serviceFamily Compute Rodzina usług jednostki SKU
unitOfMeasure 1 godzina Jak użycie jest mierzone dla usługi
Type DevTestConsumption Typ zużycia miernika. Inne typy to Reservation i Consumption.
isPrimaryMeterRegion Prawda Wskazuje, czy region miernika jest ustawiony jako miernik podstawowy, czy nie. Podstawowe mierniki są używane do naliczania opłat i rozliczeń.
armSkuName Standardowa_F16s Nazwa jednostki SKU zarejestrowana na platformie Azure
term 3 lata Czas trwania planu oszczędności platformy Azure skojarzony z savingsPlan informacjami.

Filtry interfejsu API

Filtry są obsługiwane w następujących polach:

  • armRegionName
  • Location
  • meterId
  • meterName
  • productid
  • skuId
  • productName
  • skuName
  • serviceName
  • serviceId
  • serviceFamily
  • priceType
  • armSkuName

Filtry są dołączane do punktu końcowego interfejsu API, jak pokazano w przykładowych wywołaniach interfejsu API.

Obsługiwane waluty

Kod waluty jest dołączany do punktu końcowego interfejsu API, jak pokazano w przykładowym wywołaniu interfejsu API.

Kod waluty Szczegóły
USD Dolar amerykański
AUD Dolar australijski
BRL Real brazylijski
CAD Dolar kanadyjski
CHF Szwajcarski
CNY Juan chiński
DKK Duńska
EUR Euro
GBP Funt brytyjski
INR Rupia indyjska
JPY Jeny japońskie
KRW Wygrana koreańska
NOK Norweska
NZD Dolar nowozelandzki
RUB Rubel
SEK Szwedzka
TWD Dolar tajwański

Przykład programowy

Poniższa prosta aplikacja w języku Python używa interfejsu API do wykonywania zapytań dotyczących cen detalicznych typu spot maszyny wirtualnej standardowej jednostki SKU NP20 w regionie Południowo-środkowe stany USA. Aplikacja filtruje dane wyjściowe zapytania i przedstawia żądane informacje w formacie tabeli.

#!/usr/bin/env python3
import requests
import json
from tabulate import tabulate 


def build_pricing_table(json_data, table_data):
    for item in json_data['Items']:
        meter = item['meterName']
        table_data.append([item['armSkuName'], item['retailPrice'], item['unitOfMeasure'], item['armRegionName'], meter, item['productName']])
        
def main():
    table_data = []
    table_data.append(['SKU', 'Retail Price', 'Unit of Measure', 'Region', 'Meter', 'Product Name'])
    
    api_url = "https://prices.azure.com/api/retail/prices?api-version=2021-10-01-preview"
    query = "armRegionName eq 'southcentralus' and armSkuName eq 'Standard_NP20s' and priceType eq 'Consumption' and contains(meterName, 'Spot')"
    response = requests.get(api_url, params={'$filter': query})
    json_data = json.loads(response.text)
    
    build_pricing_table(json_data, table_data)
    nextPage = json_data['NextPageLink']
    
    while(nextPage):
        response = requests.get(nextPage)
        json_data = json.loads(response.text)
        nextPage = json_data['NextPageLink']
        build_pricing_table(json_data, table_data)

    print(tabulate(table_data, headers='firstrow', tablefmt='psql'))
    
if __name__ == "__main__":
    main()

Uruchomienie tego kodu powoduje wygenerowanie następujących danych wyjściowych:

+----------------+----------------+-------------------+----------------+------------+------------------------------------+
| SKU            |   Retail Price | Unit of Measure   | Region         | Meter      | Product Name                       |
|----------------+----------------+-------------------+----------------+------------+------------------------------------|
| Standard_NP20s |       0.828503 | 1 Hour            | southcentralus | NP20s Spot | Virtual Machines NP Series Windows |
| Standard_NP20s |       0.448207 | 1 Hour            | southcentralus | NP20s Spot | Virtual Machines NP Series         |
+----------------+----------------+-------------------+----------------+------------+------------------------------------+

Następne kroki