Utilisation de l’API Billing d’Azure – Part 2 : RateCardApi

Dans la première partie, nous nous sommes intéressé à la première API de billing de Microsoft Azure permettant de connaitre la consommation de sa souscription Azure à l’aide de l’API Usage (https://jeremiedevillard.wordpress.com/?p=1295).

Cette première API nous permet de connaitre la consommation en “unité” de service, nous devons donc rapprocher cette notion d’unité à une valeur monétaire, c’est à cette occasion qu’aujourd’hui nous allons devoir utiliser l’API RateCard.

Cette API se base sur :

  • le pays d’utilisation
  • la langue
  • la devise
  • le type de souscription (le type d’offre)

Ce qui nous donne au niveau de la requête, les informations de filtrage suivant :

string offer = "MS-AZR-0063P";
string currency = "EUR";
string locale = "fr-FR";
string regionInfo = "FR";
// Build up the HttpWebRequest
string requestURL = String.Format("{0}/{1}/{2}/{3}",
ConfigurationManager.AppSettings["ARMBillingServiceURL"],
"subscriptions",
ConfigurationManager.AppSettings["SubscriptionID"],
"providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&$filter=OfferDurableId eq '"+offer+"' and Currency eq '"+currency+"' and Locale eq '"+locale+"' and RegionInfo eq '"+regionInfo+"'");

Le filtre correspondant à offer est du type MS-AZR-{Offer Number} et vous trouverez les offres disponibles à l’adresse suivante : https://azure.microsoft.com/en-us/support/legal/offer-details/.

Mais comment connaitre son offre? L’information est disponible sur le nouveau portail au niveau des informations de votre souscription :

image

 

Regardons un peu les informations disponibles en retour de cette api. Premièrement, nous pouvons avoir(en fonction des offres) les informations sur le montant de notre forfait mensuel :

image

(ici j’ai un crédit mensuel de 130 €)

Ensuite pour chaque service, nous avons un identifiant de ressource permettant de connaitre la valeur d’une unité de service en fonction de son type, sa région (le Datacenter) etc.…

{
"MeterId": "555f9d0b-d8ee-495a-8095-d849adfb9185",
"MeterName": "Heures de calcul",
"MeterCategory": "Machines virtuelles",
"MeterSubCategory": "Machine virtuelle D14 Standard (Windows)",
"Unit": "Heures",
"MeterTags": [],
"MeterRegion": "Europe occidentale",
"MeterRates": {
"0": 1.4917977000000002091384
},
"EffectiveDate": "2015-10-01T00:00:00Z",
"IncludedQuantity": 0.0
},

(Ici, une unité (heure) de calcul pour une VM D14 Windows coute 1.4917977000000002091384 €).

Ensuite (et c’est la que le calcul devient plus compliqué), nous avons des services qui comporte des paliers d’utilisations car le coût n’est pas linéaire. C’est notamment le cas pour les consommations au niveau du stockage blob.

{
"MeterId": "19779bfa-01e0-4e38-9ea2-6a697d78434f",
"MeterName": "E/S standard - Objet blob de blocs à chaud (Go)",
"MeterCategory": "Storage",
"MeterSubCategory": "Géo-redondant",
"Unit": "Go",
"MeterTags": [],
"MeterRegion": "Europe occidentale",
"MeterRates": {
"0": 0.04047840,
"102400": 0.039061656,
"1024000": 0.037644912,
"5120000": 0.036228168
},
"EffectiveDate": "2016-03-01T00:00:00Z",
"IncludedQuantity": 0.0
},

Ici nous sommes sur les E/S pour l’accès au stockage de blob. La partie intéressante correspond à la section MeterRates. Ce que ce tableau nous indique, c’est que le cout d’une unité est de :

  • 0.04047840 € entre 0 et 102400 Go
  • 0.039061656 € pour les unités consommées entre 102400 & 1024000
  • 0.037644912 € pour les unités consommées entre 1024000 et 5120000
  • 0.036228168 € pour tout unités supplémentaires.

On retrouve les valeurs du tableau de pricing du site Azure :

image

 

Exemple, si on consomme 300 TB (approx 300 000 GO), cela nous couteras 102400 * 0.04047840 + 197 600 * 0.039061656.

Si maintenant, nous reprenons notre exemple du billet précédent :

{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Commerce/UsageAggregates/Daily_BRSDT_20160701_0000",
"name": "Daily_BRSDT_20160701_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"usageStartTime": "2016-06-30T00:00:00+00:00",
"usageEndTime": "2016-07-01T00:00:00+00:00",
"meterName": "Standard IO - Table/ Queue (GB)",
"meterCategory": "Storage",
"meterSubCategory": "Locally Redundant",
"unit": "GB",
"meterId": "bd69546d-19b0-4776-865f-8753b800883b",
"infoFields": {
"meteredRegion": "West Europe",
"meteredService": "Storage",
"meteredServiceType": "",
"project": "storeage91284058"
},
"quantity": 0.000010
}
},

 

soit une quantité de 0.000010 unité.

Je dois retrouver la ressource  “meterId”: “bd69546d-19b0-4776-865f-8753b800883b”, c’est a dire :

{
"MeterId": "bd69546d-19b0-4776-865f-8753b800883b",
"MeterName": "E/S standard - Table/file d’attente (Go)",
"MeterCategory": "Storage",
"MeterSubCategory": "Localement redondant",
"Unit": "Go",
"MeterTags": [],
"MeterRegion": "",
"MeterRates": {
"0": 0.059031,
"1024": 0.0548145,
"51200": 0.050598,
"512000": 0.0463815,
"1024000": 0.0379485,
"5120000": 0.0312021
},
"EffectiveDate": "2013-12-01T00:00:00Z",
"IncludedQuantity": 0.0
},

il m’en a donc couté 0.059031*0.000010 = 0,00000059031 € (c’est a dire pas beaucoup…)

Maintenant, il ne reste plus qu’a faire le rapprochement de l’ensemble de mes consommations de services  avec leur coût pour recréer mon fichier de facturation et de suivi de ma souscription.

A voir dans le prochain billet

This entry was posted in Azure, Français, Windows Azure Platform and tagged , , , . Bookmark the permalink.

One Response to Utilisation de l’API Billing d’Azure – Part 2 : RateCardApi

  1. Pingback: Azure Billing Export – Comment recréer votre consommation Azure | Jérémie – an other BizTalker

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s