Я пытаюсь создать экспорт данных об использовании и расходах Azure в файл CSV, задав для области идентификатор моей учетной записи выставления счетов в сценарии PowerShell. Я запустил код, и он работает, но когда я выполняю генерацию стоимости в другом сценарии PowerShell, кажется, что команда не получает все расходы. Проверив файл, отправленный в контейнер Azure, я обнаружил, что его размер составляет примерно 641 МБ, а когда я вручную загружаю Usage + Charges.csv с портала Azure, размер CSV составляет 656 МБ. Это означает, что в области учетной записи выставления счетов отсутствует примерно 15 МБ данных, и мне было интересно, правильно ли я понял, экспортируя CSV через PowerShell.
Моя конечная цель — автоматизировать экспорт csv каждый месяц, чтобы я мог отправлять себе по электронной почте расходы в другом сценарии PowerShell. Я связался с Microsoft по поводу этой проблемы и встречусь с ними, чтобы обсудить проблему, но мне было интересно, делал ли кто-нибудь что-то подобное в свое время и могли ли они самостоятельно автоматизировать Usage + Charges.csv. Код размещен ниже, и любые советы или указатели помогут.
Код экспорта:
# Log into the Azure Subscription and authenticate the login
Az Login
# Set variables for the command.
$subscriptionId = "XXXXXXXXXXXXXXXXXXXXXXXXX"
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.Storage/storageAccounts/XXXXXXXXXXXXXXXXXXXXXXXXXXX"
$containerName = "publicstoragecontainer001"
$exportName = "Usage Data for XXXXXXXXXXXXXXXXX"
$timeFrame = "TheLastBillingMonth"
$type = "Usage"
$folderName = "Total Usage Cost Exports"
$scheduleStatus = "Active"
$reoccurance = "Monthly"
# Get the Usage from the Billing Scope.
$scope = "/providers/Microsoft.Billing/billingAccounts/XXXXXXXXXXXXXXXXX"
# Time Variables
$current_time = Get-Date
$future_time = $current_time.AddHours(1)
$current_time_str = $current_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$future_time_str = $future_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
# Export the usage data of each tenant to the storage account
az costmanagement export create --name $exportName --scope $scope --storage-account-id $storageAccountId --storage-container $containerName --timeframe $timeFrame --type $type --storage-directory $folderName --schedule-status $scheduleStatus --recurrence $reoccurance --recurrence-period from=$current_time_str to=$future_time_str
@Nick.McDermaid Суммарная цифра соответствует всем центрам затрат, кроме одного. Я вручную загрузил файл Usage+Charges.csv с портала Azure и таким образом провел ручную проверку затрат. Когда я загрузил руководство в формате CSV, информация была правильной и точно отражала расходы, которые я использовал в этом месяце. Когда я вытащил Экспорт из Контейнера для хранения, один из моих центров затрат был значительно отклонен.
и когда вы углубитесь в этот центр затрат, сможете ли вы определить какую-либо закономерность того, чего не хватает? Может быть встроенный инструмент MS, который уже охватывает все, что вы пытаетесь сделать в данный момент.
Я нашел проблему.
Для параметра -type необходимо установить значение ActualCost вместо Usage. если вы установите для него значение ActualCost, то команда будет получать данные об использовании и сборах за экспорт csv, а не только данные об использовании. Изменение параметра дает вам нужные результаты.
Спасибо всем, кто внес свой вклад!
Аз Войти
# Set variables for the command.
$subscriptionId = "XXXXXXXXXXXXXXXXXXXXXXXXX"
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.Storage/storageAccounts/XXXXXXXXXXXXXXXXXXXXXXXXXXX"
$containerName = "publicstoragecontainer001"
$exportName = "Usage Data for XXXXXXXXXXXXXXXXX"
$timeFrame = "TheLastBillingMonth"
$type = "ActualCost"
$folderName = "Total Usage Cost Exports"
$scheduleStatus = "Active"
$reoccurance = "Monthly"
# Get the Usage from the Billing Scope.
$scope = "/providers/Microsoft.Billing/billingAccounts/XXXXXXXXXXXXXXXXX"
# Time Variables
$current_time = Get-Date
$future_time = $current_time.AddHours(1)
$current_time_str = $current_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$future_time_str = $future_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
# Export the usage data of each tenant to the storage account
az costmanagement export create --name $exportName --scope $scope --storage-account-id $storageAccountId --storage-container $containerName --timeframe $timeFrame --type $type --storage-directory $folderName --schedule-status $scheduleStatus --recurrence $reoccurance --recurrence-period from=$current_time_str to=$future_time_str
Но совпадает ли общая цифра? Разница в размере может заключаться в escape-символах, разделении кавычек и т. д.