Quickstart: 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 os gastos 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 quickstart mostra-lhe como criar um orçamento chamado 'MyBudget' usando Bicep.

Bicep é uma língua específica do domínio (DSL) que usa sintaxe declarativa para implantar recursos Azure. Fornece sintaxe concisa, segurança do tipo fiável e suporte para reutilização de código. A Bicep oferece a melhor experiência de autoria para as suas soluções de infraestrutura como código em 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

Reveja o ficheiro Bicep

O ficheiro Bicep utilizado neste arranque rápido é de Azure Quickstart Templates.

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 Azure é definido no ficheiro Bicep:

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como principal.bíceps para o computador local.

  2. Implemente o ficheiro Bicep utilizando o Azure CLI 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 <a data> de início com a data de início. Deve ser o primeiro do mês no formato YYYY-MM-DD. Uma data de início futura não deve ser mais do que três meses no futuro. Uma data de início anterior deve ser selecionada dentro do período de tempo.
    • endDate: Substitua <a data> de fim com a data de fim no formato YYYYY-MM-DD. Se não for fornecida, o incumprimento é de dez anos a partir da data de início.
    • contactEmails: Primeiro crie uma variável que detenha os seus e-mails e depois passe essa variável. Substitua os e-mails da amostra pelos endereços de e-mail para enviar a notificação do orçamento para quando o limiar for ultrapassado.

    Nota

    Quando a colocação terminar, deverá ver uma mensagem indicando que a implantação foi bem sucedida.

Um filtro

Reveja o ficheiro Bicep

O ficheiro Bicep utilizado neste arranque rápido é de Azure Quickstart Templates.

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 Azure é definido no ficheiro Bicep:

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como principal.bíceps para o computador local.

  2. Implemente o ficheiro Bicep utilizando o Azure CLI 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 <a data> de início com a data de início. Deve ser o primeiro do mês no formato YYYY-MM-DD. Uma data de início futura não deve ser mais do que três meses no futuro. Uma data de início anterior deve ser selecionada dentro do período de tempo.
    • endDate: Substitua <a data> de fim com a data de fim no formato YYYYY-MM-DD. Se não for fornecida, o incumprimento é de dez anos a partir da data de início.
    • contactEmails: Primeiro crie uma variável que detenha os seus e-mails e depois passe essa variável. Substitua os e-mails da amostra pelos endereços de e-mail para enviar a notificação do orçamento para quando o limiar for ultrapassado.
    • recursosGroupFilterValues Primeiro crie uma variável que detenha os valores do filtro do grupo de recursos e depois passe essa variável. Substitua os valores do filtro de amostra pelo conjunto de valores do filtro do seu grupo de recursos.

    Nota

    Quando a colocação terminar, deverá ver uma mensagem indicando que a implantação foi bem sucedida.

Dois ou mais filtros

Reveja o ficheiro Bicep

O ficheiro Bicep utilizado neste arranque rápido é de Azure Quickstart Templates.

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 Azure é definido no ficheiro Bicep:

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como principal.bíceps para o computador local.

  2. Implemente o ficheiro Bicep utilizando o Azure CLI 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 <a data> de início com a data de início. Deve ser o primeiro do mês no formato YYYY-MM-DD. Uma data de início futura não deve ser mais do que três meses no futuro. Uma data de início anterior deve ser selecionada dentro do período de tempo.
    • endDate: Substitua <a data> de fim com a data de fim no formato YYYYY-MM-DD. Se não for fornecida, o incumprimento é de dez anos a partir da data de início.
    • contactEmails: Primeiro crie uma variável que detenha os seus e-mails e depois passe essa variável. Substitua os e-mails da amostra pelos endereços de e-mail para enviar a notificação do orçamento para quando o limiar for ultrapassado.
    • contactegrupos: Primeiro crie uma variável que detenha os seus grupos de contacto e depois passe essa variável. Substitua os grupos de contacto da amostra pela lista de grupos de ação para enviar a notificação orçamental para quando o limiar for ultrapassado. Você deve passar o ID de recursos do grupo de ação, que você pode obter com a az monitor action-group show ou Get-AzActionGroup.
    • ResourceGroupFilterValues: Primeiro crie uma variável que detenha os valores do filtro do grupo de recursos e depois passe essa variável. Substitua os valores do filtro de amostra pelo conjunto de valores do filtro do seu grupo de recursos.
    • meterCategoryFilterValues: Primeiro crie uma variável que mantenha os valores do filtro da categoria do medidor e depois passe essa variável. Substitua os valores do filtro de amostras dentro dos parênteses pelo conjunto de valores para o filtro da categoria do medidor.

    Nota

    Quando a colocação terminar, deverá ver uma mensagem indicando que a implantação foi bem sucedida.

Revisão dos recursos implantados

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

az consumption budget list

Limpar recursos

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

az consumption budget delete --budget-name MyBudget

Passos seguintes

Neste quickstart, criou um orçamento Azure e implementou-o usando o Bicep. Para saber mais sobre Gestão de Custos e Billing e Bicep, continue para os artigos abaixo.