Rychlý start: Vytvoření rozpočtu pomocí Bicepu

Rozpočty ve službě Cost Management pomáhají plánovat a řídit odpovědnost v organizaci. Pomocí rozpočtů můžete zodpovídat za služby Azure, které využíváte nebo k jejichž odběru jste po určitou dobu přihlášení. Pomáhají vám informovat ostatní o svých výdajích, aby proaktivně spravovaly náklady a monitorovaly, jak výdaje v průběhu času postupují. Při překročení vámi vytvořených prahových hodnot rozpočtu se aktivují oznámení. Žádný z vašich prostředků není ovlivněný a vaše spotřeba není zastavena. Rozpočty můžete použít k porovnání a sledování výdajů při analýze nákladů. V tomto rychlém startu se dozvíte, jak vytvořit rozpočet s názvem MyBudget pomocí nástroje Bicep.

Bicep je jazyk specifický pro doménu (DSL), který k nasazování prostředků Azure používá deklarativní syntaxi. Poskytuje stručnou syntaxi, spolehlivou bezpečnost typů a podporu opakovaného použití kódu. Bicep nabízí nejlepší prostředí pro vytváření pro vaše řešení infrastruktury jako kódu v Azure.

Požadavky

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

Pokud máte nové předplatné, nemůžete rovnou vytvořit rozpočet ani využívat další funkce služby Cost Management. Může trvat až 48 hodin, než budete moct využívat všechny funkce služby Cost Management.

Rozpočty se podporují pro následující typy rozsahů a účtů Azure:

  • Rozsahy řízení přístupu na základě role Azure (Azure RBAC)
    • Skupiny pro správu
    • Předplatné
  • Rozsahy smlouvy Enterprise
    • Fakturační účet
    • Oddělení
    • Registrační účet
  • Jednotlivé smlouvy
    • Fakturační účet
  • Rozsahy smluv se zákazníky Microsoftu
    • Fakturační účet
    • Fakturační profil
    • Oddíl faktury
    • Zákazník
  • Rozsahy AWS
    • Externí účet
    • Externí předplatné

Pokud chcete zobrazit rozpočty, potřebujete přinejmenším oprávnění ke čtení k vašemu účtu Azure.

Pokud máte předplatná Azure EA, musíte mít oprávnění ke čtení, abyste si mohli rozpočty zobrazit. Chcete-li rozpočty vytvářet a spravovat, musíte mít oprávnění přispěvatele.

Pro rozpočty se podporují následující oprávnění nebo obory Azure pro předplatná podle uživatelů a skupin. Další informace o oborech najdete v článku o principech oborů a práci s nimi.

  • Vlastník: může v předplatném vytvářet, upravovat a odstraňovat rozpočty.
  • Přispěvatel a přispěvatel služby Cost Management: může vytvářet, upravovat a odstraňovat vlastní rozpočty. Může měnit částky rozpočtu pro rozpočty, které vytvářejí jiní uživatelé.
  • Čtenář a čtenář služby Cost Management: může zobrazovat rozpočty, ke kterým má oprávnění.

Další informace o přiřazování oprávnění k datům služby Cost Management najdete v tématu Přiřazení přístupu k datům služby Cost Management.

Žádný filtr

Kontrola souboru Bicep

Soubor Bicep použitý v tomto rychlém startu je ze šablon Azure pro rychlý start.

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

V souboru Bicep je definovaný jeden prostředek Azure:

Nasazení souboru Bicep

  1. Uložte soubor Bicep jako main.bicep do místního počítače.

  2. Nasaďte soubor Bicep pomocí Azure CLI nebo 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
    

    Musíte zadat následující parametry:

    • startDate: Nahraďte<počáteční datum> počátečním datem. Musí to být první v měsíci ve formátu RRRR-MM-DD. Budoucí počáteční datum by nemělo být delší než tři měsíce. V časovém intervalu by mělo být vybráno datum posledního zahájení.
    • endDate: Koncové datum> nahraďte< koncovým datem ve formátu RRRR-MM-DD. Pokud není zadaný, výchozí hodnota je deset let od počátečního data.
    • contactEmails: Nejprve vytvořte proměnnou, která obsahuje vaše e-maily, a pak ji předejte. Nahraďte ukázkové e-maily e-mailovými adresami, na které se odešle oznámení o rozpočtu při překročení prahové hodnoty.

    Poznámka

    Po dokončení nasazení by se měla zobrazit zpráva oznamující, že nasazení bylo úspěšné.

Jeden filtr

Kontrola souboru Bicep

Soubor Bicep použitý v tomto rychlém startu je ze šablon Azure pro rychlý start.

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

V souboru Bicep je definovaný jeden prostředek Azure:

Nasazení souboru Bicep

  1. Uložte soubor Bicep jako main.bicep do místního počítače.

  2. Nasaďte soubor Bicep pomocí Azure CLI nebo 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
    

    Musíte zadat následující parametry:

    • startDate: Nahraďte<počáteční datum> počátečním datem. Musí to být první v měsíci ve formátu RRRR-MM-DD. Budoucí počáteční datum by nemělo být delší než tři měsíce. V časovém intervalu by mělo být vybráno datum posledního zahájení.
    • endDate: Koncové datum> nahraďte< koncovým datem ve formátu RRRR-MM-DD. Pokud není zadaný, výchozí hodnota je deset let od počátečního data.
    • contactEmails: Nejprve vytvořte proměnnou, která obsahuje vaše e-maily, a pak ji předejte. Nahraďte ukázkové e-maily e-mailovými adresami, na které se odešle oznámení o rozpočtu při překročení prahové hodnoty.
    • resourceGroupFilterValues Nejprve vytvořte proměnnou, která obsahuje hodnoty filtru vaší skupiny prostředků, a pak ji předejte. Nahraďte ukázkové hodnoty filtru sadou hodnot pro filtr skupiny prostředků.

    Poznámka

    Po dokončení nasazení by se měla zobrazit zpráva oznamující, že nasazení bylo úspěšné.

Dva nebo více filtrů

Kontrola souboru Bicep

Soubor Bicep použitý v tomto rychlém startu je ze šablon Azure pro rychlý start.

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

V souboru Bicep je definovaný jeden prostředek Azure:

Nasazení souboru Bicep

  1. Uložte soubor Bicep jako main.bicep do místního počítače.

  2. Nasaďte soubor Bicep pomocí Azure CLI nebo 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
    

    Musíte zadat následující parametry:

    • startDate: Nahraďte<start-date> počátečním datem. Musí to být první v měsíci ve formátu RRRR-MM-DD. Budoucí počáteční datum by nemělo být delší než tři měsíce v budoucnosti. V časovém intervalu by mělo být vybráno datum posledního zahájení.
    • endDate: Hodnotu end-date> nahraďte< koncovým datem ve formátu RRRR-MM-DD. Pokud není zadaný, výchozí hodnota je deset let od počátečního data.
    • contactEmails: Nejdřív vytvořte proměnnou, která obsahuje vaše e-maily, a pak ji předejte. Nahraďte ukázkové e-maily e-mailovými adresami, na které se odešle oznámení o překročení prahové hodnoty rozpočtu.
    • contactGroups: Nejprve vytvořte proměnnou, která obsahuje vaše skupiny kontaktů, a pak ji předejte. Nahraďte ukázkové skupiny kontaktů seznamem skupin akcí, kterým se odešle oznámení o rozpočtu při překročení prahové hodnoty. Musíte předat ID prostředku skupiny akcí, které můžete získat pomocí příkazu az monitor action-group show nebo Get-AzActionGroup.
    • resourceGroupFilterValues: Nejprve vytvořte proměnnou, která obsahuje hodnoty filtru skupiny prostředků, a pak ji předejte. Nahraďte ukázkové hodnoty filtru sadou hodnot pro filtr skupiny prostředků.
    • meterCategoryFilterValues: Nejprve vytvořte proměnnou, která obsahuje hodnoty filtru kategorií měřičů, a pak ji předejte. Nahraďte ukázkové hodnoty filtru v závorkách sadou hodnot pro filtr kategorií měřičů.

    Poznámka

    Po dokončení nasazení by se měla zobrazit zpráva oznamující, že nasazení bylo úspěšné.

Kontrola nasazených prostředků

K výpisu nasazených prostředků ve skupině prostředků použijte Azure Portal, Azure CLI nebo Azure PowerShell.

az consumption budget list

Vyčištění prostředků

Pokud už rozpočet nepotřebujete, odstraňte ho pomocí Azure Portal, Azure CLI nebo Azure PowerShell:

az consumption budget delete --budget-name MyBudget

Další kroky

V tomto rychlém startu jste vytvořili rozpočet a nasadili ho pomocí nástroje Bicep. Další informace o službě Cost Management a fakturaci a Bicep najdete v následujících článcích.