AWS账单从823刀降至180刀的实操复盘:按小时计费的资源怎么砍

· 进步分子, 投稿

AI 总结 · 连续创业者视角(以下内容由 AI 提炼,观点归原作者;读完可不看原文)

作者将一套生产级SaaS系统的AWS月费从822.96美元降至预估180-220美元,核心逻辑是区分‘业务边界’与‘成本优化’。通过合并多ALB、Fargate降配(CPU保留至最低可用)、删除闲置Aurora Reader、Staging环境按需启停等具体动作实现。这篇文章提供了可复现的云成本治理SOP,适合有AWS负载的独立开发者或初创团队参考。

  • 先看账单再改架构:按服务拆分固定/变动成本…
  • 合并入口层:多域名/环境共用ALB,通过Host Header路由,节省多实例小时费
  • 降配依据监控:保留低CPU/内存余量(如API降至0.
  • Staging按需运行:设desired=0配合脚本定时启停,比定时任务更省且避免遗漏
  • 数据库减配:评估Writer/Reader分离必要性…

核心结论:云成本优化的本质不是“换小服务器”,而是先通过账单拆解区分固定成本变动成本,再基于监控数据精确降配,最后保留扩容路径。本文作者将一套真实生产级 SaaS 的 AWS 月费从 822.96 美元 降至预估 180~220 美元,核心策略是合并入口、降配计算、按需启停。

一、账单拆解:先看懂钱花在哪

优化前先按服务拆分 822.96 美元的账期费用,发现高成本源于“多套常驻资源”而非“流量大”:

  • Amazon ECS:276.59 美元(计算主力)
  • RDS:174.79 美元(数据库)
  • EC2 – Other:142.32 美元(其中 NAT Gateway 小时费+数据处理费占 135.72 美元)
  • Elastic Load Balancing:77.82 美元(主要是多 ALB 的固定小时费)
  • CloudWatch:57.10 美元 & VPC:41.84 美元

关键洞察:优化顺序应是先处理按小时收费的固定资源(NAT、ALB、Fargate),再处理随使用量变化的小额费用。

二、五大实操动作(含具体数据)

1. 合并 ALB,共用入口层

Production 和 Staging 原本各有多个 ALB,低负载时固定小时费高于流量费。优化方案:

  • 动作:每个环境只保留一个共享 ALB,通过 Host HeaderPath Rule 将 Dashboard、Gateway、OpenAPI、SuperAdmin 转发到各自的 Target Group。
  • 风险控制:先创建新规则并验证健康检查,确认无误后再修改 DNS;旧 ALB 在验证完成前保留作为回退。严禁只看 ALB 状态为 Active 就删除,必须检查 Listener Rule 命中情况和 DNS 指向。

2. 用监控数据指导 Fargate 降配

不要凭感觉缩容,要看 24 小时监控数据。优化前 API/Web 的 CPU 平均仅 2.6% / 2.36%,峰值不足 6%。

  • 动作:将 API 和 Web 降至 0.25 vCPU / 0.5 GB(OpenAPI/SuperAdmin 已为最低规格)。每次通过 ECS 滚动更新:先启新任务 → 健康检查通过 → 排空旧任务。
  • 结果:降配后 CPU 平均 4.84%/5.34%,峰值 12.88%/17.28%,内存峰值仍低于 7%。生产环境保留 4 个最低规格任务,月度 Fargate 费用降至约 36 美元
  • 扩容保留:闲置 Worker 设 desired=0 而非删除,未来可通过增加 desired count 或调整 Task Definition 快速扩容。

3. 数据库 Reader 按需删除

Writer 负责写和事务,Reader 分担只读查询并在故障时接管。优化判断标准:

  • 验证:确认 Reader 并非闲置(确实承载业务读取),但当前负载下 Writer 可承接全部读取。
  • 动作:先切回连接至 Writer,滚动重启应用,查 pg_stat_activity 确认无业务连接后,删除 Reader。
  • 成本:每月节省约 43.20~44.64 美元。生产环境保留最低容量 0.5 ACU 的 Serverless v2 Writer。
  • Terraform 注意:使用 for_each 替代 count,并用 moved block 保留 Writer 资源身份,避免 Plan 误判替换。

4. Staging 环境真正按需运行

定时启停容易遗漏,建议改为脚本化管理:

  • 动作:关闭自动启动,四个 Staging ECS 服务默认 desired=0,Aurora 最低容量设为 0 ACU(空闲 15 分钟后自动暂停)。
  • 执行:编写统一脚本 staging-on-demand.sh,包含 start/status/stop。必须先做完整恢复演练(启动→健康检查→停止),证明可正常拉起后再投入日常使用。

5. 删除 NAT Gateway 需先验证依赖

NAT 网关小时费约 77.38 美元/套 + 数据处理费。优化前有两套 NAT 占用大量固定成本。删除前需证明系统不依赖公网出口(如仅内网通信或使用 VPC Endpoints),否则需谨慎评估。

三、避坑指南

  • 不要追求单机 cheapest:虽能省钱,但会造成单点故障并改变发布流程,牺牲未来扩容灵活性。
  • 降配不是删副本:Fargate 降配后单任务非高可用,ECS 会自动重建但存在短暂不可用窗口。负载或 SLA 提升后,首要动作是恢复关键服务副本数。
  • 任何删除前都要有回退路径:旧 ALB、旧 Reader 在验证新配置稳定前保留,确保问题出现时可立即回滚。

四、可复现步骤总结

  1. 查账单:按服务拆分,识别固定成本大户(NAT、ALB、常驻计算)。
  2. 定边界:明确 Production 不可中断能力,Staging 可接受启动延迟。
  3. 合入口:多 ALB 合并为一个,用 Host/Path 路由。
  4. 看监控降配:基于 24h 监控数据降低 Fargate 规格,保留滚动更新能力。
  5. 评估数据库:确认 Reader 必要性,安全切流后删除,保留 Terraform 状态一致。
  6. 脚本化 Staging:desired=0 + 自动化启停脚本,替代人工或定时任务。
  7. 滚动验证:每次变更只动一个点,验证健康后再进行下一步。

最终效果:月费从 822.96 美元降至预估 180~220 美元,降幅约 73%,同时保留了快速扩容路径和生产稳定性。

原文 · Jake blog:阅读原文 →

相关工具推荐(推广):七牛云轻量云服务器推广

订阅《创造者日报》邮件版
每天精选可动手的搞钱机会、好用工具与稀缺观点,免费直达你的邮箱。
English reader? Subscribe the EN edition →
iMessage 邮件 联系我们
EN