你当前正在访问 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 返回的其他非美元价格仅供参考,以帮助你估算预算费用。

预览版

可以在 上使用新的 2023-01-01-preview API 版本 https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview。 预览版与以前的 API 版本向后兼容。 URL 返回完整的计量集,包括主计量和非主计量。

https://prices.azure.com/api/retail/prices使用 或 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 版本。

主要计量筛选

可以使用以下方法限制响应以仅检索主要计量价格:

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 节省计划支持

如前所述,仅预览版 () https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview 支持 Azure 节省计划零售价。 对于符合节省计划的计量条件,结果具有相应的节用于节省计划。 当你承诺节省计划时,你会得到比 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 请求,最多返回 1,000 条记录。 在 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 1 年 预留期限 - 一年或三年
retailPrice 0.176346 无折扣的价格
unitPrice 0.176346
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 的 UniqueID
productName 虚拟机 FS 系列 Windows 产品名称
skuName F16s Spot SKU 名称
serviceName 虚拟机 服务名称
serviceId DZH313Z7MMC8 服务的 UniqueID
serviceFamily 计算 SKU 的服务系列
unitOfMeasure 1 小时 如何衡量服务的使用情况
Type DevTestConsumption 计量消耗类型。 其他类型为 ReservationConsumption
isPrimaryMeterRegion True 指示是否将计量区域设置为主要计量。 主要计量用于费用和计费。
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 示例调用中所示。

支持的货币

将货币代码追加到 API 终结点,如 API 示例调用中所示。

货币代码 详细信息
USD 美元
澳元 澳元
林得 巴西雷亚尔
Cad 加元
Chf 瑞士法郎
人民币 人民币
价位 丹麦克朗
欧元 欧元
英镑 英镑
Inr 卢比
日元 日元
KRW 韩元
NOK 挪威克朗
NZD 新西兰元
卢布
SEK 瑞典语(瑞典)
新台币 新台币

编程示例

以下简单的 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         |
+----------------+----------------+-------------------+----------------+------------+------------------------------------+

后续步骤