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. Consentono di informare gli altri utenti sulla spesa per gestire in modo proattivo i costi e monitorare l'avanzamento 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 illustra 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 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: possono visualizzare i budget per cui hanno 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@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
      }
    }
  }
}

Una risorsa di Azure è definita nel file Bicep:

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 <la data> di inizio con la data di inizio. Deve essere il primo del mese in formato AAAA-MM-GG. Una data di inizio futura non dovrebbe essere più di tre mesi in futuro. Una data di inizio precedente deve essere selezionata entro il periodo di tempo.
    • endDate: sostituire <la data> di fine con la data di fine nel formato AAAA-MM-GG. Se non specificato, il valore predefinito è dieci anni dalla data di inizio.
    • contactEmails: creare prima di tutto una variabile che contiene i messaggi di posta elettronica e quindi passare tale variabile. Sostituire i messaggi di posta elettronica di esempio con gli indirizzi di posta elettronica 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 è riuscita.

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
      }
    }
  }
}

Una risorsa di Azure è definita nel file Bicep:

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 <la data> di inizio con la data di inizio. Deve essere il primo del mese in formato AAAA-MM-GG. Una data di inizio futura non dovrebbe essere più di tre mesi in futuro. Una data di inizio precedente deve essere selezionata entro il periodo di tempo.
    • endDate: sostituire <la data> di fine con la data di fine nel formato AAAA-MM-GG. Se non specificato, il valore predefinito è dieci anni dalla data di inizio.
    • contactEmails: creare prima di tutto una variabile che contiene i messaggi di posta elettronica e quindi passare tale variabile. Sostituire i messaggi di posta elettronica di esempio con gli indirizzi di posta elettronica a cui inviare la notifica del budget quando viene superata la soglia.
    • resourceGroupFilterValues Creare prima di tutto una variabile che contiene i valori di filtro del gruppo di risorse e quindi passare tale variabile. Sostituire i valori del 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 è riuscita.

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
          }
        }
      ]
    }
  }
}

Una risorsa di Azure è definita nel file Bicep:

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 <la data> di inizio con la data di inizio. Deve essere il primo del mese in formato AAAA-MM-GG. Una data di inizio futura non dovrebbe essere più di tre mesi in futuro. Una data di inizio precedente deve essere selezionata entro il periodo di tempo.
    • endDate: sostituire <la data> di fine con la data di fine nel formato AAAA-MM-GG. Se non specificato, il valore predefinito è dieci anni dalla data di inizio.
    • contactEmails: creare prima di tutto una variabile che contiene i messaggi di posta elettronica e quindi passare tale variabile. Sostituire i messaggi di posta elettronica di esempio con gli indirizzi di posta elettronica a cui inviare la notifica del budget quando viene superata la soglia.
    • contactGroups: creare prima una variabile che contenga i gruppi di contatti e quindi passare tale variabile. Sostituire i gruppi di contatti di esempio con l'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 ottenere con az monitor action-group show o Get-AzActionGroup.
    • resourceGroupFilterValues: creare prima una variabile contenente i valori di filtro del gruppo di risorse e quindi passare tale variabile. Sostituire i valori del filtro di esempio con il set di valori per il filtro del gruppo di risorse.
    • meterCategoryFilterValues: creare innanzitutto una variabile che contenga i valori di filtro delle categorie del contatore e quindi passare tale variabile. Sostituire i valori di filtro di esempio tra parentesi con il set di valori per il filtro categoria contatore.

    Nota

    Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è riuscita.

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 e distribuito usando Bicep. Per altre informazioni su Gestione costi e fatturazione e Bicep, continuare con gli articoli seguenti.