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
- Saiba mais sobre outras APIs do Cost Management.