跳转到内容
HexaTransfer
返回博客
云与存储

云存储成本优化:节省高达70%

用经过验证的优化策略降低云存储成本。存储类别选择、生命周期策略与成本监控技术全解析。

将云存储账单削减50-70%,依赖按顺序执行的五个动作:将温数据从 S3 Standard(约0.17元/GB/月)迁移到 S3 Glacier Instant(约0.03元/GB/月)或 Backblaze B2(约0.04元/GB/月),通过 Cloudflare R2(零出口费)消除用户侧下载的出口成本,将冷数据归档到 Glacier Deep Archive(约0.007元/GB/月),清除孤立的分段上传和未完成的快照,并用 CloudWatch 或 Azure Cost Management 告警执行团队预算。一个100TB工作负载在 S3 Standard 上每月约1.7万元,切到 Glacier Instant 降至约5千元,切到 Deep Archive 降至约700元——70%这个数字不是营销话术,是算术。

削减之前先绘制支出地图

没有测量的优化是猜测。在改动任何东西之前,生成存储清单:

aws s3api list-buckets --query 'Buckets[].Name' --output text | \
  xargs -I{} aws s3 ls s3://{} --recursive --summarize

更好的方案:运行 S3 Storage Lens 或 Azure Cost Management 的存储分析器。你需要每个存储桶的对象数量、总字节数、平均对象大小以及跨存储类别的分布情况。80/20法则几乎总是成立——一两个存储桶占80%的支出,优化就从那里着手。

给每个存储桶打上 ownerenvprojectlifecycle-policy 标签,这样成本报告能映射到能真正采取行动的人。

为每种访问模式选择正确的存储类别

存储类别的存在,是因为单一价格无法匹配所有工作负载。大致分层:

  • 热数据(每日读取):S3 Standard、Azure Hot、GCS Standard。低延迟溢价。
  • 温数据(每月读取):S3 Standard-IA、Azure Cool、GCS Nearline。便宜40-60%。
  • 冷数据(每季度读取):S3 Glacier Instant、Azure Archive、GCS Coldline。比 Standard 便宜80%。
  • 归档(年度或从不读取):Glacier Flexible / Deep Archive。便宜95%。

文件放错类别的代价是双倍的:要么在高级类别上多花钱,要么每次访问冷文件都付取回费。Glacier Deep Archive 取回费约每GB 0.14元加每请求费;取回1TB数据一次,仅取回费就超过140元,超过存储节省的部分。

新存储桶的安全默认:S3 Intelligent-Tiering,根据使用情况自动在访问层之间移动对象。每千个对象约0.18元的监控费,对于访问模式不可预测的工作负载值得。

自动承担重任的生命周期策略

典型的生命周期策略能独立减少60%的支出:

{
  "Rules": [{
    "ID": "age-out",
    "Status": "Enabled",
    "Transitions": [
      { "Days": 30,  "StorageClass": "STANDARD_IA" },
      { "Days": 90,  "StorageClass": "GLACIER_IR" },
      { "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
    ],
    "Expiration": { "Days": 2555 },
    "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 }
  }]
}

将阈值与实际访问衰减模式匹配。对于事务日志,14天热、30天温、90天冷有效。对于媒体归档,第一次转移可以是90天以上。AbortIncompleteMultipartUpload 这行至关重要——废弃的分段上传会静默积累数百GB计费存储,而你在对象列表中完全看不到它们。

消灭出口成本

出口费通常是云存储账单的30-50%,也是最容易单点突破的项目。选项:

  • Cloudflare R2:零出口费,S3兼容,约0.11元/GB存储。对于用户侧 CDN 支持的下载,是显而易见的选择。
  • Backblaze B2 + Cloudflare Bandwidth Alliance:到 Cloudflare 出口免费,然后由 CDN 处理用户端。
  • Wasabi:每月出口量不超过存储量1倍时免费。
  • AWS S3 + CloudFront:CloudFront 出口(约0.62元/GB)比直接 S3 出口便宜,且同区域的 S3 到 CloudFront 出口费为零。

对于内部工作负载,为 S3 启用 VPC Gateway Endpoint——这消除了 NAT Gateway 处理费(如果不注意,这项费用可能超过存储费用)。对于跨区域复制,明确指定区域并最小化流量,将跨区域出口保持在约0.14元/GB以下。

压缩与去重

在为存储付费之前,先减少需要存储的内容:

  • 文本与日志:zstd 压缩通常达到8:1比率。10TB日志压缩后存储为1.25TB。
  • 图像:PNG重新编码为 WebP 或 AVIF,用户侧资产缩小60-80%。
  • 视频:H.265或 AV1 替代 H.264,同等质量下文件小30-50%。
  • 备份:restic 和 Borg 在快照间去重——1TB工作集每日备份在30天留存下约存储1.2TB。

压缩是用 CPU 换字节。存储成本约0.17元/GB/月,EC2 计算约0.36元/小时,压缩投入几乎总在数天内收回成本。

删除你忘记的东西

长期运行的账户会积累审计前看不见的浪费:

  • 孤立 EBS 快照:比源卷更旧,或90天以上且无标签的快照
  • 旧版 AMI:每次部署发布新 AMI;旧版在注销前一直计费
  • 启用版本控制但无生命周期的存储桶:每个对象版本都计入存储,且版本控制默认开启
  • 日志留存:CloudWatch Logs 默认无限期留存,意味着数年的计费日志
  • 废弃存储桶:离职员工的项目、多年前迁移留下的测试环境

用 AWS Trusted Advisor 或在非生产账户中运行 aws-nuke 进行季度扫描,识别候选项。对于生产环境,在删除前向所有者发出两周弃用通知,并在删除后30天内保留恢复快照。

预留容量与节省计划

AWS 和 Azure 都为可预测存储提供预付费折扣。AWS S3 存储类别没有预留,但 EBS 和 EFS 通过计算节省计划提供。Azure 为 Blob 存储提供预留容量——承诺100TB一年,节省约17%。

预留只在能自信预测用量时才值得。如果还在优化阶段,先做优化。在低效存储上的预留容量只是提前预付浪费。

监控支出并告警

月度成本审查太滞后——你需要每日信号。配置:

  • 每日异常告警:通过 AWS Cost Anomaly Detection 或 Azure Anomaly Detection。当任何服务的每日支出相比7天均值偏差超过20%时,通过微信企业消息或飞书机器人推送通知。
  • 每存储桶预算:在预计月支出的80%、100%和120%处设置硬告警。
  • 出口尖峰告警:任何单一存储桶在一小时内 GET 流量超过基线2倍,是泄露的预签名 URL 或爬虫的信号。
  • 增长预测:外推存储增长6个月,标记按当前趋势会超出预算的存储桶。

仪表盘固然好,但告警胜过仪表盘。没人在账单来之前主动查看仪表盘。

治理:将成本作为关键指标

不持续的成本优化会回退。使节省持续的三个实践:

  • FinOps 审查:每团队每月30分钟会议,聚焦各自的前三大成本驱动因素和一个行动项。
  • 成本回拨或展示:将云成本分配给产品线。负责新分析功能的团队能感受到 S3 PUT 费用的压力。
  • 要求成本估算的 PR 模板:Terraform PR 中的新基础设施应包含每月增量估算(Infracost 可自动插入)。

HexaTransfer 通过只存储密文(无预览生成、无服务端解密)并使用零出口费对象存储来控制成本。免费试用 hexatransfer.com——无需注册,单次最大10GB。

将所有内容整合在一起

100TB工作负载的实际6个月计划:第1周,清点和标记所有存储桶;第2-3周,应用30/90/365天转移的生命周期策略;第2个月,将用户侧下载迁移到 R2 并消除出口成本;第3个月,用 zstd 压缩日志并重新编码媒体;第4个月,清理孤立快照、旧版 AMI 和废弃存储桶;第5个月,建立 FinOps 审查和每日成本告警;第6个月,支出稳定后评估预留容量。完成这个计划的团队,通常能在50-70%的节省区间落地,不需要任何宏大的重新架构——只是在精心划定范围的小动作上持续用心。

通过端到端加密安全发送大文件

通过端到端加密免费传输最大10GB的文件。无需注册账户。文件在上传前在浏览器中加密,其他人无法读取。

发送文件