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

Os clientes do Azure têm procurado uma forma programática de obter preços de retalho para todos os serviços do Azure. Agora, pode utilizar a API preços de revenda para obter preços de venda a 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 o 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 valorizar 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 de pré-visualização 2023-01-01 em https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview. A versão de pré-visualização é retrocompatível com versões anteriores da API. 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=2023-01-01-preview devolver o conjunto completo de medidores.

As tarifas dos planos de poupança só estão disponíveis com a https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview versão.

Filtragem do medidor primário

Pode limitar as respostas para obter apenas os preços do medidor primário com:

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

A filtragem do medidor primário é suportada por 2021-10-01 versões posteriores da API, incluindo 2023-01-01.

O valor do filtro é sensível às maiúsculas e minúsculas

Nas versões anteriores da API, o valor do filtro não era sensível às maiúsculas e minúsculas. No entanto, na 2023-01-01-preview versão e posterior, o valor é sensível às maiúsculas e minúsculas.

Por exemplo:

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

Em versões anteriores da API e Virtual Machinesvirtual machines funcionou.

Agora, só Virtual Machines funciona.

Suporte do plano de poupança do Azure

Como mencionado anteriormente, os preços de revenda do plano de poupança do Azure só são suportados com a versão de pré-visualização (https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview). Para os medidores elegíveis para um plano de poupança, os resultados têm uma secção correspondente para o plano de poupança. Quando se compromete com um plano de poupança, obtém um preço mais barato do que o OnDemand preço. Para obter mais informações sobre os planos de poupança do Azure, veja Documentação dos planos de poupança do Azure.

Eis um exemplo de resposta da API com informações do plano de poupança:


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

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 de 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 de 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, são devolvidos um máximo de 1000 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?$filter=serviceName%20eq%20%27Virtual%20Machines%27&$skip=1000

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 os 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 O Azure Resource Manager região 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 venda a 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/00 TG 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 de medidor. Outros tipos são Reservation e Consumption.
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
term 3 Anos Duração do prazo para um plano de poupança do Azure, associado às savingsPlan informações.

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 ganhou
NOK Coroa norueguesa
NZD Dólar da Nova Zelândia
RUB Rublo russo
SEK Coroa sueca
TWD Dólar de Taiwan

Exemplo Programático

A seguinte aplicação python simples utiliza 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