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 delle vendite 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 consiste nell'usare il Calcolatore prezzi di Azure o usare il portale di Azure. Questa API offre un'esperienza non autenticata per ottenere tariffe di vendita al dettaglio per tutti i servizi di Azure. Usare l'API per esplorare i prezzi per i servizi di Azure rispetto a aree diverse e a 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 mostrati in valuta USD sono i prezzi al dettaglio di Microsoft. Altri prezzi non USD restituiti dall'API sono utili per la stima delle spese di budget.

Versione di anteprima

È possibile usare la nuova versione dell'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 contatori primari e i contatori non primari.

L'utilizzo di https://prices.azure.com/api/retail/prices 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 versione https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview.

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 con 2021-10-01 e versioni successive dell'API, tra cui 2023-01-01.

Il valore del filtro fa distinzione tra maiuscole e minuscole

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

Per esempio:

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

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

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 ci si impegna a un piano di risparmio, si ottiene un prezzo più economico rispetto al prezzo OnDemand. 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 dell'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 le macchine virtuali dell'istanza riservata:

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'

È possibile aggiungere il codice di valuta all'endpoint API, come illustrato nella chiamata di esempio api. Per un elenco completo delle valute supportate, vedere Valute supportate.

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 delle prenotazioni.

{
            "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 DELL'API fornisce la paginazione. Per ogni richiesta API, vengono restituiti un massimo di 1.000 record. Alla fine della risposta dell'API, ha il collegamento alla pagina successiva. Per esempio:

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

Dettagli delle proprietà DELL'API

Ecco tutti i dettagli della proprietà che fanno parte della risposta dell'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 al dettaglio Microsoft senza sconto
unitPrice 0.176346 Uguale a retailPrice
armRegionName westeurope Area di Azure Resource Manager in cui è disponibile il servizio. Questa versione supporta solo i prezzi nel cloud commerciale.
Location Ue occidentale Data center di Azure in cui viene distribuita la risorsa
effectiveStartDate 2020-08-01T00:00:00Z Campo facoltativo. Indica 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 Macchine virtuali Serie FS Windows Nome prodotto
skuName F16s Spot Nome SKU
serviceName Macchine virtuali Nome del servizio
serviceId DZH313Z7MMC8 UniqueID del servizio
serviceFamily Calcolare 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 dei termini per un piano di risparmio di Azure, associato alle informazioni di savingsPlan.

Filtri API

I filtri sono supportati per i campi seguenti:

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

Aggiungere i filtri all'endpoint API, come illustrato nelle chiamate di esempio dell'API.

Valori serviceFamily supportati

Le informazioni seguenti sono l'elenco dei valori di serviceFamily supportati. Le informazioni sono soggette a modifiche.

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

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

  • Informazioni su altre API di Gestione costi .