Azure に関する顧客の使用率レコードを取得する

適用対象: パートナー センター | Microsoft Cloud for US Government のパートナー センター

Azure 使用率 API を使用して、指定した期間について顧客の Azure サブスクリプションの使用率レコードを取得できます。

前提条件

  • パートナー センターの認証に関するページで説明している資格情報。 このシナリオでは、スタンドアロン アプリと App+User の両方の資格情報を使用した認証がサポートされます。

  • 顧客 ID です (customer-tenant-id)。 顧客の ID がわからない場合は、[顧客] ワークスペースを選択し、顧客の一覧から顧客を選択し、[アカウント] を選択して、パートナー センター検索できます。 顧客の [アカウント] ページで、[顧客アカウント情報] セクションで Microsoft ID をします。 Microsoft ID は、顧客 ID (customer-tenant-id) と同じです。

  • サブスクリプション識別子。

この API は、任意の期間の日単位と時間単位の非評価の消費量を返します。 ただし、 この API は Azure プランではサポートされていません。 Azure プランをお持ちの場合は、「請求書未請求消費明細を取得する」および「請求書請求消費明細を取得する」の記事を参照してください。 これらの記事では、リソースごとにメーターごとに 1 日のレベルで評価消費量を取得する方法について説明します。 このレートの消費量は、Azure 使用率 API によって提供される日単位のグレイン データと同じです。 請求書識別子を使用して、課金された使用状況データを取得する必要があります。 または、現在と以前の期間を使用して、未請求の使用量の見積もりを取得できます。 Azure プランのサブスクリプション リソースでは、時間単位のグレイン データと任意の日付範囲フィルターは現在サポートされていません。

Azure Utilization API

この Azure 使用率 API は、課金システムで使用状況が報告された日時を表す期間の使用状況レコードへのアクセスを提供します。 調整ファイルの作成と計算に使用されるのと同じ使用率データにアクセスできます。 ただし、課金システムの調整ファイル ロジックに関する知識はありません。 調整ファイルの概要の結果が、この API から取得した結果と同じ期間に正確に一致することは想定しないでください。

たとえば、課金システムは同じ使用率データを受け取り、遅延ルールを適用して調整ファイルで何が考慮されているかを判断します。 請求期間が終了すると、請求期間が終了する日の終わりまでのすべての使用量が調整ファイルに含まれます。 請求期間が終了してから 24 時間以内に報告される請求期間内の遅延使用量は、次の調整ファイルで考慮されます。 パートナーの請求方法の遅延ルールについては、「Azure サブスクリプションの消費データを取得する」を参照してください

この REST API はページングされます。 応答ペイロードが 1 ページより大きい場合は、次のリンクに従って使用率レコードの次のページを取得する必要があります。

シナリオ: パートナー A が Azure レガシ サブスクリプション (145P) の課金所有権をパートナー B に譲渡しました

パートナーが Azure レガシ サブスクリプションの課金所有権を別のパートナーに譲渡する場合、新しいパートナーが譲渡されたサブスクリプションに対して Utilization API を呼び出すときは、Azure エンタイトルメント ID ではなくコマース サブスクリプション ID (パートナー センター アカウントに表示されます) を使用する必要があります。 Azure エンタイトルメント ID は、パートナー B が顧客の Azure portal に代わって (AOBO) に管理されている場合にのみ表示されます。

譲渡されたサブスクリプションの Utilization API を正常に呼び出すには、新しいパートナーがコマース サブスクリプション ID を使用する必要があります。

C#

Azure 使用率レコードを取得するには:

  1. 顧客 ID とサブスクリプション ID を取得します。

  2. IAzureUtilizationCollection.Query メソッドを呼び出して、使用率レコードを含む ResourceCollection を返します。

  3. Azure 使用率レコード列挙子を取得して、使用率ページを走査します。 リソース コレクションがページングされるため、この手順が必要です。

// 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 を使用して、パートナー センター リソースを管理できます。 これは、パートナー コミュニティによってメインされ、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
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 パラメーター

使用率レコードを取得するには、次のパスとクエリ パラメーターを使用します。

名前 タイプ Required 説明
customer-tenant-id string はい 顧客を識別する GUID 形式の文字列。
subscription-id string はい サブスクリプションを識別する GUID 形式の文字列。
start_time UTC 日時オフセット形式の文字列 はい 課金システムで使用状況が報告された日時を表す時間範囲の開始。
end_time UTC 日時オフセット形式の文字列 はい 課金システムで使用状況が報告された日時を表す時間範囲の終わり。
粒度 (granularity) string いいえ 使用状況の集計の粒度を定義します。 使用可能なオプション: daily (既定) と hourly.
show_details boolean いいえ インスタンス レベルの使用状況の詳細を取得するかどうかを指定します。 既定値は、true です。
size 数値 いいえ 1 回の API 呼び出しで返される集計の数を指定します。 既定値は 1000 です。 最大値は 1000 です。

要求ヘッダー

詳細については、「パートナー センター REST ヘッダー」を参照してください。

要求本文

なし

要求の例

次の要求例では、7/2 から 8/1 の期間の調整ファイルに表示される結果と同様の結果が生成されます。 これらの結果が正確に一致しない場合があります (詳細については、「Azure 使用率 API」セクションを参照してください)。

この要求例では、7/2 (UTC) 午前 12 時 (UTC) から午前 12 時 (UTC) 8/2 の間に、課金システムで報告された使用率データが返されます。

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 応答

成功した場合、このメソッドは応答本文で 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: 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"
      }
    }
  ]
}