可以通过成本管理中的预算来计划并推动组织责任制。 可以通过预算对特定时期使用或订阅的 Azure 服务进行核算。 可以通过预算将他人的支出通知给本人,方便他们对成本进行前摄性管理,并且可以监视一段时间的支出情况。 超出所创建的预算阈值时,会触发通知。 不会影响资源,也不会停止你对资源的使用。 可以使用预算来比较和跟踪支出,就像分析成本一样。 本快速入门介绍如何使用三种不同的 Azure 资源管理器模板(ARM 模板)创建预算。
查看模板
本快速入门中使用的模板来自 Azure 快速启动模板。
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.54.24096",
"templateHash": "10216192224502761212"
}
},
"parameters": {
"budgetName": {
"type": "string",
"defaultValue": "MyBudget",
"metadata": {
"description": "Name of the Budget. It should be unique within a resource group."
}
},
"amount": {
"type": "int",
"defaultValue": 1000,
"metadata": {
"description": "The total amount of cost or usage to track with the budget"
}
},
"timeGrain": {
"type": "string",
"defaultValue": "Monthly",
"allowedValues": [
"Monthly",
"Quarterly",
"Annually"
],
"metadata": {
"description": "The time covered by a budget. Tracking of the amount will be reset based on the time grain."
}
},
"startDate": {
"type": "string",
"metadata": {
"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."
}
},
"endDate": {
"type": "string",
"metadata": {
"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."
}
},
"firstThreshold": {
"type": "int",
"defaultValue": 90,
"metadata": {
"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."
}
},
"secondThreshold": {
"type": "int",
"defaultValue": 110,
"metadata": {
"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."
}
},
"contactEmails": {
"type": "array",
"metadata": {
"description": "The list of email addresses to send the budget notification to when the threshold is exceeded."
}
}
},
"resources": [
{
"type": "Microsoft.Consumption/budgets",
"apiVersion": "2023-11-01",
"name": "[parameters('budgetName')]",
"properties": {
"timePeriod": {
"startDate": "[parameters('startDate')]",
"endDate": "[parameters('endDate')]"
},
"timeGrain": "[parameters('timeGrain')]",
"amount": "[parameters('amount')]",
"category": "Cost",
"notifications": {
"NotificationForExceededBudget1": {
"enabled": true,
"operator": "GreaterThan",
"threshold": "[parameters('firstThreshold')]",
"contactEmails": "[parameters('contactEmails')]"
},
"NotificationForExceededBudget2": {
"enabled": true,
"operator": "GreaterThan",
"threshold": "[parameters('secondThreshold')]",
"contactEmails": "[parameters('contactEmails')]"
}
}
}
}
],
"outputs": {
"name": {
"type": "string",
"value": "[parameters('budgetName')]"
},
"resourceId": {
"type": "string",
"value": "[subscriptionResourceId('Microsoft.Consumption/budgets', parameters('budgetName'))]"
}
}
}
模板中定义了一个 Azure 资源:
部署模板
选择下图登录到 Azure 并打开一个模板。 模板创建没有任何筛选器的预算。
选择或输入以下值。
- 订阅:选择一个 Azure 订阅。
- 资源组:如果需要,请选择现有资源组或创建新资源组。
- 区域:选择 Azure 区域。 例如“美国中部”。
- 预算名称:为预算输入一个名称。 此名称在资源组中应是唯一的。 只允许输入字母数字、下划线和连字符。
- 数量:输入要通过预算跟踪的总成本。
- 时间粒度:输入预算覆盖的时间。 允许的值为“每月”、“每季度”或“每年”。 预算将在该时间粒度结束时重置。
- 开始日期:以 YYYY-MM-DD 格式输入预算月份的第一天作为开始日期。 将来的开始日期不能晚于自当前日期算起的三个月。 可以使用“时间粒度”时段指定过去的开始日期。
- 结束日期:以 YYYY-MM-DD 格式输入预算的结束日期。
- 第一个阈值:输入第一个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
- 第二个阈值:输入第二个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
- 联系人电子邮件:输入超出阈值时要将预算通知发送到的电子邮件地址列表。 此字段接受字符串数组。 预期格式为
["user1@domain.com","user2@domain.com"]
。
根据你的 Azure 订阅类型,执行以下操作之一:
- 选择“查看 + 创建”。
- 查看条款和条件,选择“我同意上述条款和条件”,然后选择“购买”。
如果选择“审阅 + 创建”,则将验证模板。 选择创建。
使用 Azure 门户部署模板。 除了 Azure 门户之外,还可以使用 Azure PowerShell、Azure CLI 和 REST API。 若要了解其他部署模板,请参阅部署模板。
查看模板
本快速入门中使用的模板来自 Azure 快速启动模板。
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "16839077498193926768"
}
},
"parameters": {
"budgetName": {
"type": "string",
"defaultValue": "MyBudget",
"metadata": {
"description": "Name of the Budget. It should be unique within a resource group."
}
},
"amount": {
"type": "int",
"defaultValue": 1000,
"metadata": {
"description": "The total amount of cost or usage to track with the budget"
}
},
"timeGrain": {
"type": "string",
"defaultValue": "Monthly",
"allowedValues": [
"Monthly",
"Quarterly",
"Annually"
],
"metadata": {
"description": "The time covered by a budget. Tracking of the amount will be reset based on the time grain."
}
},
"startDate": {
"type": "string",
"metadata": {
"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."
}
},
"endDate": {
"type": "string",
"metadata": {
"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."
}
},
"firstThreshold": {
"type": "int",
"defaultValue": 90,
"metadata": {
"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."
}
},
"secondThreshold": {
"type": "int",
"defaultValue": 110,
"metadata": {
"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."
}
},
"contactEmails": {
"type": "array",
"metadata": {
"description": "The list of email addresses to send the budget notification to when the threshold is exceeded."
}
},
"resourceGroupFilterValues": {
"type": "array",
"metadata": {
"description": "The set of values for the resource group filter."
}
}
},
"resources": [
{
"type": "Microsoft.Consumption/budgets",
"apiVersion": "2021-10-01",
"name": "[parameters('budgetName')]",
"properties": {
"timePeriod": {
"startDate": "[parameters('startDate')]",
"endDate": "[parameters('endDate')]"
},
"timeGrain": "[parameters('timeGrain')]",
"amount": "[parameters('amount')]",
"category": "Cost",
"notifications": {
"NotificationForExceededBudget1": {
"enabled": true,
"operator": "GreaterThan",
"threshold": "[parameters('firstThreshold')]",
"contactEmails": "[parameters('contactEmails')]"
},
"NotificationForExceededBudget2": {
"enabled": true,
"operator": "GreaterThan",
"threshold": "[parameters('secondThreshold')]",
"contactEmails": "[parameters('contactEmails')]"
}
},
"filter": {
"dimensions": {
"name": "ResourceGroupName",
"operator": "In",
"values": "[parameters('resourceGroupFilterValues')]"
}
}
}
}
]
}
模板中定义了一个 Azure 资源:
部署模板
选择下图登录到 Azure 并打开一个模板。 该模板创建含有资源组筛选器的预算。
选择或输入以下值。
- 订阅:选择一个 Azure 订阅。
- 资源组:如果需要,请选择现有资源组或创建新资源组。
- 区域:选择 Azure 区域。 例如“美国中部”。
- 预算名称:为预算输入一个名称。 此名称在资源组中应是唯一的。 只允许输入字母数字、下划线和连字符。
- 数量:输入要通过预算跟踪的总成本。
- 时间粒度:输入预算覆盖的时间。 允许的值为“每月”、“每季度”或“每年”。 预算将在该时间粒度结束时重置。
- 开始日期:以 YYYY-MM-DD 格式输入预算月份的第一天作为开始日期。 将来的开始日期不能晚于自当前日期算起的三个月。 可以使用“时间粒度”时段指定过去的开始日期。
- 结束日期:以 YYYY-MM-DD 格式输入预算的结束日期。
- 第一个阈值:输入第一个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
- 第二个阈值:输入第二个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
- 联系人电子邮件:输入超出阈值时要将预算通知发送到的电子邮件地址列表。 此字段接受字符串数组。 预期格式为
["user1@domain.com","user2@domain.com"]
。
- 资源组筛选器值:输入要筛选的资源组名称的列表。 此字段接受字符串数组。 预期格式为
["Resource Group Name1","Resource Group Name2"]
。 该数组不可为空。
根据你的 Azure 订阅类型,执行以下操作之一:
- 选择“查看 + 创建”。
- 查看条款和条件,选择“我同意上述条款和条件”,然后选择“购买”。
如果选择“审阅 + 创建”,则将验证模板。 选择创建。
使用 Azure 门户部署模板。 除了 Azure 门户之外,还可以使用 Azure PowerShell、Azure CLI 和 REST API。 若要了解其他部署模板,请参阅部署模板。
查看模板
本快速入门中使用的模板来自 Azure 快速启动模板。
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.8.9.13224",
"templateHash": "16562188350105885076"
}
},
"parameters": {
"budgetName": {
"type": "string",
"defaultValue": "MyBudget",
"metadata": {
"description": "Name of the Budget. It should be unique within a resource group."
}
},
"amount": {
"type": "int",
"defaultValue": 1000,
"metadata": {
"description": "The total amount of cost or usage to track with the budget"
}
},
"timeGrain": {
"type": "string",
"defaultValue": "Monthly",
"allowedValues": [
"Monthly",
"Quarterly",
"Annually"
],
"metadata": {
"description": "The time covered by a budget. Tracking of the amount will be reset based on the time grain."
}
},
"startDate": {
"type": "string",
"metadata": {
"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."
}
},
"endDate": {
"type": "string",
"metadata": {
"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."
}
},
"firstThreshold": {
"type": "int",
"defaultValue": 90,
"metadata": {
"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."
}
},
"secondThreshold": {
"type": "int",
"defaultValue": 110,
"metadata": {
"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."
}
},
"contactRoles": {
"type": "array",
"defaultValue": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "The list of contact roles to send the budget notification to when the threshold is exceeded."
}
},
"contactEmails": {
"type": "array",
"metadata": {
"description": "The list of email addresses to send the budget notification to when the threshold is exceeded."
}
},
"contactGroups": {
"type": "array",
"metadata": {
"description": "The list of action groups to send the budget notification to when the threshold is exceeded. It accepts array of strings."
}
},
"resourceGroupFilterValues": {
"type": "array",
"metadata": {
"description": "The set of values for the resource group filter."
}
},
"meterCategoryFilterValues": {
"type": "array",
"metadata": {
"description": "The set of values for the meter category filter."
}
}
},
"resources": [
{
"type": "Microsoft.Consumption/budgets",
"apiVersion": "2021-10-01",
"name": "[parameters('budgetName')]",
"properties": {
"timePeriod": {
"startDate": "[parameters('startDate')]",
"endDate": "[parameters('endDate')]"
},
"timeGrain": "[parameters('timeGrain')]",
"amount": "[parameters('amount')]",
"category": "Cost",
"notifications": {
"NotificationForExceededBudget1": {
"enabled": true,
"operator": "GreaterThan",
"threshold": "[parameters('firstThreshold')]",
"contactEmails": "[parameters('contactEmails')]",
"contactRoles": "[parameters('contactRoles')]",
"contactGroups": "[parameters('contactGroups')]"
},
"NotificationForExceededBudget2": {
"enabled": true,
"operator": "GreaterThan",
"threshold": "[parameters('secondThreshold')]",
"contactEmails": "[parameters('contactEmails')]",
"contactRoles": "[parameters('contactRoles')]",
"contactGroups": "[parameters('contactGroups')]",
"thresholdType": "Forecasted"
}
},
"filter": {
"and": [
{
"dimensions": {
"name": "ResourceGroupName",
"operator": "In",
"values": "[parameters('resourceGroupFilterValues')]"
}
},
{
"dimensions": {
"name": "MeterCategory",
"operator": "In",
"values": "[parameters('meterCategoryFilterValues')]"
}
}
]
}
}
}
]
}
模板中定义了一个 Azure 资源:
部署模板
选择下图登录到 Azure 并打开一个模板。 该模板创建一个预算,其中包含资源组的筛选器和计量类别的筛选器。
选择或输入以下值。
- 订阅:选择一个 Azure 订阅。
- 资源组:如果需要,请选择现有资源组或创建新资源组。
- 区域:选择 Azure 区域。 例如“美国中部”。
- 预算名称:为预算输入一个名称。 此名称在资源组中应是唯一的。 只允许输入字母数字、下划线和连字符。
- 数量:输入要通过预算跟踪的总成本。
- 时间粒度:输入预算覆盖的时间。 允许的值为“每月”、“每季度”或“每年”。 预算将在该时间粒度结束时重置。
- 开始日期:以 YYYY-MM-DD 格式输入预算月份的第一天作为开始日期。 将来的开始日期不能晚于自当前日期算起的三个月。 可以使用“时间粒度”时段指定过去的开始日期。
- 结束日期:以 YYYY-MM-DD 格式输入预算的结束日期。
- 第一个阈值:输入第一个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
- 第二个阈值:输入第二个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
- 联系人角色:输入超出阈值时要将预算通知发送到的联系人角色列表。 默认值为“所有者”、“参与者”和“读取者”。 预期格式为
["Owner","Contributor","Reader"]
。
- 联系人电子邮件:输入超出阈值时要将预算通知发送到的电子邮件地址列表。 此字段接受字符串数组。 预期格式为
["user1@domain.com","user2@domain.com"]
。
- 联系人组:输入超出阈值时要将预算通知发送到的操作组资源 ID 列表(作为完整资源 URI)。 此字段接受字符串数组。 预期格式为
["action group resource ID1","action group resource ID2"]
。 如果你不想使用操作组,请输入 []
。
- 资源组筛选器值:输入要筛选的资源组名称的列表。 此字段接受字符串数组。 预期格式为
["Resource Group Name1","Resource Group Name2"]
。 该数组不可为空。
- 计量类别筛选器值:输入 Azure 服务计量器类别的列表。 此字段接受字符串数组。 预期格式为
["Meter Category1","Meter Category2"]
。 该数组不可为空。
根据你的 Azure 订阅类型,执行以下操作之一:
- 选择“查看 + 创建”。
- 查看条款和条件,选择“我同意上述条款和条件”,然后选择“购买”。
如果选择“审阅 + 创建”,则将验证模板。 选择创建。
使用 Azure 门户部署模板。 除了 Azure 门户之外,还可以使用 Azure PowerShell、Azure CLI 和 REST API。 若要了解其他部署模板,请参阅部署模板。