快速入门:使用 ARM 模板创建预算

可以通过成本管理中的预算来计划并推动组织责任制。 可以通过预算对特定时期使用或订阅的 Azure 服务进行核算。 可以通过预算将他人的支出通知给本人,方便他们对成本进行前摄性管理,并且可以监视一段时间的支出情况。 超出所创建的预算阈值时,会触发通知。 不会影响资源,也不会停止你对资源的使用。 可以使用预算来比较和跟踪支出,就像分析成本一样。 本快速入门介绍如何使用三种不同的 Azure 资源管理器模板(ARM 模板)创建预算。

Azure 资源管理器模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 你可以在不编写用于创建部署的编程命令序列的情况下,描述预期部署。

如果你的环境满足先决条件,而且你熟悉如何使用 ARM 模板,请为以下模板之一选择“部署到 Azure”按钮。 Azure 门户中会打开模板。

模板 部署按钮
无筛选器 部署到 Azure
一个筛选器 部署到 Azure
两个或多个筛选器 部署到 Azure

先决条件

如果没有 Azure 订阅,可在开始前创建一个试用帐户

如果你有新订阅,则无法立即创建预算或使用其他成本管理功能。 最多可能需要 48 小时才能使用所有成本管理功能。

以下 Azure 帐户类型和范围都支持预算:

  • Azure 基于角色的访问控制 (Azure RBAC) 范围
    • 管理组
    • 订阅
  • 企业协议范围
    • 计费帐户
    • 部门
    • 注册帐户
  • 个人协议
    • 计费帐户
  • Microsoft 客户协议范围
    • 计费帐户
    • 计费配置文件
    • 发票科目
    • 客户
  • AWS 范围
    • 外部帐户
    • 外部订阅

若要查看预算,你至少需要对 Azure 帐户具有读取访问权限。

对于 Azure EA 订阅,必须拥有读取访问权限才能查看预算。 若要创建和管理预算,必须具有参与者权限。

每个订阅支持以下 Azure 权限或范围,以便按用户和组进行预算。 有关范围的详细信息,请参阅了解并使用范围

  • 所有者 - 可以为订阅创建、修改或删除预算。
  • 参与者和成本管理参与者 – 可以创建、修改或删除他们自己的预算。 可以修改其他人创建的预算的预算金额。
  • 读者和成本管理读者 - 可以查看他们有权访问的预算。

若要详细了解如何分配对成本管理数据的权限,请参阅分配对成本管理数据的访问权限

根据需要使用以下模板之一。

模板 说明
无筛选器 ARM 模板没有任何筛选器。
一个筛选器 ARM 模板具有资源组筛选器。
两个或多个筛选器 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.5.6.12127",
      "templateHash": "15851432186142062555"
    }
  },
  "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": "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')]"
          }
        }
      }
    }
  ]
}

模板中定义了一个 Azure 资源:

部署模板

  1. 选择下图登录到 Azure 并打开一个模板。 模板创建没有任何筛选器的预算。

    部署到 Azure

  2. 选择或输入以下值。

    资源管理器模板,在不使用筛选器的情况下创建预算,部署门户。

    • 订阅:选择一个 Azure 订阅。
    • 资源组:如果需要,请选择现有资源组或创建新资源组。
    • 区域:选择 Azure 区域。 例如,中国北部
    • 预算名称:为预算输入一个名称。 此名称在资源组中应是唯一的。 只允许输入字母数字、下划线和连字符。
    • 数量:输入要通过预算跟踪的总成本。
    • 时间粒度:输入预算覆盖的时间。 允许的值为“每月”、“每季度”或“每年”。 预算将在该时间粒度结束时重置。
    • 开始日期:以 YYYY-MM-DD 格式输入预算月份的第一天作为开始日期。 将来的开始日期不能晚于自当前日期算起的三个月。 可以使用“时间粒度”时段指定过去的开始日期。
    • 结束日期:以 YYYY-MM-DD 格式输入预算的结束日期。
    • 第一个阈值:输入第一个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
    • 第二个阈值:输入第二个通知的阈值。 当成本超过阈值时,会发送通知。 该值始终为百分比,并且必须介于 0.01 和 1000 之间。
    • 联系人电子邮件:输入超出阈值时要将预算通知发送到的电子邮件地址列表。 此字段接受字符串数组。 预期格式为 ["user1@domain.com","user2@domain.com"]
  3. 根据你的 Azure 订阅类型,执行以下操作之一:

    • 选择“查看 + 创建”。
    • 查看条款和条件,选择“我同意上述条款和条件”,然后选择“购买”。
  4. 如果选择“审阅 + 创建”,则将验证模板。 选择创建

    屏幕截图显示资源管理器模板、不带筛选器的预算、部署门户通知。

使用 Azure 门户部署模板。 除了 Azure 门户之外,还可以使用 Azure PowerShell、Azure CLI 和 REST API。 若要了解其他部署模板,请参阅部署模板

验证部署

使用以下方法之一验证是否创建了预算。

导航到“成本管理 + 计费”> 选择范围 >“预算”。

清理资源

如果不再需要预算,请使用以下某种方法将其删除:

导航到“成本管理 + 计费”>选择“计费范围”>“预算”> 选择“预算”> 然后选择“删除预算”。

后续步骤

在本快速入门中,你创建并部署了预算。 若要详细了解成本管理 + 计费和 Azure 资源管理器,请继续阅读以下文章。