Início Rápido: Criar um orçamento com o Bicep

Os orçamentos no Cost Management ajudam-no a planear e a gerar a responsabilidade organizacional. Com os orçamentos, pode contribuir para os serviços do Azure que consome ou subscrever durante um período específico. Ajudam-no a informar os outros sobre os seus gastos para gerir proativamente os custos e monitorizar a forma como as despesas progridem ao longo do tempo. Quando os limiares do orçamento que criou são excedidos, são acionadas notificações. Nenhum dos seus recursos é afetado e o consumo não será suspenso. Pode utilizar os orçamentos para comparar e acompanhar as despesas enquanto analisa os custos. Este início rápido mostra-lhe como criar um orçamento com o nome "MyBudget" com o Bicep.

O Bicep é uma linguagem específica do domínio que utiliza sintaxe declarativa para implementar recursos do Azure. Fornece sintaxe concisa, segurança de tipo fiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para as suas soluções de infraestrutura como código no Azure.

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Se tiver uma subscrição nova, não pode criar imediatamente um orçamento nem utilizar outras funcionalidades do Cost Management. Poderá demorar até 48 horas até poder utilizar todas as funcionalidades do Cost Management.

São suportados orçamentos para os seguintes tipos e âmbitos de conta do Azure:

  • Âmbitos do controlo de acesso baseado em funções do Azure (RBAC do Azure)
    • Grupos de gestão
    • Subscrição
  • Âmbitos do Contrato Enterprise
    • Conta de faturação
    • Departamento
    • Conta de inscrição
  • Contratos individuais
    • Conta de faturação
  • Âmbitos do Contrato de Cliente Microsoft
    • Conta de faturação
    • Perfil de faturação
    • Secção de fatura
    • Cliente
  • Âmbitos do AWS
    • Conta externa
    • Subscrição externa

Para ver os orçamentos, precisa de ter, pelo menos, acesso de leitura na sua conta do Azure.

No caso de subscrições EA, tem de ter acesso de leitura para ver os orçamentos. Para criar e gerir orçamentos, tem de ter permissão de contribuidor.

As seguintes permissões, ou âmbitos, do Azure são suportadas por subscrição para os orçamentos por utilizador e grupo. Para obter mais informações sobre os âmbitos, veja Compreender e trabalhar com âmbitos.

  • Proprietário: pode criar, modificar ou eliminar orçamentos de uma subscrição.
  • Contribuidor e contribuidor do Cost Management: podem criar, modificar ou eliminar os próprios orçamentos. Pode modificar a quantidade de orçamento para orçamentos criados por outros utilizadores.
  • Leitor e leitor do Cost Management: podem ver os orçamentos para os quais têm permissões.

Para obter mais informações sobre a atribuição da permissão para os dados do Cost Management, veja Atribuir acesso aos dados do Cost Management.

Sem filtro

Rever o ficheiro Bicep

O ficheiro Bicep utilizado neste início rápido é proveniente dos Modelos de Início Rápido do 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

Um recurso do Azure é definido no ficheiro Bicep:

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como main.bicep no seu computador local.

  2. Implemente o ficheiro Bicep com a CLI do Azure ou 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
    

    Tem de introduzir os seguintes parâmetros:

    • startDate: substitua <start-date> pela data de início. Tem de ser o primeiro do mês no formato YYYY-MM-DD. Uma data de início futura não deverá ser superior a três meses no futuro. Deve ser selecionada uma data de início anterior dentro do período de tempo.
    • endDate: substitua <a data> de fim pela data de fim no formato YYYY-MM-DD. Se não for fornecido, a predefinição é de dez anos a partir da data de início.
    • contactEmails: primeiro, crie uma variável que contenha os seus e-mails e, em seguida, transmita essa variável. Substitua os e-mails de exemplo pelos endereços de e-mail para enviar a notificação de orçamento para quando o limiar for excedido.

    Nota

    Quando a implementação terminar, deverá ver uma mensagem a indicar que a implementação foi efetuada com êxito.

Um filtro

Rever o ficheiro Bicep

O ficheiro Bicep utilizado neste início rápido é proveniente dos Modelos de Início Rápido do 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
      }
    }
  }
}

Um recurso do Azure é definido no ficheiro Bicep:

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como main.bicep no seu computador local.

  2. Implemente o ficheiro Bicep com a CLI do Azure ou 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
    

    Tem de introduzir os seguintes parâmetros:

    • startDate: substitua <start-date> pela data de início. Tem de ser o primeiro do mês no formato YYYY-MM-DD. Uma data de início futura não deverá ser superior a três meses no futuro. Deve ser selecionada uma data de início anterior dentro do período de tempo.
    • endDate: substitua <a data> de fim pela data de fim no formato YYYY-MM-DD. Se não for fornecido, a predefinição é de dez anos a partir da data de início.
    • contactEmails: primeiro, crie uma variável que contenha os seus e-mails e, em seguida, transmita essa variável. Substitua os e-mails de exemplo pelos endereços de e-mail para enviar a notificação de orçamento para quando o limiar for excedido.
    • resourceGroupFilterValues Primeiro, crie uma variável que contenha os valores de filtro do grupo de recursos e, em seguida, transmita essa variável. Substitua os valores de filtro de exemplo pelo conjunto de valores do filtro do grupo de recursos.

    Nota

    Quando a implementação terminar, deverá ver uma mensagem a indicar que a implementação foi efetuada com êxito.

Dois ou mais filtros

Rever o ficheiro Bicep

O ficheiro Bicep utilizado neste início rápido é proveniente dos Modelos de Início Rápido do 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
          }
        }
      ]
    }
  }
}

Um recurso do Azure é definido no ficheiro Bicep:

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como main.bicep no seu computador local.

  2. Implemente o ficheiro Bicep com a CLI do Azure ou 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
    

    Tem de introduzir os seguintes parâmetros:

    • startDate: substitua <start-date> pela data de início. Tem de ser o primeiro do mês no formato AAAA-MM-DD. Uma data de início futura não deverá ser superior a três meses no futuro. Deve ser selecionada uma data de início anterior dentro do período de tempo.
    • endDate: substitua <a data> de fim pela data de fim no formato AAAA-MM-DD. Se não for fornecido, a predefinição é dez anos a partir da data de início.
    • contactEmails: primeiro, crie uma variável que contenha os seus e-mails e, em seguida, transmita essa variável. Substitua os e-mails de exemplo pelos endereços de e-mail para onde enviar a notificação de orçamento quando o limiar for excedido.
    • contactGroups: primeiro, crie uma variável que contenha os seus grupos de contactos e, em seguida, transmita essa variável. Substitua os grupos de contactos de exemplo pela lista de grupos de ações para onde enviar a notificação de orçamento quando o limiar for excedido. Tem de transmitir o ID de recurso do grupo de ações, que pode obter com az monitor action-group show ou Get-AzActionGroup.
    • resourceGroupFilterValues: primeiro, crie uma variável que contenha os valores de filtro do grupo de recursos e, em seguida, transmita essa variável. Substitua os valores de filtro de exemplo pelo conjunto de valores do filtro do grupo de recursos.
    • meterCategoryFilterValues: primeiro, crie uma variável que contenha os valores de filtro da categoria do medidor e, em seguida, transmita essa variável. Substitua os valores de filtro de exemplo entre parênteses pelo conjunto de valores do filtro de categoria do medidor.

    Nota

    Quando a implementação terminar, deverá ver uma mensagem a indicar que a implementação foi bem-sucedida.

Rever recursos implementados

Utilize o portal do Azure, a CLI do Azure ou Azure PowerShell para listar os recursos implementados no grupo de recursos.

az consumption budget list

Limpar recursos

Quando já não precisar do orçamento, utilize o portal do Azure, a CLI do Azure ou Azure PowerShell para o eliminar:

az consumption budget delete --budget-name MyBudget

Passos seguintes

Neste início rápido, criou um orçamento e implementou-o com o Bicep. Para saber mais sobre o Cost Management, Faturação e Bicep, avance para os artigos abaixo.