다음을 통해 공유

Azure Reservation Recommendation Details - Get : API 필수 파라미터 product 중복 문제

동준 김 0 평판 포인트
2024-04-08T05:49:12.6466667+00:00

안녕하세요?

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로 동일합니다.

(https://zcusa.951200.xyz/en-us/rest/api/consumption/reservation-recommendation-details/get?view=rest-consumption-2023-05-01&tabs=HTTP)

  • 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&region=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 매개변수나 필터가 추가되어야 할 것으로 보입니다.

Microsoft Q&A
Microsoft Q&A
이 태그를 사용하여 제안, 기능 요청 및 버그를 Microsoft Q&A 팀과 공유합니다. Microsoft Q&A 팀은 정기적으로 피드백을 평가하고 그 과정에서 업데이트를 제공합니다.
질문 333개
댓글 0개 설명 없음
투표 {count}개

답변

질문 작성자가 수락한 답변이라고 답변에 표시할 수 있으며, 이를 통해 작성자의 문제를 해결한 답변을 사용자가 알 수 있도록 도와줍니다.