Azure에 대한 고객의 사용률 레코드 가져오기
에 적용: 파트너 센터 | 미국 정부용 Microsoft 클라우드 파트너 센터
Azure 사용률 API를 사용하여 지정된 기간 동안 고객의 Azure 구독 사용률 레코드를 가져올 수 있습니다.
필수 구성 요소
파트너 센터 인증설명된 대로 자격 증명. 이 시나리오는 독립 실행형 앱과 App+User 자격 증명을 모두 사용하여 인증을 지원합니다.
고객 ID(
customer-tenant-id
)입니다. 고객의 ID를 모르는 경우, 파트너 센터에서 고객 작업 영역을 선택하여 고객 목록에서 해당 고객을 선택한 후 계정 을 조회할 수 있습니다. 고객의 계정 페이지에서 고객 계정 정보 섹션을 살펴보세요. 그곳에서 Microsoft ID를 찾을 수 있습니다. Microsoft ID는 고객 ID(customer-tenant-id
)와 동일합니다.구독 식별자입니다.
이 API는 임의 시간 범위에 대한 일일 및 시간별 평가되지 않은 소비량을 반환합니다. 그러나 이 API는Azure 플랜에 대해 지원되지 않습니다. Azure 플랜이 있는 경우, 청구되지 않은 소비 품목 가져오기 문서와 청구 소비 품목 가져오기 문서를 대신 참조하세요. 이 문서에서는 리소스당 미터당 일일 수준에서 평가된 소비량을 얻는 방법을 설명합니다. 이 소비량은 Azure 사용률 API에서 제공하는 일별 세부 데이터와 동일합니다. 청구서 식별자를 사용하여 청구된 사용량 현황 데이터를 검색해야 합니다. 또는 현재 및 이전 기간을 사용하여 청구되지 않은 사용량 추정치를 가져올 수 있습니다. 시간별 데이터 및 임의 날짜 범위 필터는 현재Azure 플랜 구독 리소스에서는 지원되지 않습니다.
Azure 활용 API
이 Azure 사용률 API는 청구 시스템에서 사용률이 보고된 시기를 나타내는 기간 동안 사용률 레코드에 대한 액세스를 제공합니다. 조정 파일을 만들고 계산하는 데 사용되는 것과 동일한 사용률 데이터에 대한 액세스를 제공합니다. 그러나 청구 시스템 조정 파일 논리에 대한 지식은 없습니다. 조정 파일 요약 결과가 동일한 기간 동안 이 API에서 정확히 검색된 결과와 일치할 것으로 예상해서는 안 됩니다.
예를 들어 청구 시스템은 동일한 사용률 데이터를 사용하고 대기 시간 규칙을 적용하여 조정 파일에서 고려되는 사항을 결정합니다. 청구 기간이 종료되면 청구 기간이 종료되는 날짜가 끝날 때까지의 모든 사용량이 조정 파일에 포함됩니다. 청구 기간이 종료된 후 24시간 이내에 보고되는 청구 기간 내의 지연 사용량은 다음 조정 파일에서 고려됩니다. 파트너의 청구 지연 규칙에 대해서는 Azure 구독에 대한 소비 데이터 가져오기를 참조하세요.
이 REST API는 페이징됩니다. 응답 페이로드가 단일 페이지보다 큰 경우 다음 링크를 따라 사용률 레코드의 다음 페이지를 가져와야 합니다.
시나리오: 파트너 A가 Azure 레거시 구독(145P)의 청구 소유권을 파트너 B로 이전했습니다.
파트너가 Azure 레거시 구독의 청구 소유권을 다른 파트너에게 양도하는 경우 새 파트너가 이전된 구독에 대해 사용률 API를 호출할 때 Azure 권한 ID 대신 상거래 구독 ID(파트너 센터 계정에 표시됨)를 사용해야 합니다. Azure 권한 ID는 파트너 B가 고객의 Azure 포털에서 대리 관리자로 활동할 때만 표시됩니다.
전송된 구독에 대한 사용률 API를 성공적으로 호출하려면 새 파트너가 상거래 구독 ID를 사용해야 합니다.
C#
Azure 사용률 레코드를 가져오려면 다음을 수행합니다.
고객 ID 및 구독 ID를 가져옵니다.
IAzureUtilizationCollection.Query 메서드를 호출하여 사용률 레코드가 포함된 ResourceCollection 반환합니다.
Azure 사용률 레코드 열거자를 가져와 사용률 페이지를 트래버스합니다. 리소스 컬렉션이 페이지로 나뉘어 있으므로 이 단계가 필요합니다.
- 샘플: 콘솔 테스트 앱
- 프로젝트: 파트너 센터 SDK 샘플
- 클래스: GetAzureSubscriptionUtilization.cs
// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;
IPartner partner = PartnerService.Instance.CreatePartnerOperations(credentials);
// Retrieve the utilization records for the last year in pages of 100 records.
var utilizationRecords = partner.Customers[customerId].Subscriptions[subscriptionId].Utilization.Azure.Query(
DateTimeOffset.Now.AddYears(-1),
DateTimeOffset.Now,
size: 100);
// Create an Azure utilization enumerator which will aid us in traversing the utilization pages.
var utilizationRecordEnumerator = partner.Enumerators.Utilization.Azure.Create(utilizationRecords);
while (utilizationRecordEnumerator.HasValue)
{
//
// Insert code here to work with this page.
//
// Get the next page.
utilizationRecordEnumerator.Next();
}
자바
파트너 센터 Java SDK 사용하여 파트너 센터 리소스를 관리할 수 있습니다. 파트너 커뮤니티에서 유지 관리하며 Microsoft에서 공식적으로 지원하지 않는 오픈 소스 프로젝트입니다. 커뮤니티 도움을 받거나 GitHub에서 이슈를 생성할 수 있습니다, 문제가 발생하는 경우.
Azure 사용률 레코드를 가져오려면 먼저 고객 식별자와 구독 식별자가 필요합니다. 그런 다음 IAzureUtilizationCollection.query 함수를 호출하여 사용률 레코드가 포함된 ResourceCollection 반환합니다. 리소스 컬렉션이 페이징되므로 Azure 사용량 레코드 열거자를 가져와 사용량 페이지를 탐색해야 합니다.
// IAggregatePartner partnerOperations;
// String customerId;
// String subscriptionId;
ResourceCollection<AzureUtilizationRecord> utilizationRecords = partnerOperations.getCustomers()
.byId(customerId).getSubscriptions().byId(subscriptionId)
.getUtilization().getAzure().query(
new DateTime().minusYears(1),
new DateTime(),
AzureUtilizationGranularity.Daily,
true,
100);
// Create an Azure utilization enumerator which will aid us in traversing the utilization pages
IResourceCollectionEnumerator<ResourceCollection<AzureUtilizationRecord>> utilizationRecordEnumerator =
partnerOperations.getEnumerators().getUtilization().getAzure().create(utilizationRecords);
while (utilizationRecordEnumerator.hasValue())
{
//
// Insert code here to work with this page.
//
// get the next page
utilizationRecordEnumerator.next();
}
PowerShell
파트너 센터 PowerShell 모듈 사용하여 파트너 센터 리소스를 관리할 수 있습니다. 파트너 커뮤니티에서 유지 관리하며 Microsoft에서 공식적으로 지원하지 않는 오픈 소스 프로젝트입니다. 커뮤니티 도움을 받거나 GitHub에서 이슈를 생성할 수 있습니다, 문제가 발생하는 경우.
Azure 사용률 레코드를 가져오려면 먼저 고객 식별자와 구독 식별자가 필요합니다. 그런 다음 Get-PartnerCustomerSubscriptionUtilization호출합니다. 이 명령은 지정된 기간 동안 사용할 수 있는 모든 레코드를 반환합니다.
# $customerId
# $subscriptionId
Get-PartnerCustomerSubscriptionUtilization -CustomerId $customerId -SubscriptionId $subscriptionId -StartDate (Get-Date).AddDays(-2).ToUniversalTime() -Granularity Hourly -ShowDetails
REST 요청
요청 구문
메서드 | 요청 URI |
---|---|
가져오기 | {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/utilizations/azure?start_time={start-time}&end_time={end-time}&granularity={granularity}&show_details={True} |
URI 매개 변수
다음 경로 및 쿼리 매개 변수를 사용하여 사용률 레코드를 가져옵니다.
이름 | 종류 | 필수 | 설명 |
---|---|---|---|
고객-테넌트-ID | 문자열 | 예 | 고객을 식별하는 GUID 형식 문자열입니다. |
구독-아이디 | 문자열 | 예 | 구독을 식별하는 GUID 형식 문자열입니다. |
시작_시간 | UTC 날짜-시간 오프셋 형식의 문자열 | 예 | 청구 시스템에서 사용률이 보고된 시간을 나타내는 시간 범위의 시작입니다. |
종료 시간 | UTC 날짜-시간 오프셋 형식의 문자열 | 예 | 청구 시스템에서 사용률이 보고된 시간을 나타내는 시간 범위의 끝입니다. |
세분성 | 문자열 | 아니요 | 사용 집계의 세분성을 정의합니다. 사용 가능한 옵션은 daily (기본값) 및 hourly . |
세부 정보 표시 | 부울 | 아니요 | 인스턴스 수준 사용 세부 정보를 가져올지 여부를 지정합니다. 기본값은 true . |
크기 | 숫자 | 아니요 | 단일 API 호출에서 반환되는 집계 수를 지정합니다. 기본값은 1000입니다. 최대값은 1000입니다. |
요청 헤더
요청 본문
없음
요청 예제
다음 예제 요청은 조정 파일이 7/2- 8/1 기간 동안 표시할 것과 유사한 결과를 생성합니다. 이러한 결과는 정확히 일치하지 않을 수 있습니다(자세한 내용은 Azure 사용률 API 섹션 참조).
이 예제 요청은 UTC 기준 7월 2일 오전 12시부터 8월 2일 오전 12시까지 청구 시스템에 보고된 사용률 데이터를 반환합니다.
GET https://api.partnercenter.microsoft.com/v1/customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/utilizations/azure?start_time=2017-07-02T00:00:00-08:00&end_time=2017-08-02T00:00:00-08:00 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: e6a3b6b2-230a-4813-999d-57f883b60d38
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
Host: api.partnercenter.microsoft.com
REST 응답
성공하면 이 메서드는 응답 본문에 Azure 사용률 레코드 리소스 컬렉션을 반환합니다. Azure 사용률 데이터가 종속 시스템에서 아직 준비되지 않은 경우 이 메서드는 Retry-After 헤더가 있는 HTTP 상태 코드 204를 반환합니다.
응답 성공 및 오류 코드
각 응답에는 성공 또는 실패 및 추가 디버깅 정보를 나타내는 HTTP 상태 코드가 함께 제공됩니다. 네트워크 추적 도구를 사용하여 HTTP 상태 코드, 오류 코드 형식및 추가 매개 변수를 읽습니다.
응답 예제
HTTP/1.1 200 OK
Content-Length: 2630
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: e6a3b6b2-230a-4813-999d-57f883b60d38
MS-CV: PjuGoYrw806o6A3Y.0
MS-ServerId: 030020525
Date: Fri, 04 Aug 2017 23:48:28 GMT
{
"totalCount": 2,
"items": [
{
"usageStartTime": "2017-06-07T17:00:00-07:00",
"usageEndTime": "2017-06-08T17:00:00-07:00",
"resource": {
"id": "8767aeb3-6909-4db2-9927-3f51e9a9085e",
"name": "Storage Admin",
"category": "Storage",
"subcategory": "Block Blob",
"region": "Azure Stack"
},
"quantity": 0.217790327034891,
"unit": "1 GB/Hr",
"infoFields": {},
"instanceData": {
"resourceUri": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
"location": "azurestack",
"partNumber": "",
"orderNumber": "",
"additionalInfo": {
"azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
"azureStack.SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"azureStack.Location": "local",
"azureStack.EventDateTime": "06/05/2017 06:00:00"
}
},
"attributes": {
"objectType": "AzureUtilizationRecord"
}
},
{
"usageStartTime": "2017-06-07T17:00:00-07:00",
"usageEndTime": "2017-06-08T17:00:00-07:00",
"resource": {
"id": "8767aeb3-6909-4db2-9927-3f51e9a9085e",
"name": "Storage Admin",
"category": "Storage",
"subcategory": "Block Blob",
"region": "Azure Stack"
},
"quantity": 0.217790327034891,
"unit": "1 GB/Hr",
"infoFields": {},
"instanceData": {
"resourceUri": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
"location": "azurestack",
"partNumber": "",
"orderNumber": "",
"additionalInfo": {
"azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
"azureStack.SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"azureStack.Location": "local",
"azureStack.EventDateTime": "06/05/2017 06:00:00"
},
"attributes": {
"objectType": "AzureUtilizationRecord"
}
},
"links": {
"self": {
"uri": "customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/utilizations/azure?start_time=2017-06-10T00:00:00Z&end_time=2017-07-09T00:00:00Z&granularity=Daily&show_details=True&size=1000",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Collection"
}
}
]
}