你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 零售价格概述

Azure 客户一直在寻找一种以编程方式检索所有 Azure 服务的零售价格。 现在,可以使用零售费率价格 API 获取所有 Azure 服务的零售价格。 以前,检索 Azure 服务价格的唯一方法是使用 Azure 定价计算器或使用 Azure 门户。 此 API 提供未经身份验证的体验,可获取所有 Azure 服务的零售费率。 使用 API 可以针对不同区域和不同的 SKU 浏览 Azure 服务的价格。 编程 API 还可以帮助你创建自己的工具,以便跨 SKU 和区域进行内部分析和价格比较。

重要

Microsoft用于为所有 Azure 服务定价的货币是美元。 以美元货币显示的价格Microsoft零售价格。 API 返回的其他非美元价格仅供参考,以帮助你估算预算费用。

预览版

可以在 https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview使用新的 2023-01-01-preview API 版本。 预览版与以前的 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' 工作。

在早期 API 版本中,Virtual Machinesvirtual 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'

可以将货币代码追加到 API 终结点,如 API 示例调用所示。 有关支持货币的完整列表,请参阅 支持的货币

使用欧元货币筛选计算的示例调用:

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 请求,最多返回 1,000 条记录。 在 API 响应结束时,该响应具有指向下一页的链接。 例如:

"NextPageLink": https://prices.azure.com:443/api/retail/prices?$filter=serviceName%20eq%20%27Virtual%20Machines%27&$skip=1000

API 属性详细信息

下面是作为 API 响应的一部分的所有属性详细信息。

示例值 定义
currencyCode 美元 定义汇率的货币,并返回美元的价格,除非指定。
tierMinimumUnits 0 可用价格的最低消耗单位
reservationTerm 1 年 预留期限 - 一年或三年
retailPrice 0.176346 Microsoft零售价格没有折扣
unitPrice 0.176346 retailPrice 相同
armRegionName westeurope 提供服务的 Azure 资源管理器区域。 此版本仅支持商业云上的价格。
Location 欧盟西部 部署资源的 Azure 数据中心
effectiveStartDate 2020-08-01T00:00:00Z 可选字段。 显示零售价格生效的日期。
meterId 000a794b-bdb0-58be-a0cd-0c3a0f222923 资源的唯一标识符
meterName F16s Spot 计量的名称
productid DZH318Z0BQPS 产品 UniqueID
skuId DZH318Z0BQPS/00TG SKU 的唯一 ID
productName 虚拟机 FS 系列 Windows 产品名称
skuName F16s Spot SKU 名称
serviceName 虚拟机 服务的名称
serviceId DZH313Z7MMC8 服务 UniqueID
serviceFamily 计算 SKU 的服务系列
unitOfMeasure 1 小时 如何度量服务的使用情况
Type DevTestConsumption 计量消耗类型。 其他类型的 ReservationConsumption
isPrimaryMeterRegion 指示计量区域是否设置为主要计量。 主要计量用于费用和计费。
armSkuName Standard_F16s 在 Azure 中注册的 SKU 名称
term 3 年 savingsPlan 信息关联的 Azure 节省计划的期限长度。

API 筛选器

以下字段支持筛选器:

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

将筛选器追加到 API 终结点,如 API 示例调用所示。

支持的 serviceFamily 值

以下信息是受支持的 serviceFamily 值列表。 信息可能会更改。

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

编程示例

以下简单的 Python 应用程序使用 API 来查询美国中南部区域标准 NP20 SKU 虚拟机的零售现价。 应用程序会筛选查询的输出,并采用表格式显示所需信息。

#!/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         |
+----------------+----------------+-------------------+----------------+------------+------------------------------------+

后续步骤