요청 시 적은 비용 데이터 세트 가져오기

비용 세부 정보 API를 사용하여 Azure 청구서에 해당하는 집계되지 않은 원시 비용 데이터를 가져옵니다. API는 조직에서 프로그래밍 방식으로 데이터 검색 솔루션을 필요로 하는 경우에 유용합니다. 2GB(2백만 행) 이하의 적은 비용 데이터 세트를 분석하려면 API를 사용하는 것이 좋습니다. 그러나 지속적인 데이터 수집 워크로드 및 큰 데이터 세트 다운로드에는 내보내기를 사용해야 합니다.

대량의 내보낸 데이터를 정기적으로 가져오려면 내보내기를 사용하여 반복적으로 대규모 비용 데이터 세트 검색을 참조하세요.

비용 세부 정보(이전에는 사용량 세부 정보라고 함)의 데이터에 대해 자세히 알아보려면 비용 세부 정보 데이터 수집을 참조하세요.

비용 세부 정보 보고서는 기업계약 또는 Microsoft 고객 계약을 체결한 고객에게만 제공됩니다. MSDN, 종량제 또는 Visual Studio 고객인 경우 종량제 구독에 대한 비용 세부 정보 가져오기를 참조하세요.

사용 권한

비용 세부 정보 API를 사용하려면 지원되는 기능 및 범위에 대한 읽기 전용 권한이 필요합니다.

참고 항목

비용 세부 정보 API는 EA 또는 MCA 고객에 대한 관리 그룹을 지원하지 않습니다.

자세한 내용은 다음을 참조하세요.

비용 세부 정보 API 모범 사례

비용 세부 정보 API를 사용하는 경우 다음과 같은 모범 사례를 권장합니다.

요청 일정

최신 비용 데이터를 가져오려면 최대 하루에 한 번 쿼리하는 것이 좋습니다. 보고서는 4시간마다 새로 고쳐집니다. 더 자주 호출하는 경우 동일한 데이터를 받게 됩니다. 기록 청구서에 대한 비용 데이터를 다운로드한 후에는 명시적으로 알림을 받는 경우가 아니면 요금이 변경되지 않습니다. 동일한 데이터에 대한 반복 호출을 방지하려면 비용 데이터를 쿼리 가능한 저장소에 캐싱하는 것이 좋습니다.

요청 청크

호출을 작은 날짜 범위로 청크 분할하여 네트워크를 통해 다운로드할 수 있는 더 관리하기 쉬운 파일을 가져옵니다. 예를 들어, 월 단위로 Azure 비용 파일이 큰 경우 일별 또는 주별로 청크 분할하는 것이 좋습니다. 비용 데이터가 많은 범위(예: 청구 계정)가 있는 경우 다운로드할 수 있는 더 관리하기 쉬운 파일을 가져올 수 있도록 자식 범위를 여러 번 호출하는 것이 좋습니다. Cost Management 범위에 대한 자세한 내용은 범위 이해 및 작업을 참조하세요. 데이터를 다운로드한 후에는 Excel을 사용하여 필터 및 피벗 테이블로 데이터를 추가로 분석할 수 있습니다.

데이터 세트가 매월 2GB(또는 약 2백만 행)를 초과하는 경우 보다 확장성이 뛰어난 솔루션으로 내보내기를 사용하는 것이 좋습니다.

대기 시간 및 속도 제한

API에 대한 요청 시 호출은 속도가 제한됩니다. 비용 세부 정보 파일을 생성하는 데 걸리는 시간은 파일의 데이터 양과 직접적인 상관 관계가 있습니다. 파일을 다운로드할 수 있게 되기까지 예상되는 시간을 이해하려면 API 응답에서 retry-after 헤더를 사용할 수 있습니다.

지원되는 데이터 세트 시간 범위

비용 세부 정보 API는 보고서당 최대 한 달의 데이터 세트 시간 범위를 지원합니다. 현재 날짜로부터 최대 13개월 이전의 기록 데이터를 검색할 수 있습니다. 13개월 기록 데이터 세트를 시드하려는 경우 과거 13개월 도안 1개월 데이터 세트에 대해 13번의 호출을 수행하는 것이 좋습니다. 13개월보다 오래된 기록 데이터를 검색하려면 Exports REST API를 사용합니다.

비용 세부 정보 API 요청 예

다음 예제 요청은 Microsoft 고객이 일반적인 시나리오를 해결하는 데 사용됩니다. 요청에 의해 반환되는 데이터는 청구 시스템이 비용을 받은 날짜에 해당합니다. 여기에는 여러 청구서의 비용이 포함될 수 있습니다. 비동기 API입니다. 따라서 보고서를 요청하기 위해 초기 호출을 하고 응답 헤더에서 폴링 링크를 수신합니다. 여기에서 보고서를 사용할 수 있을 때까지 제공된 링크를 폴링할 수 있습니다.

API 응답에서 retry-after 헤더를 사용하여 다음에 API를 폴링할 시기를 지정합니다. 헤더는 보고서를 생성하는 데 걸리는 예상 최소 시간을 제공합니다.

API 계약에 대한 자세한 내용은 비용 세부 정보 API를 참조하세요.

실제 비용 및 분할 상환 비용

실제 비용 보고서를 볼지 분할 상환 비용 보고서를 볼지 여부를 제어하려면 초기 요청 본문의 메트릭 필드에 사용된 값을 변경합니다. 사용 가능한 메트릭 값은 ActualCost 또는 AmortizedCost입니다.

분할 상환 비용은 예약 구매를 일일 청크로 분할하여 예약 기간 동안 이 청크를 분산시킵니다. 예를 들어 1월 1일에 365달러의 구매가 표시되는 대신, 1월 1일부터 12월 31일까지 매일 1.00달러의 구매가 표시됩니다. 또한 이러한 비용은 기본 분할 상환 외에도 다시 할당되어 예약을 사용한 특정 리소스와 연결됩니다. 예를 들어 매일 1.00달러의 요금이 두 가상 머신 간에 분할되면 하루에 두 건의 0.50달러 요금이 표시됩니다. 예약의 일부가 당일에 활용되지 않으면 해당 가상 머신과 연결된 하나의 0.50달러 요금과 UnusedReservation 요금 유형의 다른 0.50달러 요금이 표시됩니다. 사용되지 않은 예약 비용은 분할 상환 비용을 볼 때만 표시됩니다.

비용 표시 방법의 변경으로 인해 실제 비용과 분할 상환 비용 보기에는 총 수가 다르게 표시됩니다. 일반적으로 분할 상환 비용을 확인하는 경우 예약 구매에 대한 시간 경과에 따른 총 비용은 감소하지만, 예약 구매에 따른 월 비용은 증가합니다. 분할 상환은 예약 구매에만 사용할 수 있으며, 현재 Azure Marketplace 구매에는 적용되지 않습니다.

보고서 작성을 위한 초기 요청

POST https://management.azure.com/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2022-05-01

요청 본문.:

다음은 지정된 날짜 범위에 대한 ActualCost 데이터 세트에 대한 요청 예제입니다.

{
  "metric": "ActualCost",
  "timePeriod": {
    "start": "2020-03-01",
    "end": "2020-03-15"
  }
}

적절한 URI를 빌드하는 데 사용할 수 있는 {scope} 옵션은 범위의 리소스 ID 식별 문서에 설명되어 있습니다.

보고서 요청 본문에서 제공할 수 있는 사용 가능한 필드는 아래에 요약되어 있습니다.

  • 메트릭 - 요청된 보고서 형식입니다. ActualCost 또는 AmortizedCost일 수 있습니다. 필수 아님. 필드가 지정되지 않은 경우 API는 기본적으로 ActualCost 보고서로 설정됩니다.
  • timePeriod - 데이터에 대해 요청한 날짜 범위입니다. 필수 아님. 이 매개 변수는 invokeId 또는 billingPeriod 매개 변수와 함께 사용할 수 없습니다. timePeriod, invokeId 또는 billingPeriod 매개 변수가 요청 본문에 제공되지 않으면 API는 현재 월의 비용을 반환합니다.
  • invoiceId - 데이터에 대해 요청된 청구서입니다. 이 매개 변수는 Microsoft 고객 계약 고객만 사용할 수 있습니다. 또한 청구 프로필 또는 고객 범위에서만 사용할 수 있습니다. 이 매개 변수는 billingPeriod 또는 timePeriod 매개 변수와 함께 사용할 수 없습니다. timePeriod, invokeId 또는 billingPeriod 매개 변수가 요청 본문에 제공되지 않으면 API는 현재 월의 비용을 반환합니다.
  • billingPeriod - 데이터에 대해 요청된 청구 기간입니다. 이 매개 변수는 기업계약 고객만 사용합니다. YearMonth 형식을 사용합니다. 예를 들어 202008입니다. 이 매개 변수는 invokeId 또는 timePeriod 매개 변수와 함께 사용할 수 없습니다. timePeriod, invokeId 또는 billingPeriod 매개 변수가 요청 본문에 제공되지 않으면 API는 현재 월의 비용을 반환합니다.

API 응답:

Response Status: 202 – Accepted: 요청이 수락되었음을 나타냅니다. Location 헤더를 사용하여 상태를 확인합니다.

응답 헤더:

이름 Type 서식 설명
위치 문자열 비동기 작업의 결과를 확인하는 URL입니다.
Retry-After 정수 Int32 보고서가 생성될 예상 시간입니다. 다시 폴링하기 전에 이 기간 동안 기다리세요.

보고서 폴링 및 다운로드

비용 세부 정보 보고서 만들기를 요청한 후 API 응답의 location 헤더에 제공된 엔드포인트를 사용하여 보고서를 폴링합니다. 다음은 폴링 요청의 예입니다.

보고서 폴링 요청:

GET https://management.azure.com/{scope}/providers/Microsoft.CostManagement/costDetailsOperationStatus/{operationId}?api-version=2022-05-01

Response Status 200 – Succeeded: 요청이 성공했음을 나타냅니다.

{
  "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CostManagement/operationResults/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "status": "Completed",
  "manifest": {
    "manifestVersion": "2022-05-01",
    "dataFormat": "Csv",
    "blobCount": 1,
    "byteCount": 160769,
    "compressData": false,
    "requestContext": {
      "requestScope": "subscriptions/00000000-0000-0000-0000-000000000000",
      "requestBody": {
        "metric": "ActualCost",
        "timePeriod": {
          "start": "2020-03-01",
          "end": "2020-03-15"
        }
      }
    },
    "blobs": [
      {
        "blobLink": "{downloadLink}",
        "byteCount": 32741
      }
    ]
  },
  "validTill": "2022-05-10T08:08:46.1973252Z"
}

API 응답의 주요 필드 요약은 다음과 같습니다.

  • manifestVersion - 응답에 사용되는 매니페스트 계약의 버전입니다. 현재 매니페스트 버전은 지정된 API 버전에 대해 동일하게 유지됩니다.
  • dataFormat - CSV는 현재 API에서 제공하는 유일한 지원 파일 형식입니다.
  • blobCount - 보고서 데이터 세트에 있는 개별 데이터 BLOB의 수를 나타냅니다. 이 API는 응답에서 둘 이상의 파일로 분할된 데이터 세트를 제공할 수 있다는 점에 유의해야 합니다. 분할된 파일을 적절하게 처리할 수 있도록 데이터 파이프라인을 설계합니다. 분할을 통해 더 큰 데이터 세트를 더 빠르게 수집할 수 있습니다.
  • byteCount - 모든 파티션에 대한 보고서 데이터 세트의 총 바이트 수입니다.
  • compressData - 압축은 첫 번째 릴리스에서 항상 false로 설정됩니다. 그러나 API는 향후 압축을 지원할 것입니다.
  • requestContext - 보고서에 대해 요청된 초기 구성입니다.
  • blobs - 전체 보고서를 함께 구성하는 n개의 BLOB 파일 목록입니다.
    • blobLink - 개별 BLOB 파티션의 다운로드 URL입니다.
    • byteCount - 개별 BLOB 파티션의 바이트 수입니다.
  • validTill - 보고서에 더 이상 액세스할 수 없는 날짜입니다.

다음 단계