Udostępnij za pośrednictwem


Szybki start: tworzenie budżetu przy użyciu Bicep

Budżety w usłudze Cost Management ułatwiają planowanie poprawy odpowiedzialności organizacji. Za pomocą budżetów możesz obserwować koszt wykorzystywanych lub subskrybowanych usług platformy Azure w określonym czasie. Ułatwiają one informowanie innych osób o ich wydatkach, aby aktywnie zarządzać kosztami i monitorować postęp wydatków w czasie. Po przekroczeniu utworzonych progów budżetowych wyzwalane są powiadomienia. Nie ma to wpływu na zasoby ani nie następuje zatrzymanie użycia. Budżety umożliwiają porównywanie i śledzenie wydatków, co ułatwia analizę kosztów. W tym przewodniku Szybki start pokazano, jak utworzyć budżet o nazwie "MyBudget" przy użyciu aplikacji Bicep.

Bicep to język specyficzny dla domeny (DSL), który używa składni deklaratywnej do wdrażania zasobów platformy Azure. Zapewnia zwięzłą składnię, niezawodne bezpieczeństwo typów i obsługę ponownego użycia kodu. Bicep oferuje najlepsze środowisko tworzenia rozwiązań infrastruktury jako kodu na platformie Azure.

Wymagania wstępne

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Jeśli masz nową subskrypcję, nie możesz od razu tworzyć budżetu ani korzystać z innych funkcji usługi Cost Management. Aby można było korzystać ze wszystkich funkcji usługi Cost Management, może upłynąć do 48 godzin.

Budżety są obsługiwane dla następujących typów kont i zakresów platformy Azure:

  • Zakresy kontroli dostępu opartej na rolach (RBAC) platformy Azure
    • Grupy zarządzania
    • Subskrypcja
  • zakresy Umowa Enterprise
    • Konto billingowe
    • Dział
    • Konto rejestracji
  • Umowy indywidualne
    • Konto rozliczeniowe
  • zakresy Umowa z Klientem Microsoft
    • Konto billingowe
    • Profil rozliczeniowy
    • Sekcja faktury
    • Klient
  • Zakresy platformy AWS
    • Konto zewnętrzne
    • Subskrypcja zewnętrzna

Aby wyświetlić budżety, potrzebujesz przynajmniej dostępu do odczytu dla Twojego konta platformy Azure.

W przypadku subskrypcji Azure EA wyświetlanie budżetów wymaga dostępu do odczytu. Aby tworzyć budżety i zarządzać nimi, musisz mieć uprawnienie współautora.

Na potrzeby tworzenia budżetów przez użytkownika i grupę w ramach subskrypcji są obsługiwane następujące uprawnienia, czyli zakresy, platformy Azure. Aby uzyskać więcej informacji na temat zakresów, zobacz Omówienie zakresów i praca z nimi.

  • Właściciel: może tworzyć, modyfikować i usuwać budżety dla subskrypcji.
  • Współautor i współautor usługi Cost Management: może tworzyć, modyfikować i usuwać swoje budżety. Może też modyfikować kwoty budżetów utworzonych przez innych użytkowników.
  • Czytelnik i czytelnik usługi Cost Management: może wyświetlać budżety, do których ma uprawnienia.

Aby uzyskać więcej informacji na temat przypisywania uprawnień do danych usługi Cost Management, zobacz Przypisywanie dostępu do danych usługi Cost Management.

Brak filtru

Przejrzyj plik Bicep

Plik Bicep używany w tym przewodniku Szybki start pochodzi z szablonów szybkiego startu platformy 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

Jeden zasób platformy Azure jest zdefiniowany w pliku Bicep:

Wdrażanie pliku Bicep

  1. Zapisz plik Bicep jako main.bicep na komputerze lokalnym.

  2. Wdróż plik Bicep przy użyciu interfejsu wiersza polecenia platformy Azure lub programu 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
    

    Musisz wprowadzić następujące parametry:

    • startDate: zastąp <datę rozpoczęcia> datą rozpoczęcia. Musi to być pierwszy miesiąc w formacie RRRR-MM-DD. W przyszłości data rozpoczęcia nie powinna być większa niż trzy miesiące. W przedziale czasu należy wybrać poprzednią datę rozpoczęcia.
    • endDate: zastąp <datę> końcową datą zakończenia w formacie RRRR-MM-DD. Jeśli nie zostanie podana, wartość domyślna to dziesięć lat od daty rozpoczęcia.
    • contactEmails: najpierw utwórz zmienną zawierającą wiadomości e-mail, a następnie przekaż zmienną. Zastąp przykładowe wiadomości e-mail adresami e-mail, aby wysłać powiadomienie budżetu do momentu przekroczenia progu.

    Uwaga

    Po zakończeniu wdrażania powinien zostać wyświetlony komunikat informujący o pomyślnym wdrożeniu.

Jeden filtr

Przejrzyj plik Bicep

Plik Bicep używany w tym przewodniku Szybki start pochodzi z szablonów szybkiego startu platformy 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
      }
    }
  }
}

Jeden zasób platformy Azure jest zdefiniowany w pliku Bicep:

Wdrażanie pliku Bicep

  1. Zapisz plik Bicep jako main.bicep na komputerze lokalnym.

  2. Wdróż plik Bicep przy użyciu interfejsu wiersza polecenia platformy Azure lub programu 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
    

    Musisz wprowadzić następujące parametry:

    • startDate: zastąp <datę rozpoczęcia> datą rozpoczęcia. Musi to być pierwszy miesiąc w formacie RRRR-MM-DD. W przyszłości data rozpoczęcia nie powinna być większa niż trzy miesiące. W przedziale czasu należy wybrać poprzednią datę rozpoczęcia.
    • endDate: zastąp <datę> końcową datą zakończenia w formacie RRRR-MM-DD. Jeśli nie zostanie podana, wartość domyślna to dziesięć lat od daty rozpoczęcia.
    • contactEmails: najpierw utwórz zmienną zawierającą wiadomości e-mail, a następnie przekaż zmienną. Zastąp przykładowe wiadomości e-mail adresami e-mail, aby wysłać powiadomienie budżetu do momentu przekroczenia progu.
    • resourceGroupFilterValues Najpierw utwórz zmienną, która przechowuje wartości filtru grupy zasobów, a następnie przekaż ten zmienną. Zastąp przykładowe wartości filtru zestawem wartości filtru grupy zasobów.

    Uwaga

    Po zakończeniu wdrażania powinien zostać wyświetlony komunikat informujący o pomyślnym wdrożeniu.

Co najmniej dwa filtry

Przejrzyj plik Bicep

Plik Bicep używany w tym przewodniku Szybki start pochodzi z szablonów szybkiego startu platformy 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
          }
        }
      ]
    }
  }
}

Jeden zasób platformy Azure jest zdefiniowany w pliku Bicep:

Wdrażanie pliku Bicep

  1. Zapisz plik Bicep jako main.bicep na komputerze lokalnym.

  2. Wdróż plik Bicep przy użyciu interfejsu wiersza polecenia platformy Azure lub programu 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
    

    Musisz wprowadzić następujące parametry:

    • startDate: zastąp <datę rozpoczęcia> datą rozpoczęcia. Musi to być pierwszy miesiąc w formacie RRRR-MM-DD. W przyszłości data rozpoczęcia nie powinna być większa niż trzy miesiące. W przedziale czasu należy wybrać poprzednią datę rozpoczęcia.
    • endDate: zastąp <datę> końcową datą zakończenia w formacie RRRR-MM-DD. Jeśli nie zostanie podana, wartość domyślna to dziesięć lat od daty rozpoczęcia.
    • contactEmails: najpierw utwórz zmienną zawierającą wiadomości e-mail, a następnie przekaż zmienną. Zastąp przykładowe wiadomości e-mail adresami e-mail, aby wysłać powiadomienie budżetu do momentu przekroczenia progu.
    • contactGroups: najpierw utwórz zmienną zawierającą grupy kontaktów, a następnie przekaż zmienną. Zastąp przykładowe grupy kontaktów listą grup akcji, aby wysłać powiadomienie budżetu do momentu przekroczenia progu. Musisz przekazać identyfikator zasobu grupy akcji, którą można uzyskać za pomocą polecenia az monitor action-group show lub Get-AzActionGroup.
    • resourceGroupFilterValues: najpierw utwórz zmienną zawierającą wartości filtru grupy zasobów, a następnie przekaż zmienną. Zastąp przykładowe wartości filtru zestawem wartości filtru grupy zasobów.
    • meterCategoryFilterValues: najpierw utwórz zmienną zawierającą wartości filtru kategorii miernika, a następnie przekaż zmienną. Zastąp przykładowe wartości filtru w nawiasach zestawem wartości filtru kategorii miernika.

    Uwaga

    Po zakończeniu wdrażania powinien zostać wyświetlony komunikat informujący o pomyślnym wdrożeniu.

Przeglądanie wdrożonych zasobów

Użyj witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby wyświetlić listę wdrożonych zasobów w grupie zasobów.

az consumption budget list

Czyszczenie zasobów

Jeśli budżet nie jest już potrzebny, usuń go za pomocą witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell:

az consumption budget delete --budget-name MyBudget

Następne kroki

W tym przewodniku Szybki start utworzono budżet i wdrożono go przy użyciu aplikacji Bicep. Aby dowiedzieć się więcej na temat zarządzania kosztami i rozliczeń i Bicep, przejdź do poniższych artykułów.