AWS Budgets
针对 AWS 使用成本、用量和预留实例覆盖率设置自定义预算,在超过阈值时执行告警和自动操作的成本管理服务
概述
AWS Budgets 是一项针对 AWS 支出和用量设置自定义预算并实时监控预算超支或预测超支的服务。可创建成本预算、用量预算、RI (预留实例) 覆盖率预算、RI 利用率预算、Savings Plans 覆盖率预算、Savings Plans 利用率预算共 6 种类型,在超过阈值时发送邮件通知、SNS 通知或 Chatbot 通知。使用 Budget Actions 还可以在预算超支时自动执行 IAM 策略应用或 EC2/RDS 实例停止等操作。
预算类型选择与实务配置模式
在 6 种预算类型中,实务中最常用的是成本预算。设置月度成本预算,在实际支出达到预算的 80%、100%,以及预测超过 100% 时触发告警的三级阈值设置是标准模式。预算不仅可以针对整个账户,还可以按服务、关联账户、标签进行筛选设置。例如可以实现"生产环境 (env=prod 标签) 的月度成本超过 5,000 USD 时告警"这样的粒度管理。用量预算针对特定服务的用量 (EC2 运行时间、S3 存储量、Lambda 调用次数等) 设置阈值。在需要按用量而非成本管理时很有效,也可用于监控免费额度的消耗情况。RI 覆盖率预算和 RI 利用率预算用于优化预留实例的购买策略。覆盖率低 (按需比例高) 时应考虑追加购买,利用率低则提示可能存在过度购买。Savings Plans 也可以设置同样的覆盖率/利用率预算。
Budget Actions 自动成本控制
Budget Actions 是在预算超支时自动执行操作的功能,无需人工干预即可防止成本失控。可执行的操作有 3 种。第一种是应用 IAM 策略。在预算超支时将禁止创建资源的 IAM 策略附加到用户或角色上,从物理层面阻止新资源的创建。第二种是应用 SCP (服务控制策略)。使用 Organizations 时,可以对特定 OU 或账户应用 SCP,限制高成本服务的使用。第三种是停止 EC2 或 RDS 实例。在预算超支时自动停止开发环境实例是典型模式。操作的执行模式可选择"自动执行"和"审批后执行"两种。影响生产环境的操作应设为审批后执行,开发环境的实例停止则设为自动执行较为安全。需要注意的是,Budget Actions 依赖于预算评估时间 (通常每天 3 次),不适合实时控制。实时成本异常检测应配合使用 Cost Anomaly Detection。
与 Cost Explorer 和 Cost Anomaly Detection 的配合使用
AWS 的成本管理工具各有不同的职责,需要适当组合使用。Budgets 的主要目的是"监控计划与实际的对比",跟踪预设预算的实际支出和预测。适用于月度、季度、年度的预算管理,用于向管理层汇报和部门间的成本分摊。Cost Explorer 的主要目的是"分析和可视化历史成本",可以按服务、账户、标签、区域查看成本趋势图表。用于调查成本增长原因和确认预留实例的购买建议。Cost Anomaly Detection 的主要目的是"自动检测异常成本波动",机器学习模型学习历史成本模式,自动检测与正常情况不同的成本增长并发送告警。无需配置即可运行,因此即使未设置预算的服务出现意外成本增长也能检测到。实务中推荐的配置是:用 Budgets 设置月度预算,用 Cost Anomaly Detection 启用日常异常检测,月末用 Cost Explorer 进行详细分析的三层架构。前 2 个预算免费,第 3 个起每个预算每月仅 0.02 USD,非常便宜,应作为成本管理的第一步在所有账户中设置。