Udostępnij za pośrednictwem


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 stawek 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 witryny 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żny

Waluta używana przez firmę Microsoft do wyceny wszystkich usług platformy Azure to USD. Ceny pokazane w walucie USD to ceny detaliczne firmy Microsoft. Inne ceny inne niż USD zwrócone przez interfejs API są przeznaczone dla Ciebie, 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 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 wersji https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview.

Podstawowe filtrowanie mierników

Odpowiedzi na pobieranie tylko podstawowych cen mierników można ograniczyć za pomocą:

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

Podstawowe filtrowanie mierników jest obsługiwane w przypadku 2021-10-01 i nowszych wersji interfejsu API, w tym 2023-01-01.

W wartości filtru jest uwzględniana wielkość liter

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

Na przykład:

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

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

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 niższą cenę niż cena OnDemand. Aby uzyskać więcej informacji na temat planów oszczędności 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'

Kod waluty można dołączyć do punktu końcowego interfejsu API, jak pokazano w przykładowym wywołaniu interfejsu API. Aby uzyskać pełną listę obsługiwanych walut, zobacz Obsługiwane waluty.

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 zwracanych jest maksymalnie 1000 rekordów. Na końcu odpowiedzi interfejsu API ma 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 będące 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 detaliczne firmy Microsoft bez rabatu
unitPrice 0.176346 Tak samo jak retailPrice
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ę wejścia w życie cen detalicznych.
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 Maszyny wirtualne z serii FS — Windows Nazwa produktu
skuName Punkt F16s Nazwa jednostki SKU
serviceName Maszyny wirtualne Nazwa usługi
serviceId DZH313Z7MMC8 UniqueID usługi
serviceFamily Liczyć Rodzina usług jednostki SKU
unitOfMeasure 1 godzina Jak jest mierzone użycie usługi
Type DevTestConsumption Typ zużycia miernika. Inne typy to Reservation i Consumption.
isPrimaryMeterRegion Prawdziwy Wskazuje, czy region miernika jest ustawiony jako miernik podstawowy, czy nie. Podstawowe mierniki są używane do naliczania opłat i rozliczeń.
armSkuName Standard_F16s Nazwa jednostki SKU zarejestrowana na platformie Azure
term 3 lata Długość terminu planu oszczędności platformy Azure skojarzonego z informacjami o savingsPlan.

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 wartości serviceFamily

Poniższe informacje to lista obsługiwanych wartości serviceFamily. Informacje mogą ulec zmianie.

Analytics
Azure Arc
Azure Communication Services
Azure Security
Azure Stack
Compute
Containers
Data
Databases
Developer Tools
Dynamics
Gaming
Integration
Internet of Things
Management and Governance
Microsoft Syntex
Mixed Reality
Networking
Other
Power Platform
Quantum Computing
Security
Storage
Telecommunications
Web
Windows Virtual Desktop

Przykład programowy

Poniższa prosta aplikacja języka 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

  • Dowiedz się więcej o innych interfejsach API usługi Cost Management .