Panoramica dei prezzi al dettaglio di Azure

I clienti di Azure hanno cercato un modo programmatico per recuperare i prezzi al dettaglio per tutti i servizi di Azure. È ora possibile usare l'API Prezzi al dettaglio per ottenere i prezzi al dettaglio per tutti i servizi di Azure. In precedenza, l'unico modo per recuperare i prezzi per i servizi di Azure consisteva nell'usare il calcolatore dei prezzi di Azure o il portale di Azure. L'API offre un'esperienza non autenticata per ottenere i prezzi al dettaglio per tutti i servizi di Azure. Usare l'API per esaminare i prezzi per i servizi di Azure in aree e SKU diversi. L'API programmatica consente anche di creare strumenti personalizzati per l'analisi interna e il confronto dei prezzi tra SKU e aree.

Importante

La valuta usata da Microsoft per il prezzo di tutti i servizi di Azure è USD. I prezzi visualizzati in valuta USD sono i prezzi al dettaglio microsoft. Altri prezzi non USD restituiti dall'API sono per il riferimento per aiutare a stimare le spese di budget.

Versione di anteprima

È possibile usare la nuova versione api 2023-01-01-preview in https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview. La versione di anteprima è compatibile con le versioni precedenti dell'API. L'URL restituisce il set completo di metri, inclusi i metri primari e i metri nonprimari.

https://prices.azure.com/api/retail/prices Usando o https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview restituisce il set completo di metri.

Le tariffe per i piani di risparmio sono disponibili solo con la https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview versione.

Filtro del contatore primario

È possibile limitare le risposte per recuperare solo i prezzi dei contatori primari con:

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

Il filtro del contatore primario è supportato da 2021-10-01 e versioni api successive, tra cui 2023-01-01.

Il valore del filtro è distinzione tra maiuscole e minuscole

Nelle versioni precedenti dell'API, il valore del filtro non era distinzione tra maiuscole e minuscole. Tuttavia, nella 2023-01-01-preview versione e versioni successive, il valore è distinzione tra maiuscole e minuscole.

Ad esempio:

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

Nelle versioni Virtual Machines precedenti dell'API e virtual machines ha funzionato.

Ora, funziona solo Virtual Machines .

Supporto del piano di salvataggio di Azure

Come accennato in precedenza, i prezzi al dettaglio del piano di risparmio di Azure sono supportati solo con la versione di anteprima (https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview). Per i contatori idonei per un piano di risparmio, i risultati hanno una sezione corrispondente per il piano di risparmio. Quando si esegue il commit di un piano di risparmio, si ottiene un prezzo più economico rispetto al OnDemand prezzo. Per altre informazioni sui piani di risparmio di Azure, vedere documentazione sui piani di risparmio di Azure.

Ecco una risposta API di esempio con informazioni sul piano di risparmio:


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

Endpoint API

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

Chiamate di esempio api

Ecco alcuni esempi:

Chiamate di esempio filtrate solo per le macchine virtuali:

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

Chiamate di esempio filtrate solo per le prenotazioni:

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

Chiamate di esempio filtrate per macchine virtuali di istanza riservate:

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

Chiamate di esempio filtrate per le risorse di calcolo:

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

Chiamate di esempio filtrate per il calcolo con valuta in euro:

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

Esempi di risposta api

Ecco una risposta API di esempio, senza prezzi di prenotazione.

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

Ecco una risposta API di esempio con i prezzi delle prenotazioni e il termine nella risposta.

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

Ecco una risposta di esempio con una valuta non 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"
}

Paginazione della risposta API

La risposta API fornisce la paginazione. Per ogni richiesta API, vengono restituiti un massimo di 1.000 record. Alla fine della risposta api, ha il collegamento alla pagina successiva. Ad esempio:

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

Dettagli delle proprietà API

Ecco tutti i dettagli della proprietà che fanno parte della risposta api.

Campo Valori di esempio Definizione
currencyCode USD Valuta in cui vengono definiti i tassi e restituisce i prezzi in USD a meno che non sia specificato.
tierMinimumUnits 0 Unità minime di consumo per usufruire del prezzo
reservationTerm 1 anno Periodo di prenotazione : un anno o tre anni
retailPrice 0.176346 Prezzi senza sconto
unitPrice 0.176346
armRegionName westeurope Area Resource Manager di Azure in cui è disponibile il servizio. Questa versione supporta solo i prezzi nel cloud commerciale.
Location Europa occidentale Data center di Azure in cui viene distribuita la risorsa
effectiveStartDate 2020-08-01T00:00:00Z Campo facoltativo. Mostra la data in cui i prezzi al dettaglio sono effettivi.
meterId 000a794b-bdb0-58be-a0cd-0c3a0f222923 Identificatore univoco della risorsa
meterName F16s Spot Nome del contatore
productid DZH318Z0BQPS UniqueID del prodotto
skuId DZH318Z0BQPS/00TG UniqueID per lo SKU
productName Windows Macchine virtuali serie FS Nome prodotto
skuName F16s Spot Nome SKU
serviceName Macchine virtuali Nome del servizio
serviceId DZH313Z7MMC8 UniqueID del servizio
serviceFamily Calcolo Famiglia di servizi dello SKU
unitOfMeasure 1 ora Come viene misurato l'utilizzo per il servizio
Type DevTestConsumption Tipo di consumo del contatore. Altri tipi sono Reservation e Consumption.
isPrimaryMeterRegion Vero Indica se l'area del contatore è impostata come contatore primario o meno. I contatori primari vengono usati per gli addebiti e la fatturazione.
armSkuName Standard_F16s Nome SKU registrato in Azure
term 3 anni Lunghezza del termine per un piano di risparmio di Azure, associato savingsPlan alle informazioni.

Filtri API

I filtri sono supportati per i campi seguenti:

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

I filtri vengono aggiunti all'endpoint API, come illustrato nelle chiamate di esempio api.

Valute supportate

Aggiungere il codice di valuta all'endpoint API, come illustrato nella chiamata di esempio api.

Codice valuta Dettaglio
USD Dollaro USA
AUD Dollaro australiano
BRL Brasiliano reale
CAD Dollaro canadese
CHF Franco svizzero
CNY Chinese yen
DKK Corona danese
EUR Euro
GBP Sterlina
INR Rupia indiana
JPY Yen giapponese
KRW Il coreano ha vinto
NOK Corona norvegese
NZD Dollaro nuova Zelanda
RUB Rublo russo
SEK Corona svedese
TWD Dollaro taiwanese

Esempio programmatico

La semplice applicazione Python seguente usa l'API per eseguire query sui prezzi spot per la vendita al dettaglio di una macchina virtuale dello SKU NP20 standard nell'area Stati Uniti centro-meridionali. L'applicazione filtra l'output della query e presenta le informazioni desiderate in un formato di tabella.

#!/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()

L'esecuzione di questo codice produce l'output seguente:

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

Passaggi successivi