Schnellstart: Erstellen eines Budgets mit Bicep

Budgets in Cost Management helfen Ihnen, die organisatorische Verantwortlichkeit zu planen und zu steigern. Mit Budgets können Sie die Azure-Dienste abrechnen, die Sie in einem bestimmten Zeitraum in Anspruch nehmen oder abonnieren. Sie unterstützen Sie dabei, andere über ihre Ausgaben zu informieren, um die Kosten proaktiv zu steuern und die Entwicklung der Ausgaben im Laufe der Zeit zu überwachen. Bei Überschreitung der erstellten Budgetschwellenwerte werden Benachrichtigungen ausgelöst. Keines Ihrer Ressourcen wird beeinträchtigt, und die Nutzung wird nicht beendet. Sie können Budgets verwenden, um Ausgaben bei der Kostenanalyse zu vergleichen und zu verfolgen. In diesem Schnellstart erfahren Sie, wie Sie mit Bicep ein Budget namens MyBudget erstellen.

Bicep ist eine domänenspezifische Sprache (Domain-Specific Language, DSL), die eine deklarative Syntax zur Bereitstellung von Azure-Ressourcen verwendet. Sie bietet eine präzise Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet die beste Form der Erstellung für Ihre Infrastructure-as-Code-Lösungen in Azure.

Voraussetzungen

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Bei einem neuen Abonnement können Sie nicht sofort ein Budget erstellen oder andere Cost Management-Features nutzen. Es kann bis zu 48 Stunden dauern, bis Sie alle Cost Management-Features verwenden können.

Budgets werden für die folgenden Arten von Azure-Kontentypen und -Bereichen unterstützt:

  • Bereiche für rollenbasierte Zugriffssteuerung von Azure (Azure RBAC)
    • Verwaltungsgruppen
    • Subscription
  • Enterprise Agreement-Bereiche
    • Abrechnungskonto
    • Department
    • Registrierungskonto
  • Individuelle Vereinbarungen
    • Abrechnungskonto
  • Bereiche für Microsoft-Kundenvereinbarung
    • Abrechnungskonto
    • Abrechnungsprofil
    • Rechnungsabschnitt
    • Kunde
  • AWS-Bereiche
    • Externes Konto
    • Externes Abonnement

Um Budgets anzeigen zu können, müssen Sie mindestens über Lesezugriff auf Ihr Azure-Konto verfügen.

Zum Anzeigen von Budgets für Azure EA-Abonnements müssen Sie über Lesezugriff verfügen. Zum Erstellen und Verwalten von Budgets müssen Sie über die Berechtigung „Mitwirkender“ verfügen.

Die folgenden Azure-Berechtigungen (oder Bereich) werden pro Abonnement für Budgets nach Benutzer und Gruppe unterstützt. Weitere Informationen zu Bereichen finden Sie unter Verstehen von und Arbeiten mit Bereichen.

  • Besitzer: Kann Budgets für ein Abonnement erstellen, ändern oder löschen.
  • Mitwirkender und Mitwirkender für Cost Management: Kann eigene Budgets erstellen, ändern oder löschen. Kann den Betrag für von anderen Personen erstellten Budgets ändern.
  • Leser und Leser für Cost Management: Kann Budgets anzeigen, für die er berechtigt ist.

Weitere Informationen zum Zuweisen der Berechtigung für Cost Management-Daten finden Sie unter Zuweisen des Zugriffs auf Daten in Cost Management.

Kein Filter

Überprüfen der Bicep-Datei

Die in dieser Schnellstartanleitung verwendete Bicep-Datei stammt aus den Azure-Schnellstartvorlagen.

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

In der Bicep-Datei ist eine einzelne Azure-Ressource definiert:

Bereitstellen der Bicep-Datei

  1. Speichern Sie die Bicep-Datei als main.bicep auf Ihrem lokalen Computer.

  2. Stellen Sie die Bicep-Datei entweder mit Azure CLI oder mit Azure PowerShell bereit.

    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
    

    Sie müssen die folgenden Parameter eingeben:

    • startDate: Ersetzen Sie <start-date> durch das Startdatum. Es muss der erste Monat im Format JJJJ-MM-TT sein. Das Startdatum darf nicht mehr als drei Monate in der Zukunft liegen. Ein vergangenes Startdatum muss innerhalb des timeGrain-Zeitraums ausgewählt werden.
    • endDate: Ersetzen Sie <end-date> durch das Enddatum im Format JJJJ-MM-TT. Falls nicht angegeben, wird es standardmäßig auf zehn Jahre ab dem Startdatum festgelegt.
    • contactEmails: Erstellen Sie zunächst eine Variable, die Ihre E-Mail-Adressen enthält, und übergeben Sie dann diese Variable. Ersetzen Sie Beispiel-E-Mail-Adressen durch die E-Mail-Adressen, an die die Budgetbenachrichtigung gesendet werden soll, wenn der Schwellenwert überschritten wird.

    Hinweis

    Nach Abschluss der Bereitstellung sollte eine Meldung mit dem Hinweis angezeigt werden, dass die Bereitstellung erfolgreich war.

Einzelner Filter

Überprüfen der Bicep-Datei

Die in dieser Schnellstartanleitung verwendete Bicep-Datei stammt aus den Azure-Schnellstartvorlagen.

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

In der Bicep-Datei ist eine einzelne Azure-Ressource definiert:

Bereitstellen der Bicep-Datei

  1. Speichern Sie die Bicep-Datei als main.bicep auf Ihrem lokalen Computer.

  2. Stellen Sie die Bicep-Datei entweder mit Azure CLI oder mit Azure PowerShell bereit.

    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
    

    Sie müssen die folgenden Parameter eingeben:

    • startDate: Ersetzen Sie <start-date> durch das Startdatum. Es muss der erste Monat im Format JJJJ-MM-TT sein. Das Startdatum darf nicht mehr als drei Monate in der Zukunft liegen. Ein vergangenes Startdatum muss innerhalb des timeGrain-Zeitraums ausgewählt werden.
    • endDate: Ersetzen Sie <end-date> durch das Enddatum im Format JJJJ-MM-TT. Falls nicht angegeben, wird es standardmäßig auf zehn Jahre ab dem Startdatum festgelegt.
    • contactEmails: Erstellen Sie zunächst eine Variable, die Ihre E-Mail-Adressen enthält, und übergeben Sie dann diese Variable. Ersetzen Sie Beispiel-E-Mail-Adressen durch die E-Mail-Adressen, an die die Budgetbenachrichtigung gesendet werden soll, wenn der Schwellenwert überschritten wird.
    • resourceGroupFilterValues Erstellen Sie zunächst eine Variable, die Ihre Werte für Ressourcengruppenfilter enthält, und übergeben Sie dann diese Variable. Ersetzen Sie die Beispielfilterwerte durch die Menge von Werten für Ihren Ressourcengruppenfilter.

    Hinweis

    Nach Abschluss der Bereitstellung sollte eine Meldung mit dem Hinweis angezeigt werden, dass die Bereitstellung erfolgreich war.

Zwei oder mehr Filter

Überprüfen der Bicep-Datei

Die in dieser Schnellstartanleitung verwendete Bicep-Datei stammt aus den Azure-Schnellstartvorlagen.

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

In der Bicep-Datei ist eine einzelne Azure-Ressource definiert:

Bereitstellen der Bicep-Datei

  1. Speichern Sie die Bicep-Datei als main.bicep auf Ihrem lokalen Computer.

  2. Stellen Sie die Bicep-Datei entweder mit Azure CLI oder mit Azure PowerShell bereit.

    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
    

    Sie müssen die folgenden Parameter eingeben:

    • startDate: Ersetzen Sie <start-date> durch das Startdatum. Es muss der erste Monat im Format JJJJ-MM-TT sein. Das Startdatum darf nicht mehr als drei Monate in der Zukunft liegen. Ein vergangenes Startdatum muss innerhalb des timeGrain-Zeitraums ausgewählt werden.
    • endDate: Ersetzen Sie <end-date> durch das Enddatum im Format JJJJ-MM-TT. Falls nicht angegeben, wird es standardmäßig auf zehn Jahre ab dem Startdatum festgelegt.
    • contactEmails: Erstellen Sie zunächst eine Variable, die Ihre E-Mail-Adressen enthält, und übergeben Sie dann diese Variable. Ersetzen Sie Beispiel-E-Mail-Adressen durch die E-Mail-Adressen, an die die Budgetbenachrichtigung gesendet werden soll, wenn der Schwellenwert überschritten wird.
    • contactGroups Erstellen Sie zunächst eine Variable, die Ihre Kontaktgruppen enthält, und übergeben Sie dann diese Variable. Ersetzen Sie die Beispielkontaktgruppen durch die Liste von Aktionsgruppen ein, an die die Budgetbenachrichtigung gesendet werden soll, wenn der Schwellenwert überschritten wird. Sie müssen die Ressourcen-ID der Aktionsgruppe übergeben, die Sie mit az monitor action-group show oder Get-AzActionGroup abrufen können.
    • resourceGroupFilterValues Erstellen Sie zunächst eine Variable, die Ihre Werte für Ressourcengruppenfilter enthält, und übergeben Sie dann diese Variable. Ersetzen Sie die Beispielfilterwerte durch die Menge von Werten für Ihren Ressourcengruppenfilter.
    • meterCategoryFilterValues Erstellen Sie zunächst eine Variable, die Ihre Werte für den Filter für die Kategorie für Messung enthält, und übergeben Sie dann diese Variable. Ersetzen Sie die Beispielfilterwerte in Klammern durch die Menge von Werten für Ihren Filter für die Kategorie für Messung.

    Hinweis

    Nach Abschluss der Bereitstellung sollte eine Meldung mit dem Hinweis angezeigt werden, dass die Bereitstellung erfolgreich war.

Überprüfen der bereitgestellten Ressourcen

Verwenden Sie das Azure-Portal, die Azure CLI oder Azure PowerShell, um die bereitgestellten Ressourcen in der Ressourcengruppe aufzulisten.

az consumption budget list

Bereinigen von Ressourcen

Wenn das Budget nicht mehr benötigt wird, löschen Sie es über das Azure-Portal, die Azure CLI oder Azure PowerShell:

az consumption budget delete --budget-name MyBudget

Nächste Schritte

In dieser Schnellstartanleitung haben Sie mit Bicep ein Budget erstellt und bereitgestellt. Weitere Informationen zu Kostenverwaltung und Abrechnung sowie zu Bicep finden Sie in den folgenden Artikeln.