Azure Reservation Recommendation Details - Get : API 필수 파라미터 product 중복 문제
안녕하세요?
Azure Reservation Recommendation Details - Get API 사용 관련해서 문제가 발생하고 있습니다.
본론에 들어가기 앞서 Azure Reservation Recommendations - List API를 사용해서 예약에 대한 추천 결과를 받아올 경우 다음의 두 응답을 받게 됩니다.
meterId를 보면 확인할 수 있듯 각각 다른 제품으로 구성되어 있습니다.
- Azure Database for MySQL Flexible Server Business Critical Compute
- Azure Database for MySQL Flexible Server General Purpose Ddsv4 Series Compute
GET ``https://management.azure.com/providers/Microsoft.Billing/billingAccounts/00000000/providers/Microsoft.Consumption/reservationRecommendations?api-version=2023-11-01&$filter=properties/lookBackPeriod eq 'Last30Days' AND properties/scope eq 'Shared' AND properties/resourceType eq 'MySQL' AND properties/term eq 'P1Y'
{
"value": [
{ "kind": "legacy",
"id": "billingAccount/00000000/providers/Microsoft.Consumption/reservationRecommendations/
00000000-0000-0000-0000-000000000000",
"name": "00000000-0000-0000-0000-000000000000",
"type": "Microsoft.Consumption/reservationRecommendations",
"location": "koreacentral",
"sku": "vCore",
"properties": {
"meterId": "5b77a38e-90d1-5ef9-90d9-2b6762123327",
"term": "P1Y",
"costWithNoReservedInstances": 879328.8,
"recommendedQuantity": 8,
"totalCostWithReservedInstances": 587523.3351598174,
"netSavings": 291805.4648401827,
"firstUsageDate": "2024-03-09T00:00:00Z",
"scope": "Shared",
"lookBackPeriod": "Last30Days",
"resourceType": "MySQL",
"instanceFlexibilityRatio": 1.0,
"instanceFlexibilityGroup": "NA",
"normalizedSize": "vCore",
"recommendedQuantityNormalized": 8.0,
"skuProperties": [],
"totalHours": 718,
"lastUsageDate": "2024-04-07T21:00:00Z"
}
},
{
"kind": "legacy",
"id": "billingAccount/00000000/providers/Microsoft.Consumption/reservationRecommendations/
00000000-0000-0000-0000-000000000000",
"name": "00000000-0000-0000-0000-000000000000",
"type": "Microsoft.Consumption/reservationRecommendations",
"location": "koreacentral",
"sku": "vCore",
"properties": {
"meterId": "2e63d956-6032-57dd-a662-b82fa55f6f47",
"term": "P1Y",
"costWithNoReservedInstances": 2378159.94,
"recommendedQuantity": 26,
"totalCostWithReservedInstances": 1589073.0100456623,
"netSavings": 789086.9299543377,
"firstUsageDate": "2024-03-09T00:00:00Z",
"scope": "Shared",
"lookBackPeriod": "Last30Days",
"resourceType": "MySQL",
"instanceFlexibilityRatio": 1.0,
"instanceFlexibilityGroup": "NA",
"normalizedSize": "vCore",
"recommendedQuantityNormalized": 26.0,
"skuProperties": [],
"totalHours": 718,
"lastUsageDate": "2024-04-07T21:00:00Z"
}
}
]
}
문제가 발생하는 부분은 Azure Reservation Recommendation Details - Get API 사용 시 lookBackPeriod, product, region, scope, term을 필수적으로 입력하도록 되어 있는데, 상기 두 가지 결과를 구분할 수 있는 방법이 전혀 존재하지 않다는 것입니다. 두 제품 모두 product 란에 입력해야 하는 값은 vCore로 동일합니다.
- lookBackPeriod: Last30Days
- product: vCore
- region: koreacentral
- scope: Shared
- term: P1Y
GET ``https://management.azure.com/providers/Microsoft.Billing/billingAccounts/00000000/providers/Microsoft.Consumption/reservationRecommendationDetails?api-version=2023-05-01&lookBackPeriod=Last30Days&product=vCore®ion=koreacentral&scope=Shared&term=P1Y
{
"id": "/providers/microsoft.billing/billingaccounts/00000000/providers/microsoft.consumption/reservationrecommendationdetails",
"name": "reservationRecommendationDetails",
"type": "Microsoft.Consumption/ReservationRecommendationDetails",
"location": null,
"sku": null,
"properties": {
"currency": "KRW",
"resource": {
"appliedScopes": [
...
],
"onDemandRate": 153.3,
"product": "vCore",
"region": "koreacentral",
"reservationRate": 102.28470319634704,
"resourceType": "MySQL"
},
"resourceGroup": null,
"savings": {
"calculatedSavings": [
{
"onDemandCost": 10728301.236768802228412,
"overageCost": 0.0,
"quantity": 8,
"reservationCost": 7168111.999999995710306,
"reservedUnitCount": 1,
"savings": 3560189.236768806518106,
"totalReservationCost": 7168111.999999995710306
}
],
"lookBackPeriod": 30,
"recommendedQuantity": 8.0,
"reservationOrderTerm": "P1Y",
"savingsType": "vCores",
"unitOfMeasure": "hour"
},
"scope": "Shared",
"usage": {
"firstConsumptionDate": "2024-03-09T00:00:00Z",
"lastConsumptionDate": "2024-04-07T21:00:00Z",
"lookBackUnitType": "Number of vCores",
"usageData": [
8.0,
...,
8.0,
0.0
],
"usageGrain": "hourly"
}
}
}
위 결과에서 볼 수 있듯 응답은 하나의 상세 결과만 랜덤하게 반환하고 있습니다.
문제를 해결하기 위해 다음을 시도해보았지만 응답을 고정하는데 영향을 주지 못했습니다.
- Azure Reservation Recommendations - List API 의 id, name, meterId를 Detail API의 파라미터로 추가
- $filter=properties/savings/recommendedQuantity eq 26 파라미터 추가
- product에 meterId 또는 armSkuName(AzureDB_MySQL_Flexible_Server_Memory_Optimized_Edsv4Series_Compute) 전달
product에 중복이 발생하는 상황에서 API 매개변수가 이를 수용하지 못하고 있습니다. 상세 추천 결과를 따로 구분할 수 있도록 API 매개변수나 필터가 추가되어야 할 것으로 보입니다.