必要に応じて小規模なコスト データセットを取得する

Cost Details API を使用して、Azure の請求書に対応する未加工の集計されていないコスト データを取得します。 この API は、組織がプログラムによるデータの取得ソリューションを必要とする場合に役立ちます。 2 GB (200 万行) 以下の小規模なコスト データ セットを分析する場合は、API の使用を検討してください。 ただし、進行中のデータ インジェスト ワークロードや大規模なデータセットのダウンロードには、エクスポートを使用する必要があります。

エクスポートされたデータを大量かつ定期的に取得する場合には、「エクスポートを使用してサイズの大きなコスト データセットを繰り返し取得する」を参照してください。

コスト詳細 (旧称は "使用状況詳細") のデータに関する詳細情報については、「コスト詳細データを取り込む」を参照してください。

コスト詳細レポートは、Enterprise Agreement または Microsoft 顧客契約を結んでいるお客様のみが使用できます。 MSDN、従量課金制、または Visual Studio のお客様の場合は、「従量課金制サブスクリプションのコスト詳細を取得する」を参照してください。

アクセス許可

Cost Details API を使用するには、サポートされている機能とスコープの読み取り専用アクセス許可が必要です。

注意

コストの詳細 API では、EA または MCA のお客様の管理グループはサポートされていません。

詳細については、次を参照してください。

Cost Details API のベスト プラクティス

Cost Details API を使用する場合は、次のベスト プラクティスをお勧めします。

要求のスケジュール

最新のコスト データを取得する場合は、多くても 1 日に 1 回クエリを実行することをお勧めします。 レポートは 4 時間ごとに更新されます。 より頻繁に呼び出した場合、同じデータを受信します。 過去の請求書のコスト データをダウンロードした後は、明示的に通知されない限り料金は変わりません。 同じデータを繰り返し呼び出すことを防ぐために、お客様の側でクエリ可能なストアにコスト データをキャッシュすることをお勧めします。

要求をチャンクにする

呼び出しを小さな日付範囲のチャンクにして、ネットワーク経由でダウンロード可能なファイルをより管理しやすくします。 たとえば、月単位で大きな Azure コスト ファイルを扱う場合は、日単位または週単位でチャンクにすることをお勧めします。 大量のコスト データ (課金アカウントなど) を含むスコープがある場合は、子スコープに対して複数の呼び出しを行って、ダウンロード可能なファイルをより管理しやすくする方法を検討してください。 Azure Cost Management のスコープの詳細については、「スコープを理解して使用する」を参照してください。 データをダウンロードした後、Excel で、フィルターやピボット テーブルを使用してデータを詳細に分析します。

データセットが月単位で 2 GB (約 200 万行) を超える場合は、よりスケーラブルなソリューションとしてエクスポートの使用を検討してください。

待機時間とレート制限

API への必要に応じた呼び出しは、レート制限されます。 コスト詳細ファイルの生成にかかる時間は、ファイル内のデータの量と直接相関しています。 ファイルがダウンロード可能になるまでの予想時間を把握するために、API 応答の retry-after ヘッダーを使用できます。

サポートされているデータセットの時間範囲

Cost Details API では、レポートごとに 1 か月の最大データ セット時間範囲がサポートされます。 現在の日付までの最大 13 か月分の履歴データを取得できます。 13 か月分の履歴データセットをシードする場合は、過去 13 か月分について、1 か月のデータセットで 13 回の呼び出しを行うことをお勧めします。 13 か月より前の履歴データを取得するには、Exports REST API を使います。

Cost Details API に対する要求の例

次の要求の例は、Microsoft のお客様が一般的なシナリオに対処するために使用されています。 要求によって返されるデータは、コストが課金システムによって受信された日付に対応します。 これには、複数の請求書のコストが含まれている場合があります。 これは、非同期 API です。 そのため、最初の呼び出しを行ってレポートを要求し、応答ヘッダーでポーリング リンクを受信します。 そこから、レポートが使用可能になるまで、提供されたリンクをポーリングできます。

API 応答の retry-after ヘッダーを使用して、次に API をポーリングするタイミングを指定します。 ヘッダーでは、レポートの生成にかかる推定最小時間が指定されます。

API コントラクトの詳細については、Cost Details API に関するページを参照してください。

実際コストと償却コスト

実際コスト レポートと償却コスト レポートのどちらを表示するかを制御するには、最初の要求本文でメトリック フィールドに使用される値を変更します。 使用可能なメトリック値は ActualCost または AmortizedCost です。

償却コストでは、予約購入が日単位に分割されて、予約期間全体に分配されます。 たとえば、1 月 1 日に 365 ドルで購入したのではなく、1 月 1 日から 12 月 31 日までの毎日 1.00 ドルずつ購入したように表示されます。 基本の償却に加えて、これらのコストは、予約を使用した特定のリソースを使用して、再割り当てされて関連付けられます。 たとえば、1 日あたり 1.00 ドルの料金が 2 つの仮想マシン間で分割された場合、その日には 2 つの 0.50 ドルの料金が表示されます。 予約の一部がその日に利用されていない場合、該当する仮想マシンに関連付けられた 0.50 ドルの料金が 1 つ表示され、もう 1 つの 0.50 ドルの料金には料金種類 UnusedReservation が表示されます。 未使用予約コストは償却コストを表示するときにだけ表示されます。

コスト表示方法の変更のため、実際コストおよび償却コストのビューでは表示される合計の値が異なることに注意することが重要です。 一般に、時間の経過に伴う予約購入の毎月の合計コストは、償却コストを表示するときには減少します。 予約購入後の月にはコストが増加します。 償却は予約購入でのみ使用でき、現在は Azure Marketplace での購入には適用されません。

レポートを作成するための最初の要求

POST https://management.azure.com/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2022-05-01

要求本文:

指定された日付範囲に対する ActualCost データセットの要求の例を次に示します。

{
  "metric": "ActualCost",
  "timePeriod": {
    "start": "2020-03-01",
    "end": "2020-03-15"
  }
}

適切な URI を作成するための使用可能な {scope} オプションについては、「スコープのリソース ID を特定する」で取り上げられています。

レポート要求本文で指定できる使用可能なフィールドを次に示します。

  • metric - 要求されるレポートの種類。 ActualCost または AmortizedCost のいずれかを指定できます。 不要。 フィールドが指定されていない場合、API は既定で ActualCost レポートに設定されます。
  • timePeriod - データに対して要求される日付範囲。 不要。 このパラメーターを invoiceId または billingPeriod パラメーターと共に使用することはできません。 要求本文で timePeriod、invoiceId、または billingPeriod のいずれのパラメータも指定されていない場合、API では現在の月のコストを返します。
  • invoiceId - データに対して要求される請求書。 このパラメータは、Microsoft 顧客契約のお客様のみが使用します。 さらに、課金プロファイルまたは顧客スコープでのみ使用できます。 このパラメーターを billingPeriod または timePeriod パラメーターと共に使用することはできません。 要求本文で timePeriod、invoiceId、または billingPeriod のいずれのパラメータも指定されていない場合、API では現在の月のコストを返します。
  • billingPeriod - データに対して要求される請求期間。 このパラメータは、Enterprise Agreement のお客様のみが使用します。 YearMonth 形式を使用します。 たとえば、202008 です。 このパラメーターを invoiceId または timePeriod パラメーターと共に使用することはできません。 要求本文で timePeriod、invoiceId、または billingPeriod のいずれのパラメータも指定されていない場合、API では現在の月のコストを返します。

API 応答:

Response Status: 202 – Accepted: 要求が受け入れられたことを示します。 Location ヘッダーを使用して状態を確認します。

応答ヘッダー:

名前 種類 Format 説明
場所 String 非同期操作の結果を確認する URL。
Retry-After Integer Int32 レポートの生成にかかる予想時間。 この期間が経過するまで待機してから、もう一度ポーリングします。

レポートのポーリングとダウンロード

コスト詳細レポートの作成を要求したら、API 応答の location ヘッダーで指定されたエンドポイントを使用して、レポートをポーリングします。 ポーリング要求の例を次に示します。

レポートのポーリング要求:

GET https://management.azure.com/{scope}/providers/Microsoft.CostManagement/costDetailsOperationStatus/{operationId}?api-version=2022-05-01

Response Status 200 – Succeeded: 要求が正常に処理されたことを示します。

{
  "id": "subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.CostManagement/operationResults/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
  "name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
  "status": "Completed",
  "manifest": {
    "manifestVersion": "2022-05-01",
    "dataFormat": "Csv",
    "blobCount": 1,
    "byteCount": 160769,
    "compressData": false,
    "requestContext": {
      "requestScope": "subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
      "requestBody": {
        "metric": "ActualCost",
        "timePeriod": {
          "start": "2020-03-01",
          "end": "2020-03-15"
        }
      }
    },
    "blobs": [
      {
        "blobLink": "{downloadLink}",
        "byteCount": 32741
      }
    ]
  },
  "validTill": "2022-05-10T08:08:46.1973252Z"
}

API 応答の主要なフィールドの概要を次に示します。

  • manifestVersion - 応答で使用されるマニフェスト コントラクトのバージョン。 現時点では、マニフェストのバージョンは、ある特定の API バージョンでは同じままです。
  • dataFormat - CSV は、現時点で API によって提供される唯一のサポートされているファイル形式です。
  • blobCount - レポート データセットに存在する個々のデータ BLOB の数を表します。 この API は、応答で複数のファイルのパーティション分割されたデータセットを提供する可能性があることに注意してください。 パーティション分割されたファイルを適切に処理できるようにデータ パイプラインを設計します。 パーティション分割を使用すると、大規模なデータセットをより迅速に移動させて取り込むことができます。
  • byteCount - すべてのパーティションにわたるレポート データセットの合計バイト数。
  • compressData - 圧縮は、最初のリリースでは常に false に設定されます。 ただし、その後では、API は圧縮をサポートします。
  • requestContext - レポートに対して要求される初期構成。
  • blobs - レポート全体の構成要素である n 個の BLOB ファイルの一覧。
    • blobLink - 個々の BLOB パーティションのダウンロード URL。
    • byteCount - 個々の BLOB パーティションのバイト数。
  • validTill - レポートにアクセスできなくなった日付。