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

Orçamentos no Gerenciamento de Custos ajudam você a planejar e promover responsabilidade organizacional. Com orçamentos, você pode considerar os serviços do Azure que consome ou assina durante um período específico. Eles ajudam você a informar outras pessoas sobre seus gastos para gerenciar proativamente os custos e monitorar como os gastos evoluem ao longo do tempo. Quando os limites de orçamento que você criou são excedidos, são disparadas notificações. Nenhum de seus recursos é afetado e seu consumo não é interrompido. Você pode usar os orçamentos para comparar e controlar como analisar os custos de gastos. Este início rápido mostra como criar um orçamento chamado 'MyBudget' usando o Bicep.

O Bicep é um DSL (linguagem específica de domínio) que usa sintaxe declarativa para implantar recursos do Azure. Ele fornece sintaxe concisa, segurança de tipos confiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para suas soluções de infraestrutura como código no Azure.

Pré-requisitos

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

Se você tiver uma nova assinatura, não poderá criar um orçamento imediatamente nem usar outros recursos do Gerenciamento de Custos. Poderá levar até 48 horas para você poder usar todos os recursos do Gerenciamento de Custos.

Os orçamentos têm compatibilidade com os seguintes tipos de escopos e tipos de conta do Azure:

  • Escopos do RBAC do Azure (controle de acesso baseado em função do Azure)
    • Grupos de gerenciamento
    • Subscription
  • Escopos do Contrato Enterprise
    • Conta de cobrança
    • department
    • Conta de registro
  • Contratos individuais
    • Conta de cobrança
  • Escopos do Contrato de Cliente da Microsoft
    • Conta de cobrança
    • Perfil de faturamento
    • Seção da fatura
    • Cliente
  • Escopos da AWS
    • Conta externa
    • Assinatura externa

Para exibir os orçamentos, você precisará, pelo menos, de acesso de leitura em sua conta do Azure.

Para assinatura do Azure EA, você deve ter acesso de leitura para exibir orçamentos. Para criar e gerenciar orçamentos, você deve ter permissão de colaborador.

Há suporte para as permissões ou escopos a seguir do Azure por assinatura para orçamentos por usuário e grupo. Para obter mais informações sobre escopos, consulte Entender e trabalhar com escopos.

  • Proprietário: pode criar, mudar ou excluir os orçamentos de uma assinatura.
  • Colaborador e Colaborador de Gerenciamento de Custos: pode criar, mudar ou excluir seus próprios orçamentos. Pode modificar o valor do orçamento para orçamentos criados por outras pessoas.
  • Leitor e Leitor do Gerenciamento de Custos: pode exibir os orçamentos para os quais ele têm permissão.

Para obter mais informações sobre como atribuir permissões aos dados de Gerenciamento de Custos, consulte Atribuir acesso aos dados de Gerenciamento de Custos.

Sem-filtro

Examinar o arquivo Bicep

O arquivo Bicep usado neste guia de início rápido vem 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@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
      }
    }
  }
}

Um recurso do Azure é definido no arquivo Bicep:

Implante o arquivo Bicep

  1. Salve o arquivo Bicep como main.bicep em seu computador local.

  2. Para implantar o arquivo Bicep, use a CLI do Azure ou o 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
    

    Você precisa inserir os seguintes parâmetros:

    • startDate: substitua <start-date> pela data de início. Deve ser a primeira do mês no formato YYYY-MM-DD. Uma data de início futura não deve ser mais de três meses no futuro. Uma data de início anterior deve ser selecionada no período de granularidade de tempo.
    • endDate: substitua <end-date> pela data de término no formato YYYY-MM-DD. Se não fornecida, será padronizada para dez anos a partir da data de início.
    • contactEmails: primeiro crie uma variável que contenha os emails e, em seguida, passe essa variável. Substitua os emails de exemplo pelos endereços de email para os quais a notificação de orçamento deve ser enviada quando o limite for excedido.

    Observação

    Quando a implantação for concluída, você deverá ver uma mensagem indicando que ela foi bem-sucedida.

Um filtro

Examinar o arquivo Bicep

O arquivo Bicep usado neste guia de início rápido vem 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 arquivo Bicep:

Implante o arquivo Bicep

  1. Salve o arquivo Bicep como main.bicep em seu computador local.

  2. Para implantar o arquivo Bicep, use a CLI do Azure ou o 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
    

    Você precisa inserir os seguintes parâmetros:

    • startDate: substitua <start-date> pela data de início. Deve ser a primeira do mês no formato YYYY-MM-DD. Uma data de início futura não deve ser mais de três meses no futuro. Uma data de início anterior deve ser selecionada no período de granularidade de tempo.
    • endDate: substitua <end-date> pela data de término no formato YYYY-MM-DD. Se não fornecida, será padronizada para dez anos a partir da data de início.
    • contactEmails: primeiro crie uma variável que contenha os emails e, em seguida, passe essa variável. Substitua os emails de exemplo pelos endereços de email para os quais a notificação de orçamento deve ser enviada quando o limite for excedido.
    • resourceGroupFilterValues Primeiro, crie uma variável que contenha os valores de filtro do grupo de recursos e, em seguida, passe essa variável. Substitua os valores de filtro de exemplo pelo conjunto de valores para o filtro do grupo de recursos.

    Observação

    Quando a implantação for concluída, você deverá ver uma mensagem indicando que ela foi bem-sucedida.

Dois ou mais filtros

Examinar o arquivo Bicep

O arquivo Bicep usado neste guia de início rápido vem 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 arquivo Bicep:

Implante o arquivo Bicep

  1. Salve o arquivo Bicep como main.bicep em seu computador local.

  2. Para implantar o arquivo Bicep, use a CLI do Azure ou o 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
    

    Você precisa inserir os seguintes parâmetros:

    • startDate: substitua <start-date> pela data de início. Deve ser a primeira do mês no formato YYYY-MM-DD. Uma data de início futura não deve ser mais de três meses no futuro. Uma data de início anterior deve ser selecionada no período de granularidade de tempo.
    • endDate: substitua <end-date> pela data de término no formato YYYY-MM-DD. Se não fornecida, será padronizada para dez anos a partir da data de início.
    • contactEmails: primeiro crie uma variável que contenha os emails e, em seguida, passe essa variável. Substitua os emails de exemplo pelos endereços de email para os quais a notificação de orçamento deve ser enviada quando o limite for excedido.
    • contactGroups: primeiro crie uma variável que contenha os grupos de contatos e, em seguida, passe essa variável. Substitua os grupos de contato pela lista de grupos de ação para os quais a notificação de orçamento deve ser enviada quando o limite for excedido. Você deve passar a ID do recurso do grupo de ações, que pode ser obtida 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, passe essa variável. Substitua os valores de filtro de exemplo pelo conjunto de valores para o filtro do grupo de recursos.
    • meterCategoryFilterValues: primeiro, crie uma variável que contenha os valores de filtro da categoria de medidor e, em seguida, passe essa variável. Substitua os valores de filtro de exemplo entre parênteses pelo conjunto de valores para o filtro da categoria de medidor.

    Observação

    Quando a implantação for concluída, você deverá ver uma mensagem indicando que ela foi bem-sucedida.

Examinar os recursos implantados

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

az consumption budget list

Limpar os recursos

Quando você não precisar mais do orçamento, use o portal do Azure, a CLI do Azure ou o Azure PowerShell para excluí-la:

az consumption budget delete --budget-name MyBudget

Próximas etapas

Neste início rápido, você criou e implantou um orçamento do Azure usando o Bicep. Para saber mais sobre o Gerenciamento de Custos e Cobrança e o Bicep, continue lendo os artigos abaixo.