Abrufen von Auslastungsdatensätzen eines Kunden für Azure

Gilt für: Partner Center | Partner Center für Microsoft Cloud for US Government

Mithilfe der Azure-Nutzungs-API können Sie die Auslastungsdatensätze des Azure-Abonnements eines Kunden für einen bestimmten Zeitraum abrufen.

Voraussetzungen

  • Anmeldeinformationen, wie unter Partner Center-Authentifizierung beschrieben. Dieses Szenario unterstützt die Authentifizierung mit eigenständigen App- und App+Benutzeranmeldeinformationen.

  • Eine Kunden-ID (customer-tenant-id). Wenn Sie die KUNDEN-ID nicht kennen, können Sie sie im Partner Center nachschlagen, indem Sie den Arbeitsbereich "Kunden " und dann den Kunden aus der Kundenliste und dann "Konto" auswählen. Suchen Sie auf der Seite "Konto" des Kunden im Abschnitt "Kundenkontoinformationen" nach der Microsoft-ID. Die Microsoft-ID entspricht der Kunden-ID (customer-tenant-id).

  • Ein Abonnementbezeichner.

Diese API gibt täglichen und stündlich nicht bewerteten Verbrauch für eine beliebige Zeitspanne zurück. Diese API wird jedoch für Azure-Pläne nicht unterstützt. Wenn Sie über einen Azure-Plan verfügen, lesen Sie stattdessen die Artikel " Rechnung nicht abgerechnete Verbrauchspositionen abrufen" und "Rechnungsabrechnungspositionen ". In diesen Artikeln wird beschrieben, wie Sie den bewerteten Verbrauch täglich pro Meter pro Ressource erhalten. Dieser Zinsverbrauch entspricht den täglichen Getreidedaten, die von der Azure-Auslastungs-API bereitgestellt werden. Sie müssen den Rechnungsbezeichner verwenden, um in Rechnung gestellte Nutzungsdaten abzurufen. Sie können auch die aktuellen und vorherigen Zeiträume verwenden, um nicht berechnete Nutzungsschätzungen zu erhalten. Stündliche Korndaten und beliebige Datumsbereichsfilter werden für Azure-Planabonnementressourcen derzeit nicht unterstützt.

Azure-Nutzungs-API

Diese Azure-Nutzungs-API bietet Zugriff auf Nutzungsdatensätze für einen Zeitraum, der angibt, wann die Auslastung im Abrechnungssystem gemeldet wurde. Sie bietet Zugriff auf dieselben Nutzungsdaten, die zum Erstellen und Berechnen der Abstimmungsdatei verwendet werden. Sie verfügt jedoch nicht über Kenntnisse der Logik für die Abrechnungssystem-Abstimmungsdatei. Sie sollten nicht erwarten, dass die Zusammenfassungsergebnisse der Abstimmungsdatei dem Ergebnis entsprechen, das genau für denselben Zeitraum von dieser API abgerufen wurde.

Das Abrechnungssystem verwendet beispielsweise dieselben Nutzungsdaten und wendet Verspätetheitsregeln an, um zu bestimmen, was in einer Abstimmungsdatei berücksichtigt wird. Wenn ein Abrechnungszeitraum geschlossen wird, wird die gesamte Nutzung bis zum Ende des Tages, an dem der Abrechnungszeitraum endet, in der Abstimmungsdatei enthalten. Jede verspätete Nutzung innerhalb des Abrechnungszeitraums, der innerhalb von 24 Stunden nach Ablauf des Abrechnungszeitraums gemeldet wird, wird in der nächsten Abstimmungsdatei berücksichtigt. Die Verspätetkeitsregeln für die Abrechnung des Partners finden Sie unter Abrufen von Verbrauchsdaten für ein Azure-Abonnement.

Diese REST-API wird ausgelagert. Wenn die Antwortnutzlast größer als eine einzelne Seite ist, müssen Sie dem nächsten Link folgen, um die nächste Seite der Verwendungsdatensätze abzurufen.

Szenario: Partner A hat den Besitz der Abrechnung des Azure Legacy-Abonnements (145P) an Partner B übertragen.

Wenn ein Partner den Besitz eines Azure Legacy-Abonnements an einen anderen Partner überträgt, ruft der neue Partner die Nutzungs-API für das übertragene Abonnement auf, muss er die Commerce-Abonnement-ID (die im Partner Center-Konto angezeigt wird) anstelle der Azure-Berechtigungs-ID verwenden. Azure-Berechtigungs-ID wird nur für Partner B angezeigt, wenn sie Administrator im Auftrag von (AOBO) für die Azure-Portal des Kunden sind.

Um die Nutzungs-API für das übertragene Abonnement erfolgreich aufzurufen, muss der neue Partner die Commerce-Abonnement-ID verwenden.

C#

So rufen Sie die Azure-Auslastungsdatensätze ab:

  1. Rufen Sie die Kunden-ID und die Abonnement-ID ab.

  2. Rufen Sie die IAzureUtilizationCollection.Query-Methode auf, um eine ResourceCollection zurückzugeben, die die Auslastungsdatensätze enthält.

  3. Rufen Sie einen Azure-Auslastungsdatensatz auf, um die Auslastungsseiten zu durchlaufen. Dieser Schritt ist erforderlich, da die Ressourcenauflistung ausgelagert wird.

  • Beispiel: Konsolentest-App
  • Projekt: Partner Center SDK-Beispiele
  • Klasse: 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

Das Partner Center Java SDK kann zum Verwalten von Partner Center-Ressourcen verwendet werden. Es handelt sich um ein Open-Source-Projekt, Standard von der Partnercommunity unterstützt und nicht offiziell von Microsoft unterstützt wird. Sie können Hilfe von der Community erhalten oder ein Issue auf GitHub öffnen, wenn ein Problem auftritt.

Um die Azure Utilization Records abzurufen, benötigen Sie zuerst einen Kundenbezeichner und einen Abonnementbezeichner. Rufen Sie dann die IAzureUtilizationCollection.query-Funktion auf, um eine ResourceCollection zurückzugeben, die die Auslastungsdatensätze enthält. Da die Ressourcenauflistung ausgelagert wird, müssen Sie einen Azure-Auslastungsdatensatzenumerator zum Durchlaufen der Auslastungsseiten abrufen.

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

Das Partner Center PowerShell-Modul kann zum Verwalten von Partner Center-Ressourcen verwendet werden. Es handelt sich um ein Open-Source-Projekt, Standard von der Partnercommunity unterstützt und nicht offiziell von Microsoft unterstützt wird. Sie können Hilfe von der Community erhalten oder ein Issue auf GitHub öffnen, wenn ein Problem auftritt.

Um die Azure Utilization Records abzurufen, benötigen Sie zuerst einen Kundenbezeichner und einen Abonnementbezeichner. Anschließend rufen Sie get-PartnerCustomerSubscriptionUtilization auf. Mit diesem Befehl werden alle Datensätze zurückgegeben, die für den angegebenen Zeitraum verfügbar sind.

# $customerId
# $subscriptionId

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

REST-Anforderung

Anforderungssyntax

Methode Anforderungs-URI
GET {Basis-URL}/v1/customers/{Kundenmandanten-ID}/subscriptions/{Abonnement-ID}/utilizations/azure?start_time={Startzeit}&end_time={Endzeit}&granularity={Granularität}&show_details={True}

URI-Parameter

Verwenden Sie die folgenden Pfad- und Abfrageparameter, um die Auslastungsdatensätze abzurufen.

Name Type Erforderlich Beschreibung
customer-tenant-id Zeichenfolge Ja Eine GUID-formatierte Zeichenfolge, die den Kunden identifiziert.
subscription-id Zeichenfolge Ja Eine GUID-formatierte Zeichenfolge, die das Abonnement identifiziert.
start_time Zeichenfolge im UTC-Datum-Uhrzeit-Offsetformat Ja Der Anfang des Zeitraums, der angibt, wann die Auslastung im Abrechnungssystem gemeldet wurde.
end_time Zeichenfolge im UTC-Datum-Uhrzeit-Offsetformat Ja Das Ende des Zeitraums, der angibt, wann die Auslastung im Abrechnungssystem gemeldet wurde.
Granularität Zeichenfolge Nein Definiert die Granularität der Verwendungsaggregationen. Verfügbare Optionen sind: daily (Standard) und hourly.
show_details boolean Nein Gibt an, ob die Verwendungsdetails auf Instanzebene abgerufen werden sollen. Der Standardwert ist true.
Größe Zahl Nein Gibt die Anzahl der von einem einzigen API-Aufruf zurückgegebenen Aggregationen an. Der Standardwert lautet 1000. Die maximale Größe beträgt 1000.

Anforderungsheader

Weitere Informationen finden Sie unter Partner Center-REST-Header.

Anforderungstext

Keine

Beispiel für eine Anfrage

Die folgende Beispielanforderung erzeugt Ergebnisse ähnlich wie die Abstimmungsdatei für den Zeitraum 7/2 - 8/1. Diese Ergebnisse stimmen möglicherweise nicht genau überein (einzelheiten hierzu finden Sie im Abschnitt Azure-Auslastungs-API ).

Diese Beispielanforderung gibt Nutzungsdaten zurück, die im Abrechnungssystem zwischen 7/2 um 12 Uhr (UTC) und 8/2 um 12 Uhr (UTC) gemeldet wurden.

GET https://api.partnercenter.microsoft.com/v1/customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/FC8F8908-F918-4406-AF13-D5BC0FE41865/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: a687bc47-8d08-4b78-aff6-5a59aa2055c2
X-Locale: en-US
Host: api.partnercenter.microsoft.com

REST-Antwort

Bei erfolgreicher Ausführung gibt die Methode eine Sammlung von Azure Utilization Record-Ressourcen im Antworttext zurück. Wenn die Azure-Nutzungsdaten noch nicht in einem abhängigen System bereit sind, gibt diese Methode einen HTTP-Statuscode 204 mit einem Retry-After-Header zurück.

Erfolgs- und Fehlercodes der Antwort

Jede Antwort enthält einen HTTP-Statuscode, der Aufschluss darüber gibt, ob der Vorgang erfolgreich war, sowie ggf. zusätzliche Debuginformationen. Verwenden Sie ein Netzwerkablaufverfolgungstool, um den HTTP-Statuscode, den Fehlercodetyp und zusätzliche Parameter zu lesen.

Beispielantwort

HTTP/1.1 200 OK
Content-Length: 2630
Content-Type: application/json; charset=utf-8
MS-CorrelationId: a687bc47-8d08-4b78-aff6-5a59aa2055c2
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/ab7e2384-eeee-489a-a14f-1eb41ddd261d/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "dbd1aa30-e40d-4436-b465-3a8bc11df027",
          "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/ab7e2384-eeee-489a-a14f-1eb41ddd261d/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "dbd1aa30-e40d-4436-b465-3a8bc11df027",
          "azureStack.Location": "local",
          "azureStack.EventDateTime": "06/05/2017 06:00:00"
        },
        "attributes": {
          "objectType": "AzureUtilizationRecord"
        }
      },

      "links": {
        "self": {
          "uri": "customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/FC8F8908-F918-4406-AF13-D5BC0FE41865/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"
      }
    }
  ]
}