Partager via


Vue d’ensemble des prix de vente au détail Azure

Les clients Azure cherchent un moyen programmatique de récupérer les prix de vente au détail pour tous les services Azure. Vous pouvez maintenant utiliser l’API Prix des tarifs de vente au détail pour obtenir les prix de vente au détail pour tous les services Azure. Auparavant, la seule façon dont vous pouviez récupérer les prix des services Azure était d’utiliser la calculatrice de prix Azure ou d’utiliser le portail Azure. Cette API vous offre une expérience non authentifiée pour obtenir des tarifs de vente au détail pour tous les services Azure. Utilisez l’API pour explorer les prix des services Azure sur différentes régions et différentes références SKU. L’API programmatique peut également vous aider à créer vos propres outils pour l’analyse interne et la comparaison des prix entre les références SKU et les régions.

Important

La devise utilisée par Microsoft pour payer tous les services Azure est USD. Les prix affichés en usd sont des prix de vente au détail Microsoft. D’autres prix non USD retournés par l’API sont destinés à votre référence pour vous aider à estimer les dépenses budgétaires.

Préversion

Vous pouvez utiliser la nouvelle version de l’API 2023-01-01-preview à https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview. La préversion est compatible avec les versions antérieures de l’API. L’URL retourne l’ensemble complet de compteurs, y compris les compteurs principaux et les compteurs non primaires.

L’utilisation de https://prices.azure.com/api/retail/prices ou https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview retourne l’ensemble complet de compteurs.

Les tarifs des plans d’épargne sont disponibles uniquement avec la version https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview.

Filtrage du compteur principal

Vous pouvez limiter les réponses pour récupérer uniquement les prix des compteurs principaux avec :

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

Le filtrage de compteur principal est pris en charge avec les versions 2021-10-01 et ultérieures de l’API, notamment 2023-01-01.

La valeur de filtre respecte la casse

Dans les versions précédentes de l’API, la valeur du filtre n’était pas sensible à la casse. Toutefois, dans la version 2023-01-01-preview et ultérieure, la valeur respecte la casse.

Par exemple:

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

Dans les versions antérieures de l’API, Virtual Machines et virtual machines fonctionnaient.

Maintenant, seul Virtual Machines fonctionne.

Prise en charge du plan d’enregistrement Azure

Comme mentionné précédemment, les prix de vente au détail du plan d’épargne Azure sont uniquement pris en charge avec la préversion (https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview). Pour les compteurs éligibles à un plan d’épargne, les résultats ont une section correspondante pour le plan d’épargne. Lorsque vous vous engagez dans un plan d’épargne, vous obtenez un prix moins cher que le prix OnDemand. Pour plus d’informations sur les plans d’épargne Azure, consultez documentation sur les plans d’épargne Azure.

Voici un exemple de réponse d’API avec des informations sur le plan d’épargne :


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

Point de terminaison d’API

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

Exemples d’appels d’API

Voici quelques exemples :

Exemples d’appels filtrés pour les machines virtuelles uniquement :

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

Exemples d’appels filtrés pour les réservations uniquement :

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

Exemples d’appels filtrés pour les machines virtuelles d’instance réservée :

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

Exemples d’appels filtrés pour les ressources de calcul :

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

Vous pouvez ajouter le code monétaire au point de terminaison de l’API, comme indiqué dans l’exemple d’appel d’API. Pour obtenir la liste complète des devises prises en charge, consultez devises prises en charge.

Exemples d’appels filtrés pour le calcul avec devise en euro :

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

Exemples de réponse d’API

Voici un exemple de réponse d’API, sans prix de réservation.

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

Voici un exemple de réponse d’API avec les prix de réservation et le terme dans la réponse.

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

Voici un exemple de réponse avec une devise 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"
}

Pagination de la réponse de l’API

La réponse de l’API fournit une pagination. Pour chaque requête d’API, un maximum de 1 000 enregistrements est retourné. À la fin de la réponse de l’API, il a le lien vers la page suivante. Par exemple:

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

Détails de la propriété API

Voici tous les détails de la propriété qui font partie de la réponse de l’API.

Champ Exemples de valeurs Définition
currencyCode USD Devise dans laquelle les taux sont définis et retourne les prix en USD, sauf indication contraire.
tierMinimumUnits 0 Unités minimales de consommation pour bénéficier du prix
reservationTerm 1 an Durée de réservation : un an ou trois ans
retailPrice 0.176346 Prix de vente au détail Microsoft sans remise
unitPrice 0.176346 Identique à retailPrice
armRegionName westeurope Région Azure Resource Manager où le service est disponible. Cette version prend uniquement en charge les prix sur le cloud commercial.
Location UE Ouest Centre de données Azure où la ressource est déployée
effectiveStartDate 2020-08-01T00:00:00Z Champ facultatif. Affiche la date à laquelle les prix de vente au détail sont effectifs.
meterId 000a794b-bdb0-58be-a0cd-0c3a0f222923 Identificateur unique de la ressource
meterName F16s Spot Nom du compteur
productid DZH318Z0BQPS UniqueID du produit
skuId DZH318Z0BQPS/00TG UniqueID pour la référence SKU
productName Windows de la série FS de machines virtuelles Nom du produit
skuName F16s Spot Nom de la référence SKU
serviceName Machines virtuelles Nom du service
serviceId DZH313Z7MMC8 ID unique du service
serviceFamily Calculer Famille de services de la référence SKU
unitOfMeasure 1 heure Comment l’utilisation est mesurée pour le service
Type DevTestConsumption Type de consommation du compteur. D’autres types sont Reservation et Consumption.
isPrimaryMeterRegion Vrai Indique si la région du compteur est définie en tant que compteur principal ou non. Les compteurs principaux sont utilisés pour les frais et la facturation.
armSkuName Standard_F16s Nom de référence SKU inscrit dans Azure
term 3 ans Durée d’un plan d’épargne Azure associé à des informations savingsPlan.

Filtres d’API

Les filtres sont pris en charge pour les champs suivants :

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

Vous ajoutez les filtres au point de terminaison de l’API, comme indiqué dans les exemples d’appels d’API.

Valeurs serviceFamily prises en charge

Les informations suivantes sont la liste des valeurs de serviceFamily prises en charge. Les informations sont susceptibles de changer.

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

Exemple programmatique

L’application Python simple suivante utilise l’API pour interroger la tarification au détail d’une machine virtuelle de la référence SKU NP20 standard dans la région USA Centre Sud. L’application filtre la sortie de la requête et présente les informations souhaitées dans un format de tableau.

#!/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’exécution de ce code produit la sortie suivante :

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

Étapes suivantes