【Azure】Generate Cost Details Report でレポートを出力する
執筆日
2024/11/11
やること
Generate Cost Details Report でレポートを出力してみる
参考記事
Generate Cost Details Report API
前提条件
- Windows
- PowerShell
手順
- 以下のスクリプトを作成し、実行する。
$tenantId = "<テナントID>"
$subscriptionId = "<サブスクリプションID>"
Connect-AzAccount -Tenant $tenantId -Subscription $subscriptionId
$subscriptionId = (Get-AzContext).Subscription.Id
$getAccess = Get-AzAccessToken
$authHeader = "Bearer " + $getAccess.Token
$requestHeader = @{ Authorization = $authHeader }
$contentType = "application/json"
$generateUrl = "https://management.azure.com/subscriptions/$subscriptionId/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2023-08-01"
$generateMethod = "POST"
$requestBody = @{
"metric" = "ActualCost"
"timePeriod" = @{
"start" = "2024-09-01"
"end" = "2024-09-30"
}
}
$requestBody = $requestBody | ConvertTo-Json
try {
$generateResponse = Invoke-WebRequest -Uri $generateUrl -Method $generateMethod -Headers $requestHeader -Body $requestBody -ContentType $contentType
}
catch {
Write-Error "Failed to generate cost details report: $_"
exit
}
$retryAfter = $generateResponse.Headers.'Retry-After'
if ($retryAfter) {
Write-Output "Please wait for $retryAfter seconds before retrying."
Start-Sleep -Seconds $retryAfter
}
$operationUrl = $generateResponse.Headers.Location
$operationMethod = "GET"
try {
$operationResponse = Invoke-RestMethod -Uri $operationUrl -Method $operationMethod -Headers $requestHeader -ContentType $contentType
}
catch {
Write-Error "Failed to get operation status: $_"
exit
}
$downloadUrl = $operationResponse.manifest.blobs.blobLink
$outputFilePath = "<保存先のパスと>/cost.csv"
try {
Invoke-WebRequest -Uri $downloadUrl -OutFile $outputFilePath
Write-Output "Report saved to $outputFilePath"
}
catch {
Write-Error "Failed to download the report: $_"
}
- 指定したパスにcsvファイルが保存されていることを確認する
カラム解説
カラムの説明(by GPT-4o)
-
billingAccountName:
- 請求アカウントの名前。
-
partnerName:
- パートナーの名前。
-
resellerName:
- 再販業者の名前。
-
resellerMpnId:
- 再販業者のMPN(Microsoft Partner Network)ID。
-
customerTenantId:
- 顧客のテナントID。
-
customerName:
- 顧客の名前。
-
costCenter:
- コストセンター。企業内でコストを管理するための部門やプロジェクトの識別子。
-
billingPeriodEndDate:
- 請求期間の終了日。
-
billingPeriodStartDate:
- 請求期間の開始日。
-
servicePeriodEndDate:
- サービス期間の終了日。
-
servicePeriodStartDate:
- サービス期間の開始日。
-
date:
- 日付。特定のコストが発生した日。
-
serviceFamily:
- サービスファミリー。例えば、Compute、Storageなどのサービスカテゴリ。
-
productOrderId:
- プロダクトオーダーID。
-
productOrderName:
- プロダクトオーダーの名前。
-
consumedService:
- 消費されたサービスの名前。
-
meterId:
- メーターID。使用量を計測するメーターの識別子。
-
meterName:
- メーターの名前。
-
meterCategory:
- メーターのカテゴリ。例えば、Virtual Machines、Storageなど。
-
meterSubCategory:
- メーターのサブカテゴリ。
-
meterRegion:
- メーターが適用されるリージョン。
-
ProductId:
- プロダクトID。
-
ProductName:
- プロダクトの名前。
-
SubscriptionId:
- サブスクリプションID。
-
subscriptionName:
- サブスクリプションの名前。
-
publisherType:
- パブリッシャーのタイプ。
-
publisherId:
- パブリッシャーID。
-
publisherName:
- パブリッシャーの名前。
-
resourceGroupName:
- リソースグループの名前。
-
ResourceId:
- リソースID。
-
resourceLocation:
- リソースの場所。
-
location:
- 使用されたサービスの場所。
-
effectivePrice:
- 実効価格。割引などを考慮した最終的な価格。
-
quantity:
- 使用量。
-
unitOfMeasure:
- 使用量の単位。
-
chargeType:
- 課金タイプ。例えば、使用量ベース、予約、ライセンスなど。
-
billingCurrency:
- 請求通貨。
-
pricingCurrency:
- 価格設定通貨。
-
costInBillingCurrency:
- 請求通貨でのコスト。
-
costInUsd:
- 米ドルでのコスト。
-
exchangeRatePricingToBilling:
- 価格設定通貨から請求通貨への為替レート。
-
exchangeRateDate:
- 為替レートの日付。
-
serviceInfo1:
- サービス情報1。追加のサービスに関する情報。
-
serviceInfo2:
- サービス情報2。追加のサービスに関する情報。
-
additionalInfo:
- 追加情報。
-
tags:
- タグ。リソースに関連付けられたタグ。
-
PayGPrice:
- 従量課金価格。
-
frequency:
- 頻度。例えば、月次、年次など。
-
term:
- 契約期間。
-
reservationId:
- 予約ID。
-
reservationName:
- 予約の名前。
-
pricingModel:
- 価格モデル。例えば、従量課金、予約など。
-
unitPrice:
- 単価。
-
benefitId:
- ベネフィットID。
-
benefitName:
- ベネフィットの名前。
-
provider:
- プロバイダー。
まとめ
Generate Cost Details Reportで課金のレポートを出力しました。
かなり細かいパラメータまで出力できるので良いなーと思いました。
Discussion