Cost Management の自動化を使用して、コスト データの取得と管理を行う一連のカスタム ソリューションをビルドすることができます。 この記事では、Cost Management の自動化の一般的なシナリオと状況に基づいて使用できるオプションについて説明します。 API を使用して開発する場合に、開発プロセスの時間を短縮するために役立つ一般的な API 要求の例を紹介します。
オフライン分析のためのコスト データの取得を自動化する
ご自分の Azure コスト データをダウンロードし、それを他のデータ セットとマージすることが必要になる場合があります。 また、コスト データを自身のシステムに統合することが必要になる場合もあります。 関連するデータ量に応じて使用できるさまざまなオプションがあります。 どのような場合でも、API とツールを使用するには、適切なスコープでの Cost Management へのアクセス許可が必要です。 詳細については、データへのアクセスの割り当てに関するページを参照してください。
大規模なデータ セットの処理に関する推奨事項
組織が多数のリソースまたはサブスクリプションにわたって大規模な Azure プレゼンスを持っている場合は、大量の使用状況の詳細データの結果が得られます。 多くの場合、Excel では、このような大きなファイルを読み込むことはできません。 このような場合、次のオプションをお勧めします。
Power BI
Power BI は、大量のデータの取り込みと処理に使用されます。 マイクロソフトエンタープライズ契約のお客様の場合、Power BI テンプレート アプリを使用して、ご使用の課金アカウントのコストを分析することができます。 レポートには、お客様が使用される主要なビューが含まれます。 詳細については、Power BI テンプレート アプリを使用して Azure のコストを分析する方法に関するページを参照してください。
Power BI データ コネクタ
データを毎日分析する必要がある場合、Power BI データ コネクタを使用して詳細な分析のためのデータを取得することをお勧めします。 コネクタは、より多くのコストが発生するため、レポートを最新の状態に保ちます。
Cost Management のエクスポート
データを毎日分析する必要がない場合もあります。 その場合は、Cost Management のエクスポート機能を使用して、Azure Storage アカウントへのデータのエクスポートをスケジュールすることを検討してください。 その後、必要に応じてデータを Power BI に読み込むか、ファイルが十分に小さい場合は Excel でデータを分析できます。 エクスポートは Azure portal でご使用いただけます。また、Exports API を使用してエクスポートを構成することもできます。
コストの詳細 API
小規模なコスト データ セットがある場合は、 Cost Details API の使用を検討してください。 推奨されているベスト プラクティスを次に示します。
- 最新のコスト データを取得する場合は、多くても 1 日に 1 回クエリを実行することをお勧めします。 レポートは 4 時間ごとに更新されます。 より頻繁に呼び出した場合、同じデータを受信します。
- 過去の請求書のコスト データをダウンロードすると、明示的に通知されない限り、料金は変更されません。 同じデータを繰り返し呼び出さないように、クエリ可能なストアにコスト データをキャッシュすることをお勧めします。
- 呼び出しを小さな日付範囲のチャンクにして、ダウンロード可能なファイルをより管理しやすくします。 たとえば、月単位で大きな Azure 利用状況ファイルを扱う場合は、日単位または週単位でチャンクにすることをお勧めします。
- コスト データの量が多いスコープ (課金アカウントなど) がある場合は、ダウンロードできる管理しやすいファイルを取得できるように、子スコープを複数呼び出して配置することを検討してください。
- データセットが月単位で 2 GB を超える場合は、よりスケーラブルなソリューションとしてエクスポートの使用を検討してください。
Cost Details API を使用して取得を自動化する
Cost Details API は、Enterprise Agreement (EA) または Microsoft Customer Agreement (MCA) の課金アカウントの詳細な未集計のコスト データをプログラムで生成してダウンロードするためのケーブルです。 従来の Usage Details API とは異なり、Cost Details API は非同期でレポートベースです。レポートを生成する要求を送信し、その完了をポーリングしてから、結果のファイルをセキュリティで保護された URL からダウンロードします。
Von Bedeutung
Cost Details API は、Enterprise Agreement (EA) または Microsoft Customer Agreement (MCA) スコープでのみサポートされます。 その他の種類のアカウントについては、エクスポートの使用をお勧めします。 小規模なデータセットをダウンロードする必要があり、Azure Storage を使用しない場合は、Consumption Usage Details API を使用することもできます。 これを行う方法については、こちらを参照してください。
Cost Details API のしくみ
- レポートの作成: スコープ、日付範囲、オプションのフィルター (メーター、リソース、タグなど) を指定して、Cost Details API に POST 要求を送信します。
- 状態のポーリング: API は操作 ID を返します。 レポートが完了するまで、動作状態エンドポイントをポーリングします。
- レポートをダウンロードする: レポートの準備ができたら、API はコスト データを含む CSV ファイルの安全なダウンロード URL を提供します。 ダウンロード リンクは期間限定で有効です。
詳細については、 必要に応じて小規模な使用状況データセットを取得する 方法と Cost Details API リファレンスを参照してください。
例: コスト詳細レポートを生成してダウンロードする
Cost Details API を使用してコストの詳細を取得するには、次の手順に従います。
手順 1: レポートを作成する
POST 要求を送信してレポートの生成を開始します。 {scope}
を課金アカウントまたはプロファイルスコープに置き換えてください。
POST https://management.azure.com/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2025-03-01
Content-Type: application/json
{
"metric": "ActualCost",
"timePeriod": {
"start": "2025-03-01",
"end": "2025-03-15"
}
}
応答には、手順 2 で使用するポーリング リンクを含む Location
ヘッダーが応答に含まれています。
手順 2: 状態をポーリングする
ポーリング リンクを使用して、レポート生成の状態を確認します。
GET https://management.azure.com/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport/{operationId}?api-version=2025-03-01
レポートの準備ができたら、応答に blobLink
プロパティが含まれます。
手順 3: レポートをダウンロードする
blobLink
を使用して、コストの詳細を含む CSV ファイルをダウンロードします。
注
Cost Details API は非同期です。 /generateCostDetailsReport
に対する GET 要求では、コストの詳細を直接取得することはできません。 上記のレポート生成ワークフローを常に使用してください。 詳細については、 Cost Details API のドキュメントを参照してください。
Cost Details API を使用するためのベスト プラクティス
- 要求頻度: 特定のスコープと日付範囲に対して、レポートを 1 日に 1 回だけ生成することをお勧めします。 コスト データは 4 時間ごとに更新されますが、要求の頻度が高いほど同じデータが返され、調整される可能性があります。
- 日付範囲: 大規模なデータセットの場合は、ファイル サイズを管理しやすい状態に保つために、日付範囲 (日次レポートや週次レポートの生成など) を制限します。
- スコープ: 使用可能な最上位レベルのスコープ (課金アカウントや課金プロファイルなど) を使用して、API 呼び出しの数を最小限に抑え、データの完全性を確保します。
- データ保持: レポートを迅速にダウンロードして保存します。 ダウンロード URL は、短期間 (通常は 1 時間) 後に期限切れになります。
価格とデータに関する注意事項
- Cost Details API は、選択した期間のすべての使用量、購入、払い戻しを含む、実際のコスト データと償却コスト データを提供します。
- データは集約されておらず、詳細な分析、調整、および他のシステムとの統合に適しています。
- 価格の動作の詳細については、「 コストの詳細における価格の動作」を参照してください。
1 つのリソースに 1 日のレコードが複数存在する場合がある
Azure リソース プロバイダーは、異なる属性 (データセンターの場所など) を持つ課金システムに使用量と料金を出力し、1 日に 1 つのリソースに対して複数のレコードが生成される場合があります。 この動作は想定されており、過充電を示すわけではありません。すべてのレコードは、そのリソースと日の完全なコストを表します。
予算を使用してアラートとアクションを自動化する
クラウドへの投資の価値を最大化するための重要な要素が 2 つあります。 1 つは予算の自動作成です。 もう 1 つは、予算アラートに対応するコストベースのオーケストレーションの構成です。 予算作成を自動化するには、さまざまな方法があります。 構成済みのアラートのしきい値を超えると、さまざまなアラート応答が発生します。
以下のセクションでは、使用可能なオプションについて説明し、予算の自動化を開始するためのサンプル API 要求を示します。
予算しきい値に対してコストが評価されるしくみ
コストは、1 日に 1 回、予算しきい値に対して評価されます。 新しい予算を作成したとき、または予算のリセット日には、評価が行われていない可能性があるため、しきい値と比較したコストはゼロまたは null になります。
コストがしきい値を超えたことが Azure によって検出されると、検出後 1 時間以内に通知がトリガーされます。
現在のコストを表示する
現在のコストを表示するには、Query API を使用して GET 呼び出しを行う必要があります。
Budgets API への GET 呼び出しでは、コスト分析で示される現在のコストは返されません。 代わりに、この呼び出しでは最後に評価されたコストが返されます。
予算の作成を自動化する
Budgets API を使用して、予算の作成を自動化できます。 予算テンプレートを使用して予算を作成することもできます。 テンプレートを使用すると、コスト管理を適切に構成し、確実に適用して、Azure デプロイを簡単に標準化できます。
予算のアラート メールでサポートされているロケール
予算については、コストが設定されたしきい値を超えた場合にアラートを受け取ります。 1 つの予算につき最大 5 つの電子メール受信者を設定できます。 受信者は、予算しきい値を超過してから 24 時間以内に電子メール アラートを受信します。 ただし、受信者は別の言語で電子メールを受信する必要がある場合があります。 次の言語カルチャ コードを、Budgets API で使用できます。 次の例のような locale
パラメーターを使用して、カルチャ コードを設定します。
{
"eTag": "\"1d681a8fc67f77a\"",
"properties": {
"timePeriod": {
"startDate": "2020-07-24T00:00:00Z",
"endDate": "2022-07-23T00:00:00Z"
},
"timeGrain": "BillingMonth",
"amount": 1,
"currentSpend": {
"amount": 0,
"unit": "USD"
},
"category": "Cost",
"notifications": {
"actual_GreaterThan_10_Percent": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 20,
"locale": "en-us",
"contactEmails": [
"user@contoso.com"
],
"contactRoles": [],
"contactGroups": [],
"thresholdType": "Actual"
}
}
}
}
カルチャ コードによってサポートされる言語:
カルチャ コード | Language |
---|---|
ja-JP | 英語 (米国) |
ja-jp | 日本語 (日本) |
zh-cn | 中国語 (簡体字、中国) |
de-de | ドイツ語 (ドイツ) |
es-es | スペイン語 (スペイン、インターナショナル) |
fr-fr | フランス語 (フランス) |
it-it | イタリア語 (イタリア) |
ko-kr | 韓国語 (韓国) |
pt-br | ポルトガル語 (ブラジル) |
ru-ru | ロシア語 (ロシア) |
zh-tw | 中国語 (繁体字、台湾) |
cs-cz | チェコ語 (チェコ共和国) |
pl-pl | ポーランド語 (ポーランド) |
tr-tr | トルコ語 (トルコ) |
da-dk | デンマーク語 (デンマーク) |
en-gb | 英語 (イギリス) |
hu-hu | ハンガリー語 (ハンガリー) |
nb-no | ノルウェー語ブークモール (ノルウェー) |
nl-nl | オランダ語 (オランダ) |
pt-pt | ポルトガル語 (ポルトガル) |
sv-se | スウェーデン語 (スウェーデン) |
Budgets API の一般的な構成
Azure 環境で予算を構成する方法は多数あります。 まず、実際のシナリオを検討してから、それを実現する構成オプションを特定します。 次のオプションを確認します。
- 時間グレイン - 予算でコストの計上と評価に使用する定期的な期間を表します。 最も一般的なオプションは、Monthly、Quarterly、Annual です。
- 期間 - 予算の有効期間を表します。 予算は、有効な間だけアクティブに監視され、アラートが通知されます。
- 通知
- 連絡先のメール - 予算でコストが計上され、予算が定義済みのしきい値を超えると、このメール アドレスにアラートが送信されます。
- 連絡先のロール - このオプションでは、特定のスコープで一致する Azure ロールが割り当てられているすべてのユーザーに、メール アラートが送信されます。 たとえば、サブスクリプション所有者は、サブスクリプション スコープで作成された予算のアラートを受け取ることができます。
- 連絡先グループ - アラートのしきい値を超えると、構成済みのアクション グループが予算によって呼び出されます。
- コスト ディメンション フィルター - コスト分析または Query API で実行できるのと同じフィルター処理を予算に対しても実行できます。 このフィルターを使用して、予算で監視しているコストの範囲を縮小します。
自分のニーズに合った予算作成オプションを特定したら、API を使用して予算を作成します。 次の例は、一般的な予算構成を開始する際に役立ちます。
複数のリソースとタグにフィルター処理された予算を作成する
要求 URL: PUT https://management.azure.com/subscriptions/{SubscriptionId} /providers/Microsoft.Consumption/budgets/{BudgetName}/?api-version=2019-10-01
{
"eTag": "\"1d34d016a593709\"",
"properties": {
"category": "Cost",
"amount": 100.65,
"timeGrain": "Monthly",
"timePeriod": {
"startDate": "2017-10-01T00:00:00Z",
"endDate": "2018-10-31T00:00:00Z"
},
"filter": {
"and": [
{
"dimensions": {
"name": "ResourceId",
"operator": "In",
"values": [
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{meterName}",
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{meterName}"
]
}
},
{
"tags": {
"name": "category",
"operator": "In",
"values": [
"Dev",
"Prod"
]
}
},
{
"tags": {
"name": "department",
"operator": "In",
"values": [
"engineering",
"sales"
]
}
}
]
},
"notifications": {
"Actual_GreaterThan_80_Percent": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 80,
"contactEmails": [
"user1@contoso.com",
"user2@contoso.com"
],
"contactRoles": [
"Contributor",
"Reader"
],
"contactGroups": [
"/subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}
],
"thresholdType": "Actual"
}
}
}
}
予算アラートに対応するコストベースのオーケストレーションを構成する
Azure アクション グループを使用して自動化されたアクションを開始するように予算を構成できます。 予算を使用したアクションの自動化の詳細については、予算による自動化をご覧ください。
データ待機時間とレート制限
この API は、1 日に 1 回だけ呼び出すことをお勧めします。 Cost Management データは、4 時間ごとに Azure リソース プロバイダーから新しい使用状況データを受け取って更新されます。 呼び出す回数を増やしても、提供されるデータが増えるわけではありません。 代わりに、負荷が大きくなります。
クエリ API のクエリ処理ユニット
Query API では、既存のレート制限プロセスに加え、API 呼び出しのコストに基づいて処理を制限します。 API 呼び出しのコストは、クエリ処理ユニット (QPU) として表されます。 QPU は、Cosmos DB RU などのパフォーマンス通貨です。 CPU やメモリなどのシステム リソースを抽象化します。
QPU の計算
現在、クエリされたデータ 1 か月分に対して 1 QPU が割り当て済みクォータから差し引かれます。 このロジックは、予告なしに変更される可能性があります。
QPU の考慮すべき要素
次の要素は、API 要求によって消費される QPU の数に影響します。
- 日付範囲。要求内の日付範囲が拡大すると、消費される QPU の数が増加します。
QPU のその他の考慮すべき要素が予告なく追加される場合があります。
QPU クォータ
テナントごとに次のクォータが構成されます。 次のいずれかのクォータを使い果たすと、要求が抑制されます。
- 10 秒あたり 12 QPU
- 1 分あたり 60 QPU
- 1 時間あたり 600 QPU
クォータは必要に応じて変更される可能性があり、より多くのクォータが追加される場合もあります。
応答ヘッダー
応答ヘッダーを調べて、API 要求によって消費された QPU の数と残りの QPU の数を追跡できます。
x-ms-ratelimit-microsoft.costmanagement-qpu-retry-after
バックオフ時間を秒単位で示します。 要求が 429 で抑制されている場合、要求を再試行する前に、このヘッダーで指定した時間バックオフします。
x-ms-ratelimit-microsoft.costmanagement-qpu-consumed
API 呼び出しによって使用される QPU。
x-ms-ratelimit-microsoft.costmanagement-qpu-remaining
残りのクォータのリスト。
関連コンテンツ
- Power BI テンプレート アプリを使用して Azure のコストを分析する。
- エクスポートを使用して、データをエクスポートし、管理する。
- Cost Details API の詳細を確認します。