Obtener registros de uso de un cliente para Azure

Se aplica a: Centro de partners | Centro de partners para Microsoft Cloud for US Government

Puede obtener los registros de uso de la suscripción de Azure de un cliente durante un período de tiempo especificado mediante la API de uso de Azure.

Requisitos previos

  • Credenciales tal como se describen en el artículo Autenticación del Centro de partners. Este escenario admite la autenticación con credenciales de aplicación independiente y App+User.

  • Un id. de cliente (customer-tenant-id). Si no conoce el identificador del cliente, puede buscarlo en el Centro de partners seleccionando el área de trabajo Clientes , luego el cliente de la lista de clientes y, a continuación , Cuenta. En la página Cuenta del cliente, busque el identificador de Microsoft en la sección Información de la cuenta de cliente. El id. de Microsoft es el mismo que el de cliente (customer-tenant-id).

  • Identificador de suscripción.

Esta API devuelve el consumo diario y por hora sin clasificar para un intervalo de tiempo arbitrario. Sin embargo, esta API no es compatible con los planes de Azure. Si tiene un plan de Azure, consulte los artículos Obtención de los elementos de línea de consumo sin facturar y Obtención de los elementos de línea de consumo facturados en su lugar. En estos artículos se describe cómo obtener el consumo clasificado en un nivel diario por medidor por recurso. Este consumo de velocidad es equivalente a los datos detallados diarios proporcionados por la API de uso de Azure. Deberá usar el identificador de factura para recuperar los datos de uso facturados. O bien, puede usar períodos actuales y anteriores para obtener estimaciones de uso no facturadas. Actualmente no se admiten datos detallados por horas ni filtros de intervalo de fechas arbitrarios para los recursos de suscripción del plan de Azure.

API Azure Utilization

Esta API de uso de Azure proporciona acceso a los registros de uso durante un período de tiempo que representa cuándo se notificó el uso en el sistema de facturación. Proporciona acceso a los mismos datos de uso que se usan para crear y calcular el archivo de conciliación. Sin embargo, no tiene conocimiento de la lógica del archivo de conciliación del sistema de facturación. No debe esperar que los resultados del resumen del archivo de conciliación coincidan con el resultado recuperado de esta API exactamente durante el mismo período de tiempo.

Por ejemplo, el sistema de facturación toma los mismos datos de uso y aplica reglas de latencia para determinar lo que se tiene en cuenta en un archivo de conciliación. Cuando se cierra un período de facturación, todo el uso hasta el final del día en que finaliza el período de facturación se incluye en el archivo de conciliación. Cualquier uso retrasado dentro del período de facturación que se notifique en un plazo de 24 horas después de que finalice el período de facturación se contabiliza en el siguiente archivo de conciliación. Para conocer las reglas de latencia de cómo se factura al asociado, consulte Obtención de datos de consumo para una suscripción de Azure.

Esta API REST está paginada. Si la carga de respuesta es mayor que una sola página, debe seguir el vínculo siguiente para obtener la siguiente página de registros de uso.

Escenario: El asociado A ha transferido la propiedad de facturación de la suscripción heredada de Azure (145P) al asociado B

Si un asociado transfiere la propiedad de facturación de una suscripción heredada de Azure a otro asociado, cuando el nuevo asociado llama a la API de uso de la suscripción transferida, tiene que usar el identificador de suscripción comercial (que se muestra en su cuenta del Centro de partners) en lugar del identificador de derecho de Azure. El identificador de derecho de Azure solo aparece para el partner B cuando se Administración en nombre de (AOBO) en Azure Portal del cliente.

Para llamar correctamente a la API de uso para la suscripción transferida, el nuevo asociado debe usar el identificador de suscripción de Comercio.

C#

Para obtener los registros de uso de Azure:

  1. Obtenga el identificador de cliente y el identificador de suscripción.

  2. Llame al método IAzureUtilizationCollection.Query para devolver una resourceCollection que contiene los registros de uso.

  3. Obtenga un enumerador de registros de uso de Azure para recorrer las páginas de uso. Este paso es necesario, ya que la colección de recursos está paginada.

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

El SDK de Java del Centro de partners se puede usar para administrar los recursos del Centro de partners. Es un proyecto de código abierto mantenido por la comunidad de partners y no es compatible oficialmente con Microsoft. Puedes obtener ayuda de la comunidad o abrir una incidencia en GitHub si se produce un problema.

Para obtener los registros de uso de Azure, primero necesita un identificador de cliente y un identificador de suscripción. Luego, debe llamar a la función IAzureUtilizationCollection.query para que se devuelva un objeto ResourceCollection que contenga los registros de uso. Debido a que la colección de recursos está paginada, debe obtener un enumerador de registros de uso de Azure para recorrer las páginas de uso.

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

El módulo de PowerShell del Centro de partners se puede usar para administrar los recursos del Centro de partners. Es un proyecto de código abierto mantenido por la comunidad de partners y no es compatible oficialmente con Microsoft. Puedes obtener ayuda de la comunidad o abrir una incidencia en GitHub si se produce un problema.

Para obtener los registros de uso de Azure, primero necesita un identificador de cliente y un identificador de suscripción. A continuación, llame a Get-PartnerCustomerSubscriptionUtilization. Este comando devolverá todos los registros disponibles durante el período de tiempo especificado.

# $customerId
# $subscriptionId

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

Solicitud REST

Sintaxis de la solicitud

Método URI de solicitud
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}

Parámetros del identificador URI

Use la siguiente ruta de acceso y parámetros de consulta para obtener los registros de uso.

Nombre Type Obligatorio Descripción
customer-tenant-id string Cadena con formato de GUID que identifica al cliente.
subscription-id string Cadena con formato de GUID que identifica la suscripción.
start_time cadena en formato de desplazamiento de fecha y hora UTC Inicio del intervalo de tiempo que representa cuándo se notificó el uso en el sistema de facturación.
end_time cadena en formato de desplazamiento de fecha y hora UTC El final del intervalo de tiempo que representa cuándo se notificó el uso en el sistema de facturación.
granularidad string No Define la granularidad de las agregaciones de uso. Las opciones disponibles son: daily (valor predeterminado) y hourly.
show_details boolean No Especifica si se van a obtener los detalles de uso a nivel de instancia. El valor predeterminado es true.
size number No Especifica el número de agregaciones que devuelve una sola llamada de API. El valor predeterminado es 1000. El máximo es 1000.

Encabezados de solicitud

Para obtener más información, consulta Encabezados REST del Centro de partners.

Cuerpo de la solicitud

None

Ejemplo de solicitud

La solicitud de ejemplo siguiente genera resultados similares a los que mostrará el archivo de conciliación durante el período 7/2 - 8/1. Estos resultados podrían no coincidir exactamente (consulte la sección API de uso de Azure para obtener más información).

Esta solicitud de ejemplo devuelve los datos de uso notificados en el sistema de facturación entre las 7/2 a las 12:00 (UTC) y las 8/2 a las 12:00 (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

Respuesta REST

Si se ejecuta correctamente, este método devuelve una colección de recursos de registro de uso de Azure en el cuerpo de la respuesta. Si los datos de uso de Azure aún no están listos en un sistema dependiente, este método devuelve un código de estado HTTP 204 con un encabezado Retry-After.

Códigos de error y de respuesta correctos

Cada respuesta incluye un código de estado HTTP que indica si la operación se ha realizado correctamente o con errores y proporciona información de depuración adicional. Use una herramienta de seguimiento de red para leer el código de estado HTTP, el tipo de código de error y parámetros adicionales.

Ejemplo de respuesta

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