Obtenir les enregistrements d’utilisation d’un client pour Azure

S’applique à : Espace partenaires | Espace partenaires de Microsoft Cloud for US Government

Vous pouvez obtenir les enregistrements d’utilisation de l’abonnement Azure d’un client pendant une période donnée en utilisant l’API Utilisation d’Azure.

Prérequis

  • Informations d’identification, comme décrit dans Authentification auprès de l’Espace partenaires. Ce scénario prend en charge l’authentification avec les informations d’identification d’application autonome et d’application+utilisateur.

  • ID du client (customer-tenant-id). Si vous ne connaissez pas l’ID du client, vous pouvez le rechercher dans l’Espace de partenaires en sélectionnant l’espace de travail Clients, puis le client dans la liste des clients, puis compte. Dans la page Compte du client, recherchez l’ID Microsoft dans la section Informations sur le compte client. L’ID Microsoft est le même que l’ID de client (customer-tenant-id).

  • Identificateur d’abonnement.

Cette API retourne une consommation quotidienne et horaire non évaluée pour un intervalle de temps arbitraire. Toutefois, cette API n’est pas prise en charge pour les plans Azure. Si vous disposez d’un plan Azure, consultez plutôt les articles Obtenir les articles de ligne de consommation non facturés de facture et obtenir les éléments de ligne de consommation facturés par facture. Ces articles décrivent comment obtenir une consommation évaluée à un niveau quotidien par compteur par ressource. Cette consommation de taux équivaut aux données de grain quotidiennes fournies par l’API d’utilisation Azure. Vous devez utiliser l’identificateur de facture pour récupérer les données d’utilisation facturées. Vous pouvez également utiliser les périodes actuelles et précédentes pour obtenir des estimations d’utilisation non facturées. Les données de grain horaire et les filtres de plage de dates arbitraires ne sont actuellement pas pris en charge pour les ressources d’abonnement de plan Azure.

API d’utilisation d’Azure

Cette API d’utilisation Azure permet d’accéder aux enregistrements d’utilisation pendant une période qui représente le moment où l’utilisation a été signalée dans le système de facturation. Il fournit l’accès aux mêmes données d’utilisation utilisées pour créer et calculer le fichier de rapprochement. Toutefois, il n’a pas connaissance de la logique du fichier de rapprochement du système de facturation. Vous ne devez pas vous attendre à ce que les résultats du résumé du fichier de rapprochement correspondent exactement au résultat récupéré à partir de cette API pendant la même période.

Par exemple, le système de facturation prend les mêmes données d’utilisation et applique des règles de latence pour déterminer ce qui est pris en compte dans un fichier de rapprochement. Lorsqu’une période de facturation se ferme, toutes les utilisations jusqu’à la fin du jour où la période de facturation se termine sont incluses dans le fichier de rapprochement. Toute utilisation tardive dans la période de facturation signalée dans les 24 heures suivant la fin de la période de facturation est prise en compte dans le fichier de rapprochement suivant. Pour connaître les règles de latence de facturation du partenaire, consultez Obtenir des données de consommation pour un abonnement Azure.

Cette API REST est paginée. Si la charge utile de réponse est supérieure à une seule page, vous devez suivre le lien suivant pour obtenir la page suivante des enregistrements d’utilisation.

Scénario : Le partenaire A a transféré la propriété de facturation de l’abonnement Hérité Azure (145P) au partenaire B

Si un partenaire transfère la propriété de facturation d’un abonnement hérité Azure à un autre partenaire, lorsque le nouveau partenaire appelle l’API d’utilisation pour l’abonnement transféré, il doit utiliser l’ID d’abonnement Commerce (qui apparaît dans son compte Espace partenaires) plutôt que l’ID de droit Azure. L’ID de droit Azure s’affiche pour le partenaire B uniquement lorsqu’il est Administration au nom de (AOBO) au Portail Azure du client.

Pour appeler l’API Utilisation de l’abonnement transféré, le nouveau partenaire doit utiliser l’ID d’abonnement Commerce.

C#

Pour obtenir les enregistrements d’utilisation Azure :

  1. Obtenez l’ID client et l’ID d’abonnement.

  2. Appelez la méthode IAzureUtilizationCollection.Query pour renvoyer un ResourceCollection qui contient les enregistrements d’utilisation.

  3. Obtenez un énumérateur d’enregistrement d’utilisation Azure pour parcourir les pages d’utilisation. Cette étape est requise, car la collection de ressources est paginée.

  • Exemple : Application de test console
  • Projet : Exemples du Kit de développement logiciel (SDK) de l’Espace partenaires
  • Classe : 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

Le Kit de développement logiciel (SDK) Java de l’Espace partenaires peut être utilisé pour gérer les ressources de l’Espace partenaires. Il s’agit d’un projet open source géré par la communauté partenaire et non officiellement pris en charge par Microsoft. Si vous rencontrez un problème, vous pouvez obtenir de l’aide auprès de la communauté ou le signaler dans GitHub.

Pour obtenir les enregistrements d’utilisation Azure, vous avez d’abord besoin d’un identificateur client et d’un identificateur d’abonnement. Vous appellerez ensuite la fonction IAzureUtilizationCollection.query pour renvoyer un élément ResourceCollection contenant les enregistrements d’utilisation. La collection de ressources étant paginée, vous devrez alors récupérer un énumérateur d’enregistrements d’utilisation Azure pour parcourir ces pages.

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

Le module PowerShell de l’Espace partenaires peut être utilisé pour gérer les ressources de l’Espace partenaires. Il s’agit d’un projet open source géré par la communauté partenaire et non officiellement pris en charge par Microsoft. Si vous rencontrez un problème, vous pouvez obtenir de l’aide auprès de la communauté ou le signaler dans GitHub.

Pour obtenir les enregistrements d’utilisation Azure, vous avez d’abord besoin d’un identificateur client et d’un identificateur d’abonnement. Vous appelez ensuite Get-PartnerCustomerSubscriptionUtilization. Cette commande retourne tous les enregistrements disponibles pour la période spécifiée.

# $customerId
# $subscriptionId

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

Demande REST

Syntaxe de la requête

Méthode URI de demande
GET {URL-base}/v1/customers/{id-locataire-client}/subscriptions/{id-abonnement}/utilizations/azure?start_time={heure-début}&end_time={heure-fin}&granularity={granularité}&show_details={True}

Paramètres d’URI

Utilisez le chemin d’accès et les paramètres de requête suivants pour obtenir les enregistrements d’utilisation.

Nom Type Requise Description
customer-tenant-id string Oui Chaîne au format GUID qui identifie le client.
subscription-id string Oui Chaîne au format GUID qui identifie l’abonnement.
start_time chaîne au format de décalage de date/heure UTC Oui Début de l’intervalle de temps qui représente le moment où l’utilisation a été signalée dans le système de facturation.
end_time chaîne au format de décalage de date/heure UTC Oui Fin de l’intervalle de temps qui représente le moment où l’utilisation a été signalée dans le système de facturation.
granularité string Non Granularité des agrégations d’utilisation. Les options disponibles sont les suivantes : daily (par défaut) et hourly.
show_details booléen Non Indique s’il faut récupérer les détails d’utilisation au niveau de l’instance. Par défaut, il s’agit de true.
size nombre Non Nombre d’agrégations retournées par un seul appel d’API. La valeur par défaut est 1000. La valeur maximale est de 1 000.

En-têtes de requête

Pour plus d’informations, consultez En-têtes REST de l’Espace Partenaires.

Corps de demande

Aucun

Exemple de requête

L’exemple de requête suivant génère des résultats similaires à ce que le fichier de rapprochement affichera pour la période 7/2 - 8/1. Ces résultats peuvent ne pas correspondre exactement (consultez la section API d’utilisation d’Azure pour plus d’informations).

Cet exemple de requête retourne les données d’utilisation signalées dans le système de facturation entre 7/2 à 12 h (UTC) et 8/2 à 12 h (UTC).

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

Réponse REST

Si elle réussit, cette méthode retourne une collection de ressources Azure Utilization Record dans le corps de la réponse. Si les données d’utilisation d’Azure ne sont pas encore prêtes dans un système dépendant, cette méthode retourne un code d’état HTTP 204 avec un en-tête Retry-After.

Codes d’erreur et de réussite de la réponse

Chaque réponse est accompagnée d’un code d’état HTTP qui indique la réussite ou l’échec ainsi que des informations de débogage supplémentaires. Utilisez un outil de suivi réseau pour lire le code d’état HTTP, le type de code d’erreur et les paramètres supplémentaires.

Exemple de réponse

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