Visão geral dos Preços de Varejo do Azure

Os clientes do Azure têm procurado uma maneira programática de recuperar preços de varejo para todos os serviços do Azure. Agora você pode usar a API de Preços de Taxas de Varejo para obter preços de varejo para todos os serviços do Azure. Anteriormente, a única maneira de recuperar preços para serviços do Azure era usar a Calculadora de Preços do Azure ou usar o portal do Azure. Esta API dá-lhe uma experiência não autenticada para obter taxas de retalho para todos os serviços do Azure. Use a API para explorar preços de serviços do Azure em diferentes regiões e diferentes SKUs. A API programática também pode ajudá-lo a criar 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 usa para precificar todos os serviços do Azure é USD. Os preços apresentados na moeda USD são preços de retalho da Microsoft. Outros preços que não sejam em USD devolvidos pela API são para sua referência para ajudá-lo a estimar as despesas do orçamento.

Versão de pré-visualização

Você pode usar a nova versão da API 2023-01-01-preview em https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview. A versão de visualização é compatível com versões anteriores da API. A URL retorna o conjunto completo de medidores, incluindo medidores primários e não primários.

Usando https://prices.azure.com/api/retail/prices ou https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview retorna o conjunto completo de medidores.

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

Filtragem primária do contador

Você pode limitar as respostas para recuperar apenas os preços dos medidores primários com:

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

A filtragem de medidor primário é suportada com versões de API 2021-10-01 e posteriores, incluindo 2023-01-01.

O valor do filtro diferencia maiúsculas de minúsculas

Nas versões anteriores da API, o valor do filtro não diferenciava maiúsculas de minúsculas. No entanto, na versão 2023-01-01-preview e posterior, o valor diferencia maiúsculas de minúsculas.

Por exemplo:

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

Em versões anteriores da API, Virtual Machines e virtual machines funcionavam.

Agora, só Virtual Machines funciona.

Suporte ao plano de poupança do Azure

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

Aqui está um exemplo de resposta da API com informações do plano de economia:


        {
            "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 de extremidade da API

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

Chamadas de exemplo de API

Eis alguns exemplos:

Exemplo de chamadas filtradas apenas para máquinas virtuais:

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

Exemplos de chamadas filtradas apenas para reservas:

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

Exemplos de chamadas filtradas para máquinas virtuais de instância reservada:

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

Exemplos de chamadas filtradas para recursos de computação:

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

Você pode acrescentar o código de moeda ao ponto de extremidade da API, conforme mostrado na chamada de exemplo da API. Para obter uma lista completa das moedas suportadas, consulte Moedas suportadas.

Exemplo de chamadas filtradas para computação com moeda em euros:

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

Exemplos de resposta da API

Aqui está um exemplo de resposta da API, 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"
        }

Aqui está um exemplo de resposta da API 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"
        }

Aqui está um exemplo de resposta com uma moeda diferente de 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 solicitação de API, um máximo de 1.000 registros são retornados. No final da resposta da API, ele tem o link para a próxima página. 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

Aqui estão todos os detalhes da propriedade que fazem parte da resposta da API.

Domínio Valores de exemplo Definição
currencyCode USD A moeda na qual as taxas são definidas e retorna os preços em USD, a menos que especificado.
tierMinimumUnits 0 Unidades mínimas de consumo para aproveitar o preço
reservationTerm 1 ano Prazo de reserva – um ano ou três anos
retailPrice 0.176346 Preços de varejo da Microsoft sem desconto
unitPrice 0.176346 O mesmo que retailPrice
armRegionName westeurope Região do Azure Resource Manager onde o serviço está disponível. Esta versão só suporta preços na Commercial Cloud.
Location Oeste da UE Data center do Azure onde o recurso é implantado
effectiveStartDate 2020-08-01T00:00:00Z Campo opcional. Mostra a data em que os preços de varejo são efetivos.
meterId 000a794b-bdb0-58be-a0cd-0c3a0f222923 Identificador exclusivo do recurso
meterName Ponto F16s Nome do contador
productid DZH318Z0BQPS UniqueID do produto
skuId DZH318Z0BQPS/00TG UniqueID para o SKU
productName Máquinas Virtuais FS Series Windows Nome do produto
skuName Ponto F16s Nome da 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 o uso é medido para o serviço
Type DevTestConsumption Tipo de consumo do contador. 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 contadores primários são utilizados para encargos e faturação.
armSkuName Standard_F16s Nome da SKU registrado no Azure
term 3 anos Duração do prazo de um plano de poupança do Azure, associado a savingsPlan informações.

Filtros API

Há suporte para filtros para os seguintes campos:

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

Você acrescenta os filtros ao ponto de extremidade da API, conforme mostrado nas chamadas de exemplo da API.

Serviço suportadoValores da família

As informações a seguir são a lista de valores de serviceFamily suportados. As informações estão sujeitas a alterações.

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

Exemplo programático

O seguinte aplicativo python simples emprega a API para consultar o preço spot de varejo de uma máquina virtual do SKU NP20 padrão na região Centro-Sul dos EUA. O aplicativo filtra a saída da consulta e apresenta as informações desejadas em um 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 desse código produz a seguinte saída:

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

Próximos passos

  • Saiba mais sobre outras APIs de gerenciamento de custos .