Compartilhar via


Visão geral dos preços de varejo do Azure

Os clientes do Azure têm procurado uma maneira programática de recuperar os preços de varejo de todos os serviços do Azure. Agora você pode usar a API 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 os preços dos serviços do Azure era usar a Calculadora de Preços do Azure ou usar o portal do Azure. Essa API oferece uma experiência não autenticada para obter taxas de varejo para todos os serviços do Azure. Use a API para explorar os preços dos serviços do Azure em diferentes regiões e 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 mostrados em moeda usd são preços de varejo da Microsoft. Outros preços não USD retornados pela API são para sua referência para ajudá-lo a estimar as despesas de orçamento.

Versão prévia

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 prévia é compatível com versões anteriores da API. A URL retorna o conjunto completo de metros, incluindo medidores primários e metros nãoprimários.

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

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

Filtragem de medidor primário

Você pode limitar as respostas para recuperar apenas os preços do medidor primário com:

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

Há suporte para filtragem de medidor primário por 2021-10-01 versões posteriores da API, 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 diferencia maiúsculas de minúsculas. No entanto, na 2023-01-01-preview versão 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 e Virtual Machinesvirtual machines funcionava.

Agora, só Virtual Machines funciona.

Suporte ao plano de salvamento do Azure

Conforme mencionado anteriormente, os preços de varejo do plano de economia do Azure só têm suporte com a versão prévia (https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview). Para os medidores qualificados para um plano de economia, os resultados têm uma seção correspondente para o plano de economia. Ao se comprometer com um plano de economia, você obtém um preço mais barato do que o OnDemand preço. Para obter mais informações sobre os planos de economia do Azure, consulte a documentação dos planos de economia do Azure.

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

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

Chamadas de exemplo de API

Estes são 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ância reservada:

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'

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

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

Exemplos de resposta de API

Aqui está 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"
        }

Aqui está 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"
        }

Aqui está 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 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.

Campo 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 Período de reserva – um ou três anos
retailPrice 0.176346 Preços sem desconto
unitPrice 0.176346
armRegionName westeurope O Azure Resource Manager região em que o serviço está disponível. Esta versão só dá suporte a preços na Nuvem Comercial.
Location Oeste da Europa Data center do Azure em que o recurso é implantado
effectiveStartDate 2020-08-01T00:00:00Z Campo opcional. Mostra a data em que os preços de varejo 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 o uso é medido para o serviço
Type DevTestConsumption Tipo de consumo de medidor. Outros tipos são Reservation e Consumption.
isPrimaryMeterRegion True Indica se a região do medidor é definida como um medidor primário ou não. Os medidores primários são usados para cobrança e encargos.
armSkuName Standard_F16s Nome do SKU registrado no Azure
term 3 anos Duração do prazo para um plano de economia do Azure, associado a savingsPlan informações.

Filtros de 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 de API.

Moedas com suporte

Você acrescenta o código de moeda ao ponto de extremidade da API, conforme mostrado na chamada de exemplo de API.

Código de moeda Detalhe
USD Dólar americano
AUD Dólar australiano
BRL Real brasileiro
CAD Dólar canadense
CHF Franco suíço
CNY Yuan chinês
DKK Coroa dinamarquesa
EUROS Euro
GBP Libra britânica
INR Rúpia indiana
JPY Iene japonês
KRW Coreano ganho
NOK Coroa norueguesa
NZD Dólar neozelandês
ESFREGAR Rublo russo
SEK Coroa sueca
TWD Dólar de Taiwan

Exemplo programático

O aplicativo Python simples a seguir 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óximas etapas