To set up a budget with warning in Azure, the Az.Billing
PowerShell Module offers the cmdlets New-AzConsumptionBudget
. Unfortunately, the PowerShell commands don’t seem to be implemented correctly in version 2.0.0
at the Az
Module 8.3.0
or newer (currently 9.0.1
):
New-AzConsumptionBudget -Amount 5 -Name "Budget1" -Category Cost -StartDate 2022-10-01 -TimeGrain Monthly -EndDate 2022-12-31 -ContactEmail "thomas@zuehlke.cloud" -NotificationKey Key1 -NotificationThreshold 0.8 -NotificationEnabled New-AzConsumptionBudget: Operation returned an invalid status code 'BadRequest'
The call produces the unhelpful BadRequest
error message. Get-Error
can be used to check more details about the last error:
Get-Error ... Content : {"error":{"code":"400","message":"Cost Management supports only Enterprise Agreement, Web direct and Microsoft Customer Agreement offer types. Subscription ... is not associated with a valid offer type. ...
The error message does not appear to be correct because it is possible to define a budget for the subscription without any problems. The list budgets command also fails with an error message:
Get-AzConsumptionBudget Get-AzConsumptionBudget: Operation returned an invalid status code 'UnprocessableEntity'
In this case, the request doesn’t seem to be implemented correctly:
Get-Error ... Content : {"error":{"code":"422","message":"This operation is not supported in the version specified in the request. Please use version 2019-10-01-preview or later. }} ...
As an alternative, the budget can also be defined directly via REST:
$body = @{ "properties"= @{ "category" = "Cost" "amount"= 5 "timeGrain" = "Monthly" "timePeriod"= @{ "startDate" = "2022-10-01T00:00:00Z" "endDate" = "2022-12-31T00:00:00Z" } "notifications" = @{ "Forecasted_GreaterThan_80_Percent" = @{ "enabled" = $true "operator" = "GreaterThan" "threshold" = 80 "locale" = "de-de" "contactEmails" = @("thomas@zuehlke.cloud") "thresholdType" = "Forecasted" } } } } $token=(Get-AzAccessToken).token Invoke-RestMethod ` -Method Put ` -Headers @{"Authorization"="Bearer $token"} ` -ContentType "application/json; charset=utf-8" ` -Body (ConvertTo-Json $body -Depth 10) ` -Uri "https://management.azure.com/subscriptions/<SubscriptionId>/providers/Microsoft.Consumption/budgets/Budget1?api-version=2021-10-01"
Schreibe einen Kommentar