Dela via


Hämta en kunds användningsposter för Azure

Gäller för: Partnercenter | Partnercenter för Microsoft Cloud for US Government

Du kan hämta användningsposter för en kunds Azure-prenumeration under en angiven tidsperiod med hjälp av API:et för Azure-användning.

Förutsättningar

  • Autentiseringsuppgifter enligt beskrivningen i Partnercenter-autentisering. Det här scenariot stöder autentisering med både fristående app och autentiseringsuppgifter för App+User.

  • Ett kund-ID (customer-tenant-id). Om du inte känner till kundens ID kan du söka efter det i Partnercenter genom att välja arbetsytan Kunder , sedan kunden från kundlistan och sedan Konto. På kundens kontosida letar du efter Microsoft-ID :t i avsnittet Kundkontoinformation . Microsoft-ID:t är samma som kund-ID :t (customer-tenant-id).

  • En prenumerationsidentifierare.

Det här API:et returnerar daglig och timlös förbrukning under ett godtyckligt tidsintervall. Det här API:et stöds dock inte för Azure-planer. Om du har en Azure-plan kan du läsa artiklarna Hämta förbrukningsradartiklar som inte fakturerats och Hämta fakturerade förbrukningsradobjekt i stället. I de här artiklarna beskrivs hur du får en beräknad förbrukning på daglig nivå per mätare per resurs. Den här hastighetsförbrukningen motsvarar de dagliga korndata som tillhandahålls av AZURE-användnings-API:et. Du måste använda fakturaidentifieraren för att hämta fakturerade användningsdata. Eller så kan du använda aktuella och tidigare perioder för att få obefakturerade användningsuppskattningar. Intervallfilter för varje timme och godtyckliga datumintervall stöds för närvarande inte för azure-prenumerationsresurser.

API för Azure-användning

Det här AZURE-användnings-API:et ger åtkomst till användningsposter under en tidsperiod som representerar när användningen rapporterades i faktureringssystemet. Den ger åtkomst till samma användningsdata som används för att skapa och beräkna avstämningsfilen. Den har dock ingen kunskap om fillogik för faktureringssystemavstämning. Du bör inte förvänta dig att sammanfattningsresultaten för avstämningsfilen matchar resultatet som hämtats från det här API:et exakt under samma tidsperiod.

Faktureringssystemet tar till exempel samma användningsdata och tillämpar regler för fördröjning för att avgöra vad som redovisas i en avstämningsfil. När en faktureringsperiod stängs inkluderas all användning fram till slutet av den dag då faktureringsperioden slutar i avstämningsfilen. Eventuell sen användning inom faktureringsperioden som rapporteras inom 24 timmar efter faktureringsperiodens slut redovisas i nästa avstämningsfil. Information om hur sent partnern debiteras finns i Hämta förbrukningsdata för en Azure-prenumeration.

Det här REST-API:et är paged. Om svarsnyttolasten är större än en enda sida måste du följa nästa länk för att hämta nästa sida med användningsposter.

Scenario: Partner A har överfört faktureringsägarskapet för Azure Legacy Subscription (145P) till Partner B

Om en partner överför faktureringsägarskapet för en äldre Azure-prenumeration till en annan partner måste den nya partnern, när den nya partnern anropar Api för användning för överförda prenumerationer, använda handelsprenumerations-ID (som visas i deras Partnercenter-konto) i stället för Azure-berättigande-ID:t. Azure-berättigande-ID visas endast för Partner B när de är administratör för (AOBO) till kundens Azure-portal.

För att kunna anropa API:et för användning för den överförda prenumerationen måste den nya partnern använda handelsprenumerations-ID:t.

C#

Så här hämtar du Azure Utilization Records:

  1. Hämta kund-ID och prenumerations-ID.

  2. Anropa metoden IAzureUtilizationCollection.Query för att returnera en ResourceCollection som innehåller användningsposterna.

  3. Hämta en uppräkningsverktyget för Azure-användningsposter för att bläddra igenom användningssidorna. Det här steget krävs eftersom resurssamlingen är växlingsfil.

  • Exempel: Konsoltestapp
  • Projekt: SDK-exempel för Partnercenter
  • Klass: 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

Java SDK för Partnercenter kan användas för att hantera Partnercenter-resurser. Det är ett projekt med öppen källkod som underhålls av partnercommunityn och stöds inte officiellt av Microsoft. Du kan få hjälp från communityn eller öppna ett problem på GitHub om du får problem.

För att hämta Azure Utilization Records behöver du först en kundidentifierare och en prenumerationsidentifierare. Sedan anropar du funktionen IAzureUtilizationCollection.query för att returnera en ResourceCollection som innehåller användningsposterna. Eftersom resurssamlingen är sidsidig måste du sedan hämta en Uppräkning av Azure-användningsposter för att kunna bläddra igenom användningssidorna.

// 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-modulen partnercenter kan användas för att hantera Partnercenter-resurser. Det är ett projekt med öppen källkod som underhålls av partnercommunityn och stöds inte officiellt av Microsoft. Du kan få hjälp från communityn eller öppna ett problem på GitHub om du får problem.

För att hämta Azure Utilization Records behöver du först en kundidentifierare och en prenumerationsidentifierare. Sedan anropar du Get-PartnerCustomerSubscriptionUtilization. Det här kommandot returnerar alla poster som är tillgängliga under den angivna tidsperioden.

# $customerId
# $subscriptionId

Get-PartnerCustomerSubscriptionUtilization -CustomerId $customerId -SubscriptionId $subscriptionId -StartDate (Get-Date).AddDays(-2).ToUniversalTime() -Granularity Hourly -ShowDetails

REST-begäran

Syntax för begäran

Metod URI för förfrågan
GET {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-parametrar

Använd följande sökväg och frågeparametrar för att hämta användningsposterna.

Namn Typ Obligatoriskt Beskrivning
customer-tenant-id sträng Ja En GUID-formaterad sträng som identifierar kunden.
prenumerations-ID sträng Ja En GUID-formaterad sträng som identifierar prenumerationen.
start_time sträng i UTC-förskjutningsformat Ja Början av tidsintervallet som representerar när användningen rapporterades i faktureringssystemet.
end_time sträng i UTC-förskjutningsformat Ja Slutet av tidsintervallet som representerar när användningen rapporterades i faktureringssystemet.
Granularitet sträng Nej Definierar kornigheten för användningsaggregeringar. Tillgängliga alternativ är: daily (standard) och hourly.
show_details boolean Nej Anger om användningsinformationen på instansnivå ska hämtas. Standardvärdet är true.
storlek Nummer Nej Anger antalet sammansättningar som returneras av ett enda API-anrop. Standardvärdet är 1000. Maxvärdet är 1 000.

Begärandehuvuden

Mer information finns i REST-huvuden för Partnercenter.

Begärandetext

Ingen

Exempel på begäran

Följande exempelbegäran ger resultat som liknar vad avstämningsfilen kommer att visa för perioden 7/2–8/1. Dessa resultat kanske inte matchar exakt (se avsnittet Api för Azure-användning för mer information).

Den här exempelbegäran returnerar användningsdata som rapporteras i faktureringssystemet mellan 7/2 kl. 12.00 (UTC) och 8/2 kl. 12.00 (UTC).

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-svar

Om det lyckas returnerar den här metoden en samling Azure Utilization Record-resurser i svarstexten. Om Azure-användningsdata ännu inte är klara i ett beroende system returnerar den här metoden en HTTP-statuskod 204 med huvudet Försök efter igen.

Svarsframgång och felkoder

Varje svar levereras med en HTTP-statuskod som anger lyckad eller misslyckad och ytterligare felsökningsinformation. Använd ett verktyg för nätverksspårning för att läsa HTTP-statuskoden, felkodstypen och ytterligare parametrar.

Svarsexempel

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"
      }
    }
  ]
}