Partager via


Démarrage rapide : Créer un budget avec Bicep

Les budgets dans Cost Management vous aident à planifier et à suivre la comptabilité de l’organisation. Avec les budgets, vous pouvez prendre en compte les services Azure que vous consommez ou auxquels vous vous abonnez pendant une période spécifique. Ils vous permettent d’informer les autres utilisateurs de leurs dépenses pour leur permettre de gérer les coûts de manière proactive, ainsi que de surveiller la progression des dépenses. En cas de dépassement des seuils budgétaires que vous avez créés, des notifications sont déclenchées. Aucune de vos ressources n’est affectée et votre consommation n’est pas arrêtée. Vous pouvez utiliser des budgets pour comparer et suivre les dépenses lors de l’analyse des coûts. Ce démarrage rapide vous montre comment créer un budget nommé « MonBudget » à l’aide de Bicep.

Bicep est un langage spécifique à un domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Il fournit une syntaxe concise, une cohérence des types fiable et une prise en charge de la réutilisation du code. Bicep offre la meilleure expérience de création pour vos solutions d’infrastructure en tant que code dans Azure.

Prérequis

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Si vous disposez d’un nouvel abonnement, vous ne pouvez pas créer un budget ou utiliser les autres fonctionnalités de Cost Management tout de suite. Vous risquez de devoir attendre jusqu’à 48 heures avant de pouvoir utiliser toutes les fonctionnalités de Cost Management.

Les budgets sont pris en charge pour les types suivants d’étendues et de types de comptes Azure :

  • Étendues de contrôle d’accès en fonction du rôle Azure (Azure RBAC)
    • Groupes d’administration
    • Abonnement
  • Étendues Contrat Entreprise
    • Compte de facturation
    • department
    • Compte d’inscription
  • Contrats individuels
    • Compte de facturation
  • Étendues Contrat client Microsoft
    • Compte de facturation
    • Profil de facturation
    • Section de facture
    • Client
  • Étendues AWS
    • Compte externe
    • Abonnement externe

Pour afficher les budgets, vous devez au minimum disposer d'un accès en lecture à votre compte Azure.

Dans le cadre des abonnements Azure EA, vous devez disposer d'un accès en lecture pour afficher les budgets. Pour créer et gérer des budgets, vous devez disposer d’une autorisation de contributeur.

Les autorisations, ou étendues, Azure suivantes sont prises en charge par abonnement aux budgets par utilisateur et par groupe. Pour plus d’informations sur les étendues, consultez Comprendre et utiliser les étendues.

  • Propriétaire : peut créer, modifier ou supprimer les budgets d’un abonnement.
  • Contributeur et Contributeur Cost Management : peut créer, modifier ou supprimer ses propres budgets. Peut modifier le montant des budgets créés par d’autres utilisateurs.
  • Lecteur et Lecteur Cost Management : peut voir les budgets pour lesquels il dispose des autorisations appropriées.

Pour plus d’informations sur l’affectation d’une autorisation d’accès aux données Cost Management, consultez Affecter une autorisation d’accès aux données Cost Management.

Aucun filtre

Examiner le fichier Bicep

Le fichier Bicep utilisé dans ce guide de démarrage rapide est tiré des modèles de démarrage rapide 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

Une seule ressource Azure est définie dans le fichier Bicep :

Déployer le fichier Bicep

  1. Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.

  2. Déployez le fichier Bicep à l’aide d’Azure CLI ou d’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
    

    Vous devez entrer les paramètres suivants :

    • startDate : remplacez <start-date> par la date de début. Celle-ci doit être le premier du mois au format AAAA-MM-DD. Une date de début à venir ne doit pas se situer plus de trois mois dans le futur. Une date de début passée doit être sélectionnée dans la période de temps.
    • endDate : remplacez <end-date> par la date de fin au format AAAA-MM-DD. Par défaut, elles est définie sur dix ans à partir de la date de début.
    • contactEmails : commencez par créer une variable contenant vos e-mails, puis transmettez-la. Remplacez les échantillons d’adresses e-mail par les adresses auxquelles envoyer la notification de budget quand le seuil est dépassé.

    Notes

    Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.

Un filtre

Examiner le fichier Bicep

Le fichier Bicep utilisé dans ce guide de démarrage rapide est tiré des modèles de démarrage rapide 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
      }
    }
  }
}

Une seule ressource Azure est définie dans le fichier Bicep :

Déployer le fichier Bicep

  1. Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.

  2. Déployez le fichier Bicep à l’aide d’Azure CLI ou d’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
    

    Vous devez entrer les paramètres suivants :

    • startDate : remplacez <start-date> par la date de début. Celle-ci doit être le premier du mois au format AAAA-MM-DD. Une date de début à venir ne doit pas se situer plus de trois mois dans le futur. Une date de début passée doit être sélectionnée dans la période de temps.
    • endDate : remplacez <end-date> par la date de fin au format AAAA-MM-DD. Par défaut, elles est définie sur dix ans à partir de la date de début.
    • contactEmails : commencez par créer une variable contenant vos e-mails, puis transmettez-la. Remplacez les échantillons d’adresses e-mail par les adresses auxquelles envoyer la notification de budget quand le seuil est dépassé.
    • resourceGroupFilterValues : commencez par créer une variable contenant les valeurs de votre filtre de groupe de ressources, puis transmettez cette variable. Remplacez les échantillons de valeurs de filtre par l’ensemble des valeurs de votre filtre de groupe de ressources.

    Notes

    Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.

Deux filtres ou plus

Examiner le fichier Bicep

Le fichier Bicep utilisé dans ce guide de démarrage rapide est tiré des modèles de démarrage rapide 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
          }
        }
      ]
    }
  }
}

Une seule ressource Azure est définie dans le fichier Bicep :

Déployer le fichier Bicep

  1. Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.

  2. Déployez le fichier Bicep à l’aide d’Azure CLI ou d’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
    

    Vous devez entrer les paramètres suivants :

    • startDate : remplacez <start-date> par la date de début. Celle-ci doit être le premier du mois au format AAAA-MM-DD. Une date de début à venir ne doit pas se situer plus de trois mois dans le futur. Une date de début passée doit être sélectionnée dans la période de temps.
    • endDate : remplacez <end-date> par la date de fin au format AAAA-MM-DD. Par défaut, elles est définie sur dix ans à partir de la date de début.
    • contactEmails : commencez par créer une variable contenant vos e-mails, puis transmettez-la. Remplacez les échantillons d’adresses e-mail par les adresses auxquelles envoyer la notification de budget quand le seuil est dépassé.
    • contactGroups : commencez par créer une variable contenant vos groupes de contacts, puis transmettez-la. Remplacez les échantillons de groupes de contacts par la liste des groupes d’actions auxquels envoyer la notification de budget quand le seuil est dépassé. Vous devez transmettre l’ID de ressource du groupe d’actions, que vous pouvez obtenir avec az monitor action-group show ou Get-AzActionGroup.
    • resourceGroupFilterValues : commencez par créer une variable contenant les valeurs de votre filtre de groupe de ressources, puis transmettez cette variable. Remplacez les échantillons de valeurs de filtre par l’ensemble des valeurs de votre filtre de groupe de ressources.
    • meterCategoryFilterValues : commencez par créer une variable contenant les valeurs de votre filtre de catégorie de compteur, puis transmettez cette variable. Remplacez les échantillons de valeurs de filtre entre parenthèses par l’ensemble de valeurs de votre filtre de catégorie de compteur.

    Notes

    Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.

Vérifier les ressources déployées

Utilisez le portail Azure, Azure CLI ou Azure PowerShell pour répertorier les ressources déployées dans le groupe de ressources.

az consumption budget list

Nettoyer les ressources

Quand vous n’avez plus besoin du budget, utilisez le portail Azure, Azure CLI ou Azure PowerShell pour le supprimer :

az consumption budget delete --budget-name MyBudget

Étapes suivantes

Dans ce démarrage rapide, vous avez créé et déployé un budget à l’aide de Bicep. Pour en savoir plus sur Cost management et facturation ainsi que sur Bicep, consultez les articles ci-dessous.