news 2026/9/15 12:35:09

基于 AWS CLI 为 Cost and Usage 预算创建成本告警通知:aws budgets create-notification 实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 AWS CLI 为 Cost and Usage 预算创建成本告警通知:aws budgets create-notification 实战指南

基于 AWS CLI 为 Cost and Usage 预算创建成本告警通知:aws budgets create-notification 实战指南

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

导读

本指南围绕 AWS CLI 的aws budgets create-notification命令展开,讲解如何为指定的 Cost and Usage 预算创建阈值告警通知,包括通知结构(Notification)与订阅者(Subscriber)的完整参数语义、实际命令示例、以及与之配套的订阅者管理与通知查询命令。读完本文,你将能够熟练地为预算配置"实际花费超过预算 80% 即触发告警"这类通知,并通过邮件或 SNS 主题接收告警,同时了解底层服务模型对参数取值与数量上限的约束。

一、命令概览:为预算挂上"告警哨兵"

在 AWS Budgets 中,一个预算(Budget)只定义了"你计划花多少钱",而真正在花费超标时提醒你的,是绑定在预算上的通知(Notification)aws budgets create-notification正是用来把一条通知与指定账号、指定预算关联起来的命令。

该命令的官方示例位于仓库 awscli/examples/budgets/create-notification.rst,其核心命令如下:

aws budgets create-notification \ --account-id 111122223333 \ --budget-name "Example Budget" \ --notification "NotificationType=ACTUAL,ComparisonOperator=GREATER_THAN,Threshold=80,ThresholdType=PERCENTAGE" \ --subscriber "SubscriptionType=EMAIL,Address=example@example.com"

这条命令的语义是:当111122223333账号下名为Example Budget的预算,其实际花费(ACTUAL)大于(GREATER_THAN)预算金额的80%(PERCENTAGE)时,向邮箱example@example.com发送告警邮件。

二、逐参数拆解:四个必需的输入

从服务模型 awscli/botocore/data/budgets/2016-10-20/service-2.json 中CreateNotificationRequest的定义可以看到,该请求的必需字段为AccountIdBudgetNameNotificationSubscribers四项,对应 CLI 中的四个参数:

CLI 参数类型是否必需说明
--account-idString与要创建通知的预算相关联的账号 ID(12 位数字)
--budget-nameString预算名称,账号内必须唯一;示例中为"Example Budget"
--notificationStructure通知的触发条件定义,采用 CLI 简写语法,见第三节
--subscriberStructure接收告警的订阅者定义,见第四节。服务端要求每个通知至少一个订阅者

注意:示例中出现了两次--subscriber参数——CLI 允许重复传入该参数从而为一条通知一次性挂载多个订阅者,等价于服务模型中的Subscribers列表。

三、Notification:告警触发条件的三要素 + 阈值类型

--notification使用 AWS CLI 的简写语法(shorthand syntax),以逗号分隔的键=值形式构造结构体。其字段对应服务模型中Notification结构体(见 service-2.json 中"Notification"定义),四个成员中NotificationTypeComparisonOperatorThreshold为必需项,ThresholdType在 2017 年后的版本中可选但强烈建议显式指定。

1. NotificationType:告警基于实际值还是预测值

取值只有两个:

  • ACTUAL:当实际花费超过阈值时触发;
  • FORECASTED:当预测花费(基于历史用量画像推算的月末值)超过阈值时触发,适合提前预警。

示例中使用ACTUAL,即"真金白银花超了才提醒"。

2. ComparisonOperator:比较运算符

服务模型枚举支持三种:

  • GREATER_THAN:花费大于阈值(示例所用);
  • LESS_THAN:花费小于阈值(如预算低于某下限时告警);
  • EQUAL_TO:花费等于阈值。

3. Threshold 与 ThresholdType:阈值数值及其语义

  • Threshold:数值本身。服务模型的约束为min=0max=15000000000000(即 15 万亿)。官方文档说明:阈值通常是百分比,多数客户会选择在预算金额的 50%–200% 区间提醒,上限可达预算金额的 1,000,000% 以上。
  • ThresholdType:阈值类型,枚举为:
    • PERCENTAGE:百分比阈值。例如预算 200 美元、阈值 80%,则实际花费超过 160 美元时触发告警(示例即此场景);
    • ABSOLUTE_VALUE:绝对金额阈值。服务会在总花费超过(或预测超过)该绝对数值时通知。

四、Subscriber:谁接收告警

--subscriber同样使用简写语法,对应服务模型中Subscriber结构体,包含两个必需成员:

  • SubscriptionType:订阅类型,枚举为EMAIL(邮件)与SNS(SNS 主题)。注意:服务文档明确说明枚举只包含SNSEMAIL,早期的SMS已不在当前模型中;
  • Address:接收地址,即邮箱地址或 SNS 主题 ARN。创建订阅者时,Address不能包含换行符。

关于订阅者数量,服务模型在Subscribers列表上定义了min=1max=11的约束,官方文档进一步说明:一条通知可以绑定一个 SNS 订阅者加最多 10 个邮件订阅者,合计最多 11 个订阅者

五、完整实战:从创建预算到通知、订阅者全链路

第一步:创建预算

通知必须挂载在已存在的预算上。仓库 awscli/examples/budgets/create-budget.rst 展示了如何先创建预算:

aws budgets create-budget \ --account-id 111122223333 \ --budget file://budget.json \ --notifications-with-subscribers file://notifications-with-subscribers.json

其中budget.json定义了预算名称、类型(COST)与限额(如 100 USD),而notifications-with-subscribers.json可以把"通知 + 订阅者"一并在建预算时绑定。若预算已存在,则使用本指南主讲的create-notification单独追加通知。

第二步:创建通知(本指南主命令)

aws budgets create-notification \ --account-id 111122223333 \ --budget-name "Example Budget" \ --notification "NotificationType=ACTUAL,ComparisonOperator=GREATER_THAN,Threshold=80,ThresholdType=PERCENTAGE" \ --subscriber "SubscriptionType=EMAIL,Address=example@example.com"

第三步:为已有通知补充订阅者

如果通知已存在、但需要追加接收人,可使用create-subscriber(见 awscli/examples/budgets/create-subscriber.rst)。注意此时--notification参数必须与创建时的通知完全一致,因为服务端用它作为定位已有通知的键:

aws budgets create-subscriber \ --account-id 111122223333 \ --budget-name "Example Budget" \ --notification "NotificationType=ACTUAL,ComparisonOperator=GREATER_THAN,Threshold=80,ThresholdType=PERCENTAGE" \ --subscriber "SubscriptionType=EMAIL,Address=ops@example.com"

第四步:查询预算下的所有通知

使用describe-notifications-for-budget(见 awscli/examples/budgets/describe-notifications-for-budget.rst):

aws budgets describe-notifications-for-budget \ --account-id 111122223333 \ --budget-name "Example Budget" \ --max-results 5

示例输出:

{ "Notifications": [ { "Threshold": 80.0, "ComparisonOperator": "GREATER_THAN", "NotificationType": "ACTUAL" } ] }

该命令支持分页:根据 awscli/botocore/data/budgets/2016-10-20/paginators-1.json,其分页配置为input_token=NextTokenoutput_token=NextTokenlimit_key=MaxResultsresult_key=Notifications,因此也可以直接加上--paginate让 CLI 自动遍历所有页。

第五步:修改与删除通知

  • 修改阈值:update-notification用"旧通知 + 新通知"配对方式替换(见 awscli/examples/budgets/update-notification.rst):
aws budgets update-notification \ --account-id 111122223333 \ --budget-name "Example Budget" \ --old-notification "NotificationType=ACTUAL,ComparisonOperator=GREATER_THAN,Threshold=80,ThresholdType=PERCENTAGE" \ --new-notification "NotificationType=ACTUAL,ComparisonOperator=GREATER_THAN,Threshold=90,ThresholdType=PERCENTAGE"
  • 删除通知:delete-notification只需提供与创建时一致的通知定义(见 awscli/examples/budgets/delete-notification.rst):
aws budgets delete-notification \ --account-id 111122223333 \ --budget-name "Example Budget" \ --notification "NotificationType=ACTUAL,ComparisonOperator=GREATER_THAN,Threshold=80,ThresholdType=PERCENTAGE"

六、参数约束与最佳实践(源码级依据)

综合 service-2.json 中的模型定义,可总结如下工程要点:

  1. 通知与订阅者上限:一个预算最多绑定10 条通知;每条通知必须至少 1 个订阅者,最多1 个 SNS + 10 个邮件订阅者(共 11 个)
  2. 阈值数值范围Threshold[0, 15000000000000]之间,超出会触发参数校验错误;
  3. Notification是唯一标识create-subscriberupdate-notificationdelete-notificationdescribe-subscribers-for-notification都要求传入与创建时完全一致的NotificationType/ComparisonOperator/Threshold组合来定位通知,任何字段不一致都会导致"找不到通知";
  4. 简写语法--notification--subscriber都依赖 AWS CLI 的 shorthand 解析器(相关实现见 awscli/awscli/shorthand.py),结构体字段以逗号分隔、键值以等号连接;当字段包含特殊字符或需复用配置时,可改用file://JSON 文件方式传入;
  5. 组合推荐:官方文档给出的典型配置即示例所示——ACTUAL+PERCENTAGE+GREATER_THAN+ 阈值 80,即"实际花费达到预算的 80% 时告警";如需更早预警,可叠加FORECASTED类型的第二条通知。

七、总结

aws budgets create-notification是与create-budget互补的细粒度告警配置入口:预算负责"划线",通知负责"吹哨",订阅者负责"传话"。结合本仓库的示例文件(create-notification.rst、create-subscriber.rst、describe-notifications-for-budget.rst、update-notification.rst、delete-notification.rst)与服务模型定义(service-2.json),你已经可以完整落地"预算阈值告警"的创建、查询、扩员、修改与删除全流程。

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 12:34:47

AI工具筛选指南:聚焦确定性、容错性与可控性

1. 这不是工具测评,是一份“AI减法生存指南”我测了20多个AI工具,最后留下的不到5个——这句话最近在好几个技术群、设计社群和运营圈子里反复刷屏。它不像“最强AI推荐清单”那样带着营销味,反而透着一股疲惫后的清醒。你可能也经历过&#…

作者头像 李华
网站建设 2026/9/15 12:33:54

开放式耳机声学原理与耳廓适配工程解析

1. 为什么“听歌党”需要重新定义开放式耳机的评价维度?去年冬天,我在通勤地铁上第一次用Cleer Arc 3听《Summer》——不是那种被耳塞堵住耳朵、隔绝世界的沉浸感,而是音符像从窗外飘进来的风一样,自然地拂过耳廓。那一刻我意识到…

作者头像 李华
网站建设 2026/9/15 12:32:38

使用 Instructor 从 Anthropic Claude 提取结构化输出:完整实战指南

使用 Instructor 从 Anthropic Claude 提取结构化输出:完整实战指南 【免费下载链接】instructor structured outputs for llms 项目地址: https://gitcode.com/GitHub_Trending/in/instructor 本文是基于开源仓库 instructor 的 Anthropic 集成实战指南。全…

作者头像 李华
网站建设 2026/9/15 12:30:25

Typora内联公式详解:LaTeX语法、常见错误与高效技巧

Typora 算是我这几年写技术笔记、做实验记录、甚至攥毕业论文时最顺手的编辑器之一。它的 Markdown 即时渲染体验确实做得好,尤其是对 LaTeX 公式的支持,基本让我告别了“先在 Word 里用公式编辑器一个个点符号”的折磨。不过我也见过不少刚开始用 Typor…

作者头像 李华