Azure 소매 가격 개요
Azure 고객은 모든 Azure 서비스의 소매 가격을 검색하는 프로그래밍 방식의 방법을 찾고 있습니다. 이제 소매 요금 가격 API를 사용하여 모든 Azure 서비스에 대한 소매 가격을 가져올 수 있습니다. 이전에는 Azure 서비스의 가격을 검색할 수 있는 유일한 방법은 Azure 가격 계산기를 사용하거나 Azure Portal을 사용하는 것이었습니다. 이 API는 모든 Azure 서비스에 대한 소매 요금을 얻을 수 있는 인증되지 않은 환경을 제공합니다. API를 사용하여 다른 지역 및 다른 SKU에 대한 Azure 서비스의 가격을 탐색합니다. 프로그래밍 방식 API를 사용하면 SKU 및 지역에서 내부 분석 및 가격 비교를 위한 고유한 도구를 만들 수 있습니다.
중요하다
Microsoft가 모든 Azure 서비스의 가격을 책정하는 데 사용하는 통화는 USD입니다. USD 통화로 표시된 가격은 Microsoft 소매 가격입니다. API에서 반환된 기타 비 USD 가격은 예산 비용을 예측하는 데 도움이 되는 참조용입니다.
미리 보기 버전
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/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'
기본 미터 필터링은 2023-01-01
포함하여 2021-10-01
이상 API 버전에서 지원됩니다.
필터 값은 대/소문자를 구분합니다.
이전 API 버전에서는 필터 값이 대/소문자를 구분하지 않았습니다. 그러나 2023-01-01-preview
버전 이상에서는 값이 대/소문자를 구분합니다.
예를 들어:
https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines'
작동합니다.
이전 API 버전에서는 Virtual Machines
및 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'
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"
}
다음은 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"
}
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 | 지정하지 않는 한 요금이 정의되고 USD로 가격을 반환하는 통화입니다. |
tierMinimumUnits |
0 | 가격을 이용하기 위한 최소 소비 단위 |
reservationTerm |
1년 | 예약 기간 – 1년 또는 3년 |
retailPrice |
0.176346 | 할인 없이 Microsoft 소매 가격 |
unitPrice |
0.176346 |
retailPrice 동일 |
armRegionName |
westeurope |
서비스를 사용할 수 있는 Azure Resource Manager 지역입니다. 이 버전은 상업용 클라우드에서만 가격을 지원합니다. |
Location |
EU 서부 | 리소스가 배포되는 Azure 데이터 센터 |
effectiveStartDate |
2020-08-01T00:00:00Z | 선택적 필드입니다. 소매 가격이 적용되는 날짜를 표시합니다. |
meterId |
000a794b-bdb0-58be-a0cd-0c3a0f222923 | 리소스의 고유 식별자 |
meterName |
F16s 스폿 | 미터의 이름 |
productid |
DZH318Z0BQPS | 제품의 UniqueID |
skuId |
DZH318Z0BQPS/00TG | SKU에 대한 UniqueID |
productName |
Virtual Machines FS 시리즈 Windows | 제품 이름 |
skuName |
F16s 스폿 | SKU 이름 |
serviceName |
Virtual Machines | 서비스 이름 |
serviceId |
DZH313Z7MMC8 | 서비스의 UniqueID |
serviceFamily |
계산 | SKU의 서비스 패밀리 |
unitOfMeasure |
1시간 | 서비스에 대한 사용량 측정 방법 |
Type |
DevTestConsumption | 미터 소비 유형입니다. 다른 형식은 Reservation 및 Consumption . |
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 |
+----------------+----------------+-------------------+----------------+------------+------------------------------------+
다음 단계
- 다른 Cost Management API대해 알아봅니다.