Guida introduttiva: Creare un budget con Bicep
I budget in Gestione costi consentono di pianificare e promuovere la responsabilizzazione nell'organizzazione. Con i budget, è possibile tenere traccia dei costi sostenuti per i servizi di Azure consumati o sottoscritti per un determinato periodo. Risultano utili per informare altri utenti in merito alle spese per una gestione proattiva dei costi e per monitorare l'andamento della spesa nel tempo. Quando vengono superate le soglie di budget create, vengono attivate le notifiche. Nessuna delle risorse è interessata e il consumo non viene interrotto. È possibile usare i budget per confrontare e tenere traccia della spesa durante l'analisi dei costi. Questa guida introduttiva descrive come creare un budget denominato 'MyBudget' usando Bicep.
Bicep è un linguaggio specifico di dominio (DSL) che usa la sintassi dichiarativa per distribuire le risorse di Azure. Offre sintassi concisa, indipendenza dai tipi affidabile e supporto per il riutilizzo del codice. Bicep offre la migliore esperienza di creazione per le soluzioni di infrastruttura come codice in Azure.
Prerequisiti
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Se si ha una nuova sottoscrizione, non è possibile creare immediatamente un budget o usare altre funzionalità di Gestione costi. Potrebbero essere necessarie fino a 48 ore prima di poter usarle usare tutte.
I budget sono supportati per i tipi di account e gli ambiti di Azure seguenti:
- Ambiti di controllo degli accessi in base al ruolo di Azure
- Gruppi di gestione
- Subscription
- Ambiti del Contratto Enterprise
- Account di fatturazione
- department
- Account di registrazione
- Singoli contratti
- Account di fatturazione
- Ambiti del Contratto del cliente Microsoft
- Account di fatturazione
- Profilo di fatturazione
- Sezione della fattura
- Customer
- Scopi AWS
- Account esterno
- Sottoscrizione esterna
Per visualizzare i budget, è necessario effettuare almeno l'accesso in lettura per l'account Azure.
Per le sottoscrizioni Azure EA è necessario avere accesso in lettura per visualizzare i budget. Per creare e gestire i budget, è necessario disporre dell'autorizzazione di collaboratore.
Le autorizzazioni o gli ambiti di Azure riportati di seguito sono supportati per i budget per ogni sottoscrizione, in base a utente e gruppo. Per altre informazioni sugli ambiti, vedere Informazioni e utilizzo degli ambiti.
- Proprietario: può creare, modificare o eliminare budget per una sottoscrizione.
- Collaboratore e Collaboratore di Gestione costi: può creare, modificare o eliminare i propri budget. Può modificare l'importo di budget per budget creati da altri utenti.
- Lettore e lettore Gestione costi: può visualizzare i budget per cui ha l'autorizzazione.
Per altre informazioni sull'assegnazione dell'autorizzazione ai dati di Gestione costi, vedere Assegnare l'accesso ai dati di Gestione costi.
Nessun filtro
Esaminare il file Bicep
Il file Bicep usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.
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
Nel file Bicep è definita una risorsa di Azure:
- Microsoft.Consumption/budget: creare un budget.
Distribuire il file Bicep
Salvare il file Bicep come main.bicep nel computer locale.
Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure o 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
È necessario immettere i parametri seguenti:
- startDate: sostituire <start-date> con la data di inizio. Deve essere il primo del mese in formato AAAA-MM-GG. Una data di inizio futura non deve essere successiva a tre mesi futuri. Una data di inizio trascorsa deve essere selezionata entro il periodo timegrain.
- endDate: sostituire <end-date> con la data di fine in formato AAAA-MM-GG. Se non specificato, il valore predefinito è dieci anni dalla data di inizio.
- contactEmails: creare innanzitutto una variabile contenente i messaggi e-mail e quindi passare tale variabile. Sostituire i messaggi e-mail con gli indirizzi e-mail a cui inviare la notifica del budget quando viene superata la soglia.
Nota
Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è stata completata.
Un filtro
Esaminare il file Bicep
Il file Bicep usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.
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
}
}
}
}
Nel file Bicep è definita una risorsa di Azure:
- Microsoft.Consumption/budget: creare un budget.
Distribuire il file Bicep
Salvare il file Bicep come main.bicep nel computer locale.
Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure o 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
È necessario immettere i parametri seguenti:
- startDate: sostituire <start-date> con la data di inizio. Deve essere il primo del mese in formato AAAA-MM-GG. Una data di inizio futura non deve essere successiva a tre mesi futuri. Una data di inizio trascorsa deve essere selezionata entro il periodo timegrain.
- endDate: sostituire <end-date> con la data di fine in formato AAAA-MM-GG. Se non specificato, il valore predefinito è dieci anni dalla data di inizio.
- contactEmails: creare innanzitutto una variabile contenente i messaggi e-mail e quindi passare tale variabile. Sostituire i messaggi e-mail con gli indirizzi e-mail a cui inviare la notifica del budget quando viene superata la soglia.
- resourceGroupFilterValues: creare innanzitutto una variabile contenente i valori di filtro del gruppo di risorse e quindi passare tale variabile. Sostituire i valori di filtro di esempio con il set di valori per il filtro del gruppo di risorse.
Nota
Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è stata completata.
Due o più filtri
Esaminare il file Bicep
Il file Bicep usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.
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
}
}
]
}
}
}
Nel file Bicep è definita una risorsa di Azure:
- Microsoft.Consumption/budget: creare un budget.
Distribuire il file Bicep
Salvare il file Bicep come main.bicep nel computer locale.
Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure o 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
È necessario immettere i parametri seguenti:
- startDate: sostituire <start-date> con la data di inizio. Deve essere il primo del mese in formato AAAA-MM-GG. Una data di inizio futura non deve essere successiva a tre mesi futuri. Una data di inizio trascorsa deve essere selezionata entro il periodo timegrain.
- endDate: sostituire <end-date> con la data di fine in formato AAAA-MM-GG. Se non specificato, il valore predefinito è dieci anni dalla data di inizio.
- contactEmails: creare innanzitutto una variabile contenente i messaggi e-mail e quindi passare tale variabile. Sostituire i messaggi e-mail con gli indirizzi e-mail a cui inviare la notifica del budget quando viene superata la soglia.
- contactGroups: creare innanzitutto una variabile contenente i gruppi di contatti e quindi passare tale variabile. Sostituire i gruppi di contatto di esempio con un elenco di gruppi di azioni a cui inviare la notifica del budget quando viene superata la soglia. È necessario passare l'ID risorsa del gruppo di azioni, che è possibile recuperare mediante az monitor action-group show o Get-AzActionGroup.
- resourceGroupFilterValues: creare innanzitutto una variabile contenente i valori di filtro del gruppo di risorse e quindi passare tale variabile. Sostituire i valori di filtro di esempio con il set di valori per il filtro del gruppo di risorse.
- meterCategoryFilterValues: creare innanzitutto una variabile contenente i valori di filtro delle categorie di contatore e quindi passare tale variabile. Sostituire i valori di filtro di esempio tra parentesi con il set di valori per il filtro delle categorie di contatore.
Nota
Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è stata completata.
Esaminare le risorse distribuite
Usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per elencare le risorse distribuite nel gruppo di risorse.
az consumption budget list
Pulire le risorse
Quando il budget non è più necessario, usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per eliminarlo:
az consumption budget delete --budget-name MyBudget
Passaggi successivi
In questa guida introduttiva è stato creato un budget, che successivamente è stato distribuito usando Bicep. Per altre informazioni su Gestione dei costi, fatturazione e Bicep, fare riferimento agli articoli seguenti.
- Vedere la panoramica di Gestione dei costi e fatturazione.
- Creare budget nel portale di Azure.
- Altre informazioni su Bicep.