Descrição geral dos Preços de Retalho do Azure

Os clientes do Azure têm procurado uma forma programática de obter preços de revenda para todos os serviços do Azure. Agora, pode utilizar a API Preços de Revenda para obter preços de retalho para todos os serviços do Azure. Anteriormente, a única forma de obter os preços dos serviços do Azure era utilizar a Calculadora de Preços do Azure ou utilizar a portal do Azure. Esta API dá-lhe uma experiência não autenticada para obter taxas de revenda para todos os serviços do Azure. Utilize a API para explorar os preços dos serviços do Azure em diferentes regiões e SKUs diferentes. A API programática também pode ajudá-lo a criar as suas próprias ferramentas para análise interna e comparação de preços entre SKUs e regiões.

Importante

A moeda que a Microsoft utiliza para colocar o preço de todos os serviços do Azure é USD. Os preços apresentados na moeda USD são os preços de retalho da Microsoft. Outros preços não USD devolvidos pela API destinam-se à sua referência para o ajudar a estimar as despesas orçamentais.

Versão de pré-visualização

Pode utilizar a nova versão da API 2021-10-01-preview em https://prices.azure.com/api/retail/prices?api-version=2021-10-01-preview. A versão de pré-visualização é retrocompatível com a versão anterior. O URL devolve o conjunto completo de medidores, incluindo medidores primários e medidores não primários.

Utilizar ou https://prices.azure.com/api/retail/priceshttps://prices.azure.com/api/retail/prices?api-version=2021-10-01-preview devolver o conjunto completo de medidores.

Pode limitar as respostas para obter apenas os preços dos medidores primários com:

https://prices.azure.com/api/retail/prices?api-version=2021-10-01-preview&meterRegion=’primary’

Ponto final de API

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

Chamadas de exemplo de API

Eis alguns exemplos:

Chamadas de exemplo filtradas apenas para máquinas virtuais

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

Chamadas de exemplo filtradas apenas para reservas

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

Chamadas de exemplo filtradas para máquinas virtuais de instâncias reservadas

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

Chamadas de exemplo filtradas para recursos de computação

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

Chamadas de exemplo filtradas para computação com moeda em euro

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

Exemplos de resposta da API

Eis uma resposta da API de exemplo, sem preços de reserva.

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

Eis uma resposta da API de exemplo com preços de reserva e termo na resposta.

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

Eis uma resposta de exemplo com uma moeda não 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"
}

Paginação de resposta da API

A resposta da API fornece paginação. Para cada pedido de API, é devolvido um máximo de 100 registos. No final da resposta da API, tem a ligação para a página seguinte. Por exemplo:

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

Detalhes da propriedade da API

Eis todos os detalhes da propriedade que fazem parte da resposta da API.

Campo Valores de Exemplo Definição
currencyCode USD A moeda em que as taxas são definidas e devolve preços em USD, a menos que seja especificado.
tierMinimumUnits 0 Unidades mínimas de consumo para aproveitar o preço
reservationTerm 1 ano Período de reserva – um ano ou três anos
retailPrice 0.176346 Preços sem desconto
unitPrice 0.176346
armRegionName westeurope Região do ARM onde o serviço está disponível. Esta versão só suporta preços na Cloud Comercial.
Location EU Oeste Datacenter do Azure onde o recurso é implementado
effectiveStartDate 08-2020-01T00:00:00Z Campo opcional. Mostra a data em que os preços de retalho são eficazes.
meterId 000a794b-bdb0-58be-a0cd-0c3a0f222923 Identificador exclusivo do recurso
meterName F16s Spot Nome do medidor
productid DZH318Z0BQPS UniqueID do produto
skuId DZH318Z0BQPS/00TG UniqueID para o SKU
productName Máquinas Virtuais FS Series Windows Nome do produto
skuName F16s Spot Nome do SKU
serviceName Máquinas Virtuais Nome do serviço
serviceId DZH313Z7MMC8 UniqueID do serviço
serviceFamily Computação Família de serviços do SKU
unitOfMeasure 1 Hora Como a utilização é medida para o serviço
Type DevTestConsumption Tipo de consumo do medidor. Outros tipos são Reserva, Consumo.
isPrimaryMeterRegion Verdadeiro Indica se a região do medidor está definida como um medidor primário ou não. Os medidores primários são utilizados para custos e faturação.
armSkuName Standard_F16s Nome do SKU registado no Azure

Filtros de API

Os filtros são suportados para os seguintes campos:

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

Pode acrescentar os filtros ao ponto final da API, conforme mostrado nas chamadas de exemplo da API.

Moedas suportadas

Acrescente o código de moeda ao ponto final da API, conforme mostrado na chamada de exemplo da API.

Código de moeda Detalhes
USD Dólar norte-americano
AUD Dólar australiano
BRL Real brasileiro
CAD Dólar canadiano
CHF Franco suíço
CNY Yuan chinês
DKK Coroa dinamarquesa
EUR Euro
GBP Libra britânica
INR Rupia indiana
JPY Iene japonês
KRW Coreano venceu
NOK Coroa norueguesa
NZD Dólar da Nova Zelândia
RUB Rublo russo
SEK Coroa sueca
TWD Dólar de Taiwan

Exemplo Programático

Segue-se uma aplicação python simples que emprega a API para consultar os preços spot de revenda de uma máquina virtual do SKU NP20 padrão na região E.U.A. Centro-Sul. A aplicação filtra a saída da consulta e apresenta as informações pretendidas num formato de tabela.

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

A execução deste código produz o seguinte resultado:

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

Passos seguintes