Guia de 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. Eles ajudam você a informar outras pessoas sobre seus gastos para gerenciar proativamente os custos e monitorar 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 guia de início rápido mostra como criar um orçamento chamado 'MyBudget' usando 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 tipos fiá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 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:
- Escopos de controle de acesso baseado em função do Azure (Azure RBAC)
- Grupos de gestão
- Subscrição
- Âmbitos do Enterprise Agreement
- Conta de faturação
- Departamento
- Conta de inscrição
- Acordos individuais
- Conta de faturação
- Âmbitos do Contrato de Cliente Microsoft
- Conta de faturação
- Perfil de faturação
- Secção de fatura
- Cliente
- Escopos da 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
Revise o arquivo Bicep
O arquivo Bicep usado neste início rápido é de 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 arquivo Bicep:
- Microsoft.Consumption/budgets: crie um orçamento.
Implantar o arquivo Bicep
Salve o arquivo Bicep como main.bicep em seu computador local.
Implante o arquivo Bicep usando 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 <a data> de início pela data de início. Deve ser o primeiro do mês no formato AAAA-MM-DD. Uma data de início futura não deve ser superior a três meses. Uma data de início anterior deve ser selecionada dentro do período de tempo.
- endDate: substitua <a data> final pela data final no formato AAAA-MM-DD. Se não for fornecido, o padrão é de dez anos a partir da data de início.
- contactEmails: primeiro crie uma variável que contenha seus e-mails e, em seguida, passe essa variável. Substitua os e-mails de exemplo pelos endereços de e-mail para enviar a notificação de orçamento quando o limite for excedido.
Nota
Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.
Um filtro
Revise o arquivo Bicep
O arquivo Bicep usado neste início rápido é de 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:
- Microsoft.Consumption/budgets: crie um orçamento.
Implantar o arquivo Bicep
Salve o arquivo Bicep como main.bicep em seu computador local.
Implante o arquivo Bicep usando 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 <a data> de início pela data de início. Deve ser o primeiro do mês no formato AAAA-MM-DD. Uma data de início futura não deve ser superior a três meses. Uma data de início anterior deve ser selecionada dentro do período de tempo.
- endDate: substitua <a data> final pela data final no formato AAAA-MM-DD. Se não for fornecido, o padrão é de dez anos a partir da data de início.
- contactEmails: primeiro crie uma variável que contenha seus e-mails e, em seguida, passe essa variável. Substitua os e-mails de exemplo pelos endereços de e-mail para enviar a notificação de orçamento 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 do filtro de exemplo pelo conjunto de valores para o filtro do grupo de recursos.
Nota
Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.
Dois ou mais filtros
Revise o arquivo Bicep
O arquivo Bicep usado neste início rápido é de 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:
- Microsoft.Consumption/budgets: crie um orçamento.
Implantar o arquivo Bicep
Salve o arquivo Bicep como main.bicep em seu computador local.
Implante o arquivo Bicep usando 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 <a data> de início pela data de início. Deve ser o primeiro do mês no formato AAAA-MM-DD. Uma data de início futura não deve ser superior a três meses. Uma data de início anterior deve ser selecionada dentro do período de tempo.
- endDate: substitua <a data> final pela data final no formato AAAA-MM-DD. Se não for fornecido, o padrão é de dez anos a partir da data de início.
- contactEmails: primeiro crie uma variável que contenha seus e-mails e, em seguida, passe essa variável. Substitua os e-mails de exemplo pelos endereços de e-mail para enviar a notificação de orçamento quando o limite for excedido.
- contactGroups: primeiro crie uma variável que mantenha seus grupos de contatos e, em seguida, passe essa variável. Substitua os grupos de contatos de exemplo pela lista de grupos de ações para enviar a notificação de orçamento quando o limite for excedido. Você deve passar a ID do recurso do grupo de ações, que você 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, passe essa variável. Substitua os valores do 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 do medidor e, em seguida, passe essa variável. Substitua os valores do filtro de amostra entre parênteses pelo conjunto de valores para o filtro de categoria do medidor.
Nota
Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.
Rever os recursos implementados
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
Clean up resources (Limpar recursos)
Quando não precisar mais do orçamento, use o portal do Azure, a CLI do Azure ou o Azure PowerShell para excluí-lo:
az consumption budget delete --budget-name MyBudget
Próximos passos
Neste início rápido, você criou um orçamento e o implantou usando o Bicep. Para saber mais sobre Gestão de Custos e Faturamento e Bicep, continue nos artigos abaixo.
- Leia a visão geral de gerenciamento de custos e faturamento.
- Crie orçamentos no portal do Azure.
- Saiba mais sobre o Bicep.