Snabbstart: Skapa en budget med Bicep
Budgetar i Cost Management hjälper dig att planera och öka organisationsansvar. Med budgetar kan du ta hänsyn till de Azure-tjänster du förbrukar eller prenumererar på under en viss period. De hjälper dig att informera andra om deras utgifter för att proaktivt hantera kostnader och övervaka hur utgifterna fortskrider över tid. När de budgettrösklar som du har skapat har överskridits utlöses meddelanden. Ingen av dina resurser påverkas och förbrukningen stoppas inte. Du kan använda budgetar för att jämföra och spåra utgifter när du analyserar kostnader. Den här snabbstarten visar hur du skapar en budget med namnet "MyBudget" med Bicep.
Bicep är ett domänspecifikt språk (DSL) som använder deklarativ syntax för att distribuera Azure-resurser. Det ger koncis syntax, tillförlitlig typsäkerhet och stöd för återanvändning av kod. Bicep erbjuder den bästa redigeringsupplevelsen för dina infrastruktur-som-kod-lösningar i Azure.
Förutsättningar
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Om du har en ny prenumeration kan du inte skapa en budget eller använda Cost Management-funktioner direkt. Det kan ta upp till 48 timmar innan du kan använda alla Cost Management-funktioner.
Budgetar stöds för följande typer av Azure-konton och omfång:
- Omfång för rollbaserad åtkomstkontroll i Azure (Azure RBAC)
- Hanteringsgrupper
- Prenumeration
- företagsavtal omfång
- Faktureringskonto
- Avdelning
- Registreringskonto
- Enskilda avtal
- Faktureringskonto
- Microsoft-kundavtal omfång
- Faktureringskonto
- Faktureringsprofil
- Fakturaavsnitt
- Kund
- AWS-omfång
- Externt konto
- Extern prenumeration
Om du vill visa budgetar behöver du minst läsbehörighet för ditt Azure-konto.
För Azure EA-prenumerationer måste du ha läsbehörighet för att visa budgetar. Du måste ha deltagarbehörighet för att skapa och hantera budgetar.
Följande Azure-behörigheter, eller -omfång, stöds per prenumeration för budgetar efter användare och grupp. Mer information om omfång finns i Förstå och arbeta med omfång.
- Ägare: Kan skapa, ändra och ta bort budgetar för en prenumeration.
- Deltagare och Cost Management-deltagare: Kan skapa, ändra och ta bort sina egna budgetar. Kan ändra budgetbeloppet för budgetar som skapats av andra.
- Läsare och Cost Management-läsare: Kan visa budgetar som de har behörighet till.
Mer information om hur du tilldelar åtkomst till Cost Management-data finns i Tilldela åtkomst till Cost Management-data.
Inget filter
Granska Bicep-filen
Bicep-filen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.
targetScope = 'subscription'
@description('Name of the Budget. It should be unique within a resource group.')
param budgetName string = 'MyBudget'
@description('The total amount of cost or usage to track with the budget')
param amount int = 1000
@description('The time covered by a budget. Tracking of the amount will be reset based on the time grain.')
@allowed([
'Monthly'
'Quarterly'
'Annually'
])
param timeGrain string = 'Monthly'
@description('The start date must be first of the month in YYYY-MM-DD format. Future start date should not be more than three months. Past start date should be selected within the timegrain preiod.')
param startDate string
@description('The end date for the budget in YYYY-MM-DD format. If not provided, we default this to 10 years from the start date.')
param endDate string
@description('Threshold value associated with a notification. Notification is sent when the cost exceeded the threshold. It is always percent and has to be between 0.01 and 1000.')
param firstThreshold int = 90
@description('Threshold value associated with a notification. Notification is sent when the cost exceeded the threshold. It is always percent and has to be between 0.01 and 1000.')
param secondThreshold int = 110
@description('The list of email addresses to send the budget notification to when the threshold is exceeded.')
param contactEmails array
resource budget 'Microsoft.Consumption/budgets@2023-11-01' = {
name: budgetName
properties: {
timePeriod: {
startDate: startDate
endDate: endDate
}
timeGrain: timeGrain
amount: amount
category: 'Cost'
notifications: {
NotificationForExceededBudget1: {
enabled: true
operator: 'GreaterThan'
threshold: firstThreshold
contactEmails: contactEmails
}
NotificationForExceededBudget2: {
enabled: true
operator: 'GreaterThan'
threshold: secondThreshold
contactEmails: contactEmails
}
}
}
}
output name string = budget.name
output resourceId string = budget.id
En Azure-resurs definieras i Bicep-filen:
- Microsoft.Consumption/budgets: Skapa en budget.
Distribuera Bicep-filen
Spara Bicep-filen som main.bicep på den lokala datorn.
Distribuera Bicep-filen med antingen Azure CLI eller Azure PowerShell.
myContactEmails ='("user1@contoso.com", "user2@contoso.com")' az deployment sub create --name demoSubDeployment --location centralus --template-file main.bicep --parameters startDate=<start-date> endDate=<end-date> contactEmails=$myContactEmails
Du måste ange följande parametrar:
- startDate: Ersätt <startdatum> med startdatumet. Det måste vara den första i månaden i YYYY-MM-DD-format. Ett framtida startdatum bör inte vara längre än tre månader i framtiden. Ett tidigare startdatum bör väljas inom tidsintervallet.
- endDate: Ersätt <slutdatum> med slutdatumet i YYYY-MM-DD-format. Om det inte anges är standardvärdet tio år från startdatumet.
- contactEmails: Skapa först en variabel som innehåller dina e-postmeddelanden och skicka sedan variabeln. Ersätt e-postexemplet med de e-postadresser som budgetmeddelandet ska skickas till när tröskelvärdet överskrids.
Kommentar
När distributionen är klar bör du se ett meddelande som anger att distributionen lyckades.
Ett filter
Granska Bicep-filen
Bicep-filen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.
targetScope = 'subscription'
@description('Name of the Budget. It should be unique within a resource group.')
param budgetName string = 'MyBudget'
@description('The total amount of cost or usage to track with the budget')
param amount int = 1000
@description('The time covered by a budget. Tracking of the amount will be reset based on the time grain.')
@allowed([
'Monthly'
'Quarterly'
'Annually'
])
param timeGrain string = 'Monthly'
@description('The start date must be first of the month in YYYY-MM-DD format. Future start date should not be more than three months. Past start date should be selected within the timegrain preiod.')
param startDate string
@description('The end date for the budget in YYYY-MM-DD format. If not provided, we default this to 10 years from the start date.')
param endDate string
@description('Threshold value associated with a notification. Notification is sent when the cost exceeded the threshold. It is always percent and has to be between 0.01 and 1000.')
param firstThreshold int = 90
@description('Threshold value associated with a notification. Notification is sent when the cost exceeded the threshold. It is always percent and has to be between 0.01 and 1000.')
param secondThreshold int = 110
@description('The list of email addresses to send the budget notification to when the threshold is exceeded.')
param contactEmails array
@description('The set of values for the resource group filter.')
param resourceGroupFilterValues array
resource budget 'Microsoft.Consumption/budgets@2021-10-01' = {
name: budgetName
properties: {
timePeriod: {
startDate: startDate
endDate: endDate
}
timeGrain: timeGrain
amount: amount
category: 'Cost'
notifications: {
NotificationForExceededBudget1: {
enabled: true
operator: 'GreaterThan'
threshold: firstThreshold
contactEmails: contactEmails
}
NotificationForExceededBudget2: {
enabled: true
operator: 'GreaterThan'
threshold: secondThreshold
contactEmails: contactEmails
}
}
filter: {
dimensions: {
name: 'ResourceGroupName'
operator: 'In'
values: resourceGroupFilterValues
}
}
}
}
En Azure-resurs definieras i Bicep-filen:
- Microsoft.Consumption/budgets: Skapa en budget.
Distribuera Bicep-filen
Spara Bicep-filen som main.bicep på den lokala datorn.
Distribuera Bicep-filen med antingen Azure CLI eller Azure PowerShell.
myContactEmails ='("user1@contoso.com", "user2@contoso.com")' myRgFilterValues ='("resource-group-01", "resource-group-02")' az deployment sub create --name demoSubDeployment --location centralus --template-file main.bicep --parameters startDate=<start-date> endDate=<end-date> contactEmails=$myContactEmails resourceGroupFilterValues=$myRgFilterValues
Du måste ange följande parametrar:
- startDate: Ersätt <startdatum> med startdatumet. Det måste vara den första i månaden i YYYY-MM-DD-format. Ett framtida startdatum bör inte vara längre än tre månader i framtiden. Ett tidigare startdatum bör väljas inom tidsintervallet.
- endDate: Ersätt <slutdatum> med slutdatumet i YYYY-MM-DD-format. Om det inte anges är standardvärdet tio år från startdatumet.
- contactEmails: Skapa först en variabel som innehåller dina e-postmeddelanden och skicka sedan variabeln. Ersätt e-postexemplet med de e-postadresser som budgetmeddelandet ska skickas till när tröskelvärdet överskrids.
- resourceGroupFilterValues Skapa först en variabel som innehåller resursgruppens filtervärden och skicka sedan variabeln. Ersätt exempelfiltervärdena med uppsättningen med värden för resursgruppsfiltret.
Kommentar
När distributionen är klar bör du se ett meddelande som anger att distributionen lyckades.
Två eller flera filter
Granska Bicep-filen
Bicep-filen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.
targetScope = 'subscription'
@description('Name of the Budget. It should be unique within a resource group.')
param budgetName string = 'MyBudget'
@description('The total amount of cost or usage to track with the budget')
param amount int = 1000
@description('The time covered by a budget. Tracking of the amount will be reset based on the time grain.')
@allowed([
'Monthly'
'Quarterly'
'Annually'
])
param timeGrain string = 'Monthly'
@description('The start date must be first of the month in YYYY-MM-DD format. Future start date should not be more than three months. Past start date should be selected within the timegrain preiod.')
param startDate string
@description('The end date for the budget in YYYY-MM-DD format. If not provided, we default this to 10 years from the start date.')
param endDate string
@description('Threshold value associated with a notification. Notification is sent when the cost exceeded the threshold. It is always percent and has to be between 0.01 and 1000.')
param firstThreshold int = 90
@description('Threshold value associated with a notification. Notification is sent when the cost exceeded the threshold. It is always percent and has to be between 0.01 and 1000.')
param secondThreshold int = 110
@description('The list of contact roles to send the budget notification to when the threshold is exceeded.')
param contactRoles array = [
'Owner'
'Contributor'
'Reader'
]
@description('The list of email addresses to send the budget notification to when the threshold is exceeded.')
param contactEmails array
@description('The list of action groups to send the budget notification to when the threshold is exceeded. It accepts array of strings.')
param contactGroups array
@description('The set of values for the resource group filter.')
param resourceGroupFilterValues array
@description('The set of values for the meter category filter.')
param meterCategoryFilterValues array
resource budget 'Microsoft.Consumption/budgets@2021-10-01' = {
name: budgetName
properties: {
timePeriod: {
startDate: startDate
endDate: endDate
}
timeGrain: timeGrain
amount: amount
category: 'Cost'
notifications: {
NotificationForExceededBudget1: {
enabled: true
operator: 'GreaterThan'
threshold: firstThreshold
contactEmails: contactEmails
contactRoles: contactRoles
contactGroups: contactGroups
}
NotificationForExceededBudget2: {
enabled: true
operator: 'GreaterThan'
threshold: secondThreshold
contactEmails: contactEmails
contactRoles: contactRoles
contactGroups: contactGroups
thresholdType: 'Forecasted'
}
}
filter: {
and: [
{
dimensions: {
name: 'ResourceGroupName'
operator: 'In'
values: resourceGroupFilterValues
}
}
{
dimensions: {
name: 'MeterCategory'
operator: 'In'
values: meterCategoryFilterValues
}
}
]
}
}
}
En Azure-resurs definieras i Bicep-filen:
- Microsoft.Consumption/budgets: Skapa en budget.
Distribuera Bicep-filen
Spara Bicep-filen som main.bicep på den lokala datorn.
Distribuera Bicep-filen med antingen Azure CLI eller Azure PowerShell.
myContactEmails ='("user1@contoso.com", "user2@contoso.com")' myContactGroups ='("/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/microsoft.insights/actionGroups/groupone", "/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/microsoft.insights/actionGroups/grouptwo")' myRgFilterValues ='("resource-group-01", "resource-group-02")' myMeterCategoryFilterValues ='("meter-category-01", "meter-category-02")' az deployment sub create --name demoSubDeployment --location centralus --template-file main.bicep --parameters startDate=<start-date> endDate=<end-date> contactEmails=$myContactEmails contactGroups=$myContactGroups resourceGroupFilterValues=$myRgFilterValues meterCategoryFilterValues=$myMeterCategoryFilterValues
Du måste ange följande parametrar:
- startDate: Ersätt <startdatum> med startdatumet. Det måste vara den första i månaden i YYYY-MM-DD-format. Ett framtida startdatum bör inte vara längre än tre månader i framtiden. Ett tidigare startdatum bör väljas inom tidsintervallet.
- endDate: Ersätt <slutdatum> med slutdatumet i YYYY-MM-DD-format. Om det inte anges är standardvärdet tio år från startdatumet.
- contactEmails: Skapa först en variabel som innehåller dina e-postmeddelanden och skicka sedan variabeln. Ersätt e-postexemplet med de e-postadresser som budgetmeddelandet ska skickas till när tröskelvärdet överskrids.
- contactGroups: Skapa först en variabel som innehåller dina kontaktgrupper och skicka sedan variabeln. Ersätt exempelkontaktgrupperna med listan över åtgärdsgrupper som budgetmeddelandet ska skickas till när tröskelvärdet överskrids. Du måste skicka resurs-ID:t för åtgärdsgruppen, som du kan hämta med az monitor action-group show eller Get-AzActionGroup.
- resourceGroupFilterValues: Skapa först en variabel som innehåller resursgruppens filtervärden och skicka sedan variabeln. Ersätt exempelfiltervärdena med uppsättningen med värden för resursgruppsfiltret.
- meterCategoryFilterValues: Skapa först en variabel som innehåller filtervärdena för mätarkategorin och skicka sedan variabeln. Ersätt exempelfiltervärdena inom parenteser med uppsättningen värden för mätarkategorifiltret.
Kommentar
När distributionen är klar bör du se ett meddelande som anger att distributionen lyckades.
Granska distribuerade resurser
Använd Azure Portal, Azure CLI eller Azure PowerShell för att lista de distribuerade resurserna i resursgruppen.
az consumption budget list
Rensa resurser
När du inte längre behöver budgeten använder du Azure Portal, Azure CLI eller Azure PowerShell för att ta bort den:
az consumption budget delete --budget-name MyBudget
Nästa steg
I den här snabbstarten skapade du en budget och distribuerade den med Bicep. Om du vill veta mer om Cost Management och Fakturering och Bicep fortsätter du till artiklarna nedan.
- Läs översikten över Kostnadshantering och fakturering .
- Skapa budgetar i Azure Portal.
- Läs mer om Bicep.