次の方法で共有


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

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

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

[前提条件]

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

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

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

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

Azure Utilization API

この Azure 使用率 API は、課金システムで使用率が報告された時点を表す期間の使用率レコードへのアクセスを提供します。 これにより、調整ファイルの作成および計算に使用されるのと同じ使用率データにアクセスできます。 ただし、請求システム調整ファイル・ロジックに関する知識はありません。 調整ファイルのサマリー結果が、このAPIから取得された結果とまったく同じ期間に一致することは期待しないでください。

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

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

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

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

転送されたサブスクリプションの Utilization API を正常に呼び出すには、新しいパートナーが Commerce サブスクリプション 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 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 リクエスト
取得 {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/utilizations/azure?start_time={開始時間}&end_time={終了時間}&granularity={粒度}&show_details={True}

URI パラメーター

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

名前 タイプ 必須 説明
カスタマー・テナントID (customer-tenant-id) ひも イエス 顧客を識別する GUID 形式の文字列。
サブスクリプションID ひも イエス サブスクリプションを識別する GUID 形式の文字列。
開始時間 UTC 日付/時刻オフセット形式の文字列 イエス 課金システムで使用率が報告された日時を表す時間範囲の開始。
end_time UTC 日付/時刻オフセット形式の文字列 イエス 課金システムで使用率が報告された日時を表す時間範囲の終了。
粒 度 ひも いいえ 使用状況集計の粒度を定義します。 使用可能なオプションは、 daily (デフォルト) と hourly です。
show_details ブーリアン いいえ インスタンスレベルの使用状況の詳細を取得するかどうかを指定します。 既定値は trueです。
サイズ いいえ 1 回の API 呼び出しで返される集計の数を指定します。 既定値は 1000 です。 最大は 1000 です。

要求ヘッダー

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

リクエストの本文

無し

要求の例

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

この要求の例では、7/2 AM12 (UTC) から8/2 AM12 (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 応答

成功した場合、このメソッドは応答本文で Azure 使用率レコード リソースのコレクションを返します。 依存システムで Azure 使用率データがまだ準備ができていない場合、このメソッドは HTTP ステータス コード 204 と Retry-After ヘッダーを返します。

応答の成功とエラー コード

各応答には、成功または失敗を示す HTTP ステータス コードと、追加のデバッグ情報が付属しています。 ネットワークトレースツールを使用して、HTTPステータスコード、 エラーコードタイプ、および追加のパラメータを読み取ります。

応答の例

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