这个月账单怎么又涨了?这恐怕是很多团队看到AWS月账单时内心最真实的独白。作为常年帮客户做云成本治理的架构师,我见过太多类似的场景:月初调了个实例,加了个快照,加了个并发,月底一看账单数字顿时傻眼。云成本这件事,说难也难,说简单也简单。难在你永远不知道钱到底耗在哪里,简单在你只要抓住几类大头资源,配合一套可落地的治理手段,效果立竿见影。
这篇文章不写概念,只讲实操。我基于自己做过的大量成本优化案例,把真正能把账单降下来、而且降下来之后不反弹的招数总结成三条主线:算力匹配、存储治理、架构重组。按这三条线走下来,大部分项目在不对业务做伤筋动骨的前提下,成本降个四成并不夸张。CTO可以把它当作预算管理的抓手,架构师可以把它当作基础设施改造的路线图,即使是刚开始接触AWS的运维同学,也能从里面找到可以直接试的优化动作。
1. 先别急着降配,先把账单拆明白
我见过太多团队拿到成本优化任务的第一个反应就是打开EC2控制台,看哪台机器不顺眼就降个配置。这种做法风险极大,很容易把核心业务搞挂,而且往往没降多少成本,反而增加了事故概率。做成本优化的第一原则,不是动手改,而是先把账单彻底拆明白。
1.1 用预算和标签建立第一道防线
很多时候账单超支不是某一项技术问题,而是管理缺位。AWS本身提供了预算工具Budgets,可以按月度、季度设置成本预算,并且按百分比设置告警阈值。我建议不管账户多小,都要把Budget建起来,这相当于给你的云账户装了一个燃油表。
具体创建路径很简单:控制台搜索Budgets,创建预算类型选择“成本预算”,周期选月度,输入你预期的金额,然后在告警阈值里设置三档:实际花费达到80%提醒一次,达到100%提醒一次,预测花费达到100%再提醒一次。通知方式建议同时绑上邮件和Slack机器人,这样出问题的时候不是财务事后才发现,而是当天就能有人响应。
但Budgets只能让你知道“超了”,不能告诉你“超在哪”。这时候标签体系就很重要了。我习惯在创建资源的时候强制要求打上三个标签:Env(生产/预发/测试)、Team(所属团队)、Project(业务项目)。很多公司觉得打标签麻烦,可一旦账号里的资源有几十个甚至上百个,不打标签的成本分析就是一笔糊涂账,你根本分不清这笔钱是为哪个产品花的。
注意:AWS有Cost Allocation Tags功能,启用后,标签才会出现在成本报告里。在Billing控制台的Cost allocation tags里找到你创建的标签键,勾选激活,最多等24小时数据才会刷新。这个环节不做,后面一切分析都无从谈起。
1.2 用Cost Explorer找出花钱大户
登录成本管理控制台,打开Cost Explorer,这是日常分析最常用的工具。很多人打开Cost Explorer只看总金额,这是浪费了它最核心的价值。最实操的用法是:把时间周期切到最近三个月,按“服务”维度分组,先把各服务占比看清楚,几乎每个账户的账单都是二八原则,EC2加RDS(关系型数据库服务)往往能占到一半以上,S3(对象存储)和数据传输费用紧随其后。
确定了哪个服务是大头,再按“实例类型”或“资源ID”维度细分。这里说一个经验值:如果一个账号里有几十台EC2,最后可能发现80%的支出集中在三到五台高配机器上。把这几台机器的规格、运行时长、给哪个业务用彻底搞清楚,成本优化的切入点就有了。
对于需要更精细分析的大企业,我还建议开启CUR(Cost and Usage Report),把账单明细导入到Athena或QuickSight里做自定义分析。CUR的数据最全,能够精细到每一个资源每小时的花费。不过Curiosity第一次配置有点复杂,需要在S3建存储桶、再建一个数据导出任务。对于大部分中小团队,这步可以先不做,Cost Explorer加上标签维度已经足够支撑第一轮优化。
1.3 别忽略账单里的“隐藏刺客”
第一轮拆解账单时,有几类费用特别容易被人忽略,却在账面上占了不小比例。它们往往和业务资源没有直接关系,而是运维过程中不经意产生的“隐藏刺客”。
第一类是地域内外数据传输费。AWS的公网流出流量费不便宜,如果你有跨地域数据同步、大量向公网分发内容或频繁做跨账号传输,月底看Data Transfer费用会吓一跳。这类费用在Cost Explorer里属于独立的服务维度,平时没排查过的人根本不知道它可能占总账单的10%以上。
第二类是闲置的弹性IP和负载均衡。很多团队给实例绑了弹性IP,实例释放了,IP却没有释放,每个闲置的IP都在产生费用。负载均衡即使没有流量,只要没有被删除,按小时计费也不会停。
第三类是早期创建的快照。有人可能忘了某个账户里几块已经删除的EBS卷还挂着历史快照,这些快照看起来单个不大,积少成多之后金额相当可观。快照费用在账单里体现为EBS Snapshot,不看明细根本发现不了。
花半天时间把这些历史包袱理清楚,就已经值回票价了。这里可以分享一个我的操作习惯:在Cost Explorer里把时间范围拉长到近6个月,按资源ID看趋势。如果一个资源的支出连续多个月高居不下,但负责人已经说不清它在跑什么业务,那它大概率就是首先要治理的对象。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 第一招:计算资源向“实际需求”对齐
计算资源是绝大多数AWS账户里占比最高的支出,这也意味着它的优化空间最大。我把计算资源的优化拆成两个层面:一是为长期运行的实例找到更经济的买单方式,二是让实例的规格和数量动态匹配真实业务需求,而不是被动地为“高峰流量”付全额账单。
2.1 先给EC2做一次“体检”
动手调任何配置之前,先给现有EC2做一次资源利用率体检。标准做法是利用CloudWatch的CPU利用率指标,连续观察至少两周。为什么要两周?因为很多业务有周末和工作日的差异,只看一周容易漏掉周期规律。
具体操作时,在EC2控制台选中实例,点“监控”标签页,就能看到CPUUtilization的曲线。如果你想要更精确的分析,
