Share via


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:

Distribuire il file Bicep

  1. Salvare il file Bicep come main.bicep nel computer locale.

  2. Distribuire 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:

Distribuire il file Bicep

  1. Salvare il file Bicep come main.bicep nel computer locale.

  2. Distribuire 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:

Distribuire il file Bicep

  1. Salvare il file Bicep come main.bicep nel computer locale.

  2. Distribuire 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.