Обзор розничных цен Azure
Клиенты Azure искали программный способ получения розничных цен для всех служб Azure. Теперь вы можете использовать API розничных цен для получения розничных цен для всех служб Azure. Раньше единственным способом, чтобы узнать цены на службы Azure было использование Калькулятора цен Azure или портала Azure. Этот API предоставляет не требующий проверки подлинности интерфейс для получения розничных тарифов на все службы Azure. Используйте API для изучения цен на службы Azure в разных регионах и разных SKU. Программный API может также помочь в создании собственных средств для внутреннего анализа и сравнения цен в SKU и регионах.
Важно!
Валюта, которую корпорация Майкрософт использует для ценообразования всех служб Azure, — usd. Цены, отображаемые в валюте USD, являются розничными ценами Майкрософт. Другие цены, не связанные с долларами США, возвращаемые API, помогут вам оценить бюджетные расходы.
Предварительная версия
Вы можете использовать новую версию API 2023-01-01-preview по адресу https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview. Предварительная версия обратно совместима с предыдущими версиями API. URL-адрес возвращает полный набор счетчиков, включая первичные и нестандартные счетчики.
При использовании или https://prices.azure.com/api/retail/priceshttps://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview возвращается полный набор счетчиков.
Тарифы для планов экономии доступны только в версии https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview
.
Фильтрация основного счетчика
Вы можете ограничить ответы, чтобы получать только цены на основной счетчик с помощью:
https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview&meterRegion='primary'
Фильтрация основного счетчика поддерживается 2021-10-01
API и более поздними версиями, включая 2023-01-01
.
Значение фильтра с учетом регистра
В предыдущих версиях API значение фильтра не учитывалось. Однако в версии 2023-01-01-preview
и более поздних версиях значение учитывает регистр.
Пример:
https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines'
Работает.
В более ранних версиях Virtual Machines
API и virtual machines
работали.
Теперь только Virtual Machines
работает.
Поддержка плана сохранения Azure
Как упоминалось ранее, розничные цены на план экономии Azure поддерживаются только в предварительной версии (https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview). Для счетчиков, подходящих для плана экономии, результаты содержат соответствующий раздел для плана экономии. При выполнении плана экономии вы получаете более низкую цену OnDemand
, чем цена. Дополнительные сведения о планах экономии Azure см. в документации по планам экономии Azure.
Ниже приведен пример ответа API со сведениями о плане экономии.
{
"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"
}
]
},
Конечная точка API
https://prices.azure.com/api/retail/prices
Примеры вызовов API
Ниже приведено несколько примеров.
Примеры вызовов, отфильтрованные только для виртуальных машин:
https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines'
Примеры вызовов, отфильтрованные только для резервирований:
https://prices.azure.com/api/retail/prices?$filter=priceType eq 'Reservation'
Примеры вызовов, отфильтрованных для виртуальных машин зарезервированных экземпляров:
https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' and priceType eq 'Reservation'
Примеры вызовов, отфильтрованные по вычислительным ресурсам:
https://prices.azure.com/api/retail/prices?$filter=serviceFamily eq 'Compute'
Примеры вызовов, отфильтрованные для вычислений с валютой в евро:
https://prices.azure.com/api/retail/prices?currencyCode='EUR'&$filter=serviceFamily eq 'Compute'
Примеры ответов API
Ниже приведен пример ответа API без цен на резервирование.
{
"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"
}
Ниже приведен пример ответа API с ценами на резервирование и термином в ответе.
{
"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"
}
Ниже приведен пример ответа с валютой, отличной от доллара США.
{
"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"
}
Разбиение ответа API на страницы
Ответ API обеспечивает разбиение на страницы. Для каждого запроса API возвращается не более 1000 записей. В конце ответа API есть ссылка на следующую страницу. Пример:
"NextPageLink": https://prices.azure.com:443/api/retail/prices?$filter=serviceName%20eq%20%27Virtual%20Machines%27&$skip=1000
Сведения о свойстве API
Ниже приведены все сведения о свойствах, которые являются частью ответа API.
Поле | Примеры значений | Определение |
---|---|---|
currencyCode |
USD | Валюта, в которой определены курсы и возвращает цены в долларах США, если не указано. |
tierMinimumUnits |
0 | Минимальные единицы потребления для получения цены |
reservationTerm |
Год | Срок резервирования — один год или три года |
retailPrice |
0.176346 | Цены без скидки |
unitPrice |
0.176346 | |
armRegionName |
westeurope |
Azure Resource Manager регион, в котором доступна служба. Эта версия поддерживает только цены в коммерческом облаке. |
Location |
Западная Европа | Центр обработки данных Azure, в котором развернут ресурс |
effectiveStartDate |
2020-08-01T00:00:00Z | Дополнительное поле. Показывает дату вступления розничных цен в силу. |
meterId |
000a794b-bdb0-58be-a0cd-0c3a0f222923 | Уникальный идентификатор ресурса |
meterName |
F16s Spot | Имя единицы измерения |
productid |
DZH318Z0BQPS | UniqueID продукта |
skuId |
DZH318Z0BQPS/00TG | UniqueID для номера SKU |
productName |
Windows серии Виртуальные машины FS | Название продукта |
skuName |
F16s Spot | Номер SKU |
serviceName |
Виртуальные машины | Имя службы |
serviceId |
DZH313Z7MMC8 | UniqueID службы |
serviceFamily |
Вычисления | Семейство служб номера SKU |
unitOfMeasure |
1 час | Как измеряется использование службы |
Type |
DevTestConsumption | Тип потребления счетчика. Другие типы: Reservation и Consumption . |
isPrimaryMeterRegion |
True | Указывает, задана ли область измерения в качестве основного счетчика. Первичные счетчики используются для оплаты и выставления счетов. |
armSkuName |
Standard_F16s | Имя номера SKU, зарегистрированного в Azure |
term |
3 года | Продолжительность срока для сберегательного плана Azure, связанного с savingsPlan информацией. |
Фильтры API
Фильтры поддерживаются для следующих полей:
armRegionName
Location
meterId
meterName
productid
skuId
productName
skuName
serviceName
serviceId
serviceFamily
priceType
armSkuName
Фильтры добавляются в конечную точку API, как показано в примере вызовов API.
Поддерживаемые валюты
Код валюты добавляется в конечную точку API, как показано в примере вызова API.
Код валюты | Подробный сведения |
---|---|
USD | Доллар США |
AUD | Австралийский доллар |
BRL | Бразильский реал |
CAD | Канадский доллар |
CHF | Швейцарский франк |
CNY | Юань |
DKK | Датская крона |
EUR | Евро |
GBP | Британский фунт |
INR | Индийская рупия |
JPY | Иена |
KRW | Корейский выиграл |
NOK | Норвежская крона |
NZD | Новозеландский доллар |
РУБ | Российский рубль |
SEK | Шведская крона |
TWD | Тайваньский доллар |
Программный пример
Следующее простое приложение Python использует API для запроса розничных цен на виртуальную машину стандартного номера SKU NP20 в центрально-южной части США. Приложение фильтрует выходные данные запроса и предоставляет нужные сведения в табличном формате.
#!/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()
При выполнении этого кода выводятся следующие выходные данные:
+----------------+----------------+-------------------+----------------+------------+------------------------------------+
| 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 |
+----------------+----------------+-------------------+----------------+------------+------------------------------------+
Дальнейшие действия
- Сведения о других API управления затратами.