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 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 SKU 的 UniqueID
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         |
+----------------+----------------+-------------------+----------------+------------+------------------------------------+

後續步驟