基于 Go 语言构建的 AWS 云成本优化定时任务引擎
自动执行预算检查 · 成本分析 · 用量预测 · 规格优化建议
支持多平台广播通知与报告归档
| **核心概念** [项目概述](#-项目概述) [系统架构](#-系统架构) [核心流程](#-核心流程) [配置加载机制](#-配置加载机制) | **功能模块** [报告导出与归档](#-报告导出与归档) [多平台广播](#-多平台广播) [目录结构](#-目录结构) |
| **使用指南** [快速开始](#-快速开始) [环境变量](#-环境变量) [本地开发](#-本地开发) | **部署与参考** [部署架构](#-部署架构) [技术栈](#-技术栈) [许可证](#-许可证) |
| 特性 | 说明 |
|---|---|
| 7 步流水线 | 预算检查 → 成本查询 → 成本预测 → 用量对比 → 规格优化 → 综合分析 → 广播通知 |
| 多环境支持 | 本地循环模式(模拟 EventBridge)+ AWS Lambda 模式 |
| 3 种报告格式 | PDF(高管,带水印)/ JSON(开发者)/ CSV(财务) |
| 7 种广播平台 | 企业微信 / 飞书 / 钉钉 / Email / Slack / Telegram / Discord |
| S3 Glacier 归档 | 旧报告自动归档到 Glacier 存储,成本极低 |
| 3 层配置加载 | S3 .env → Secrets Manager → 系统环境变量 |
| CloudWatch 结构化日志 | 兼容 EMF 格式,便于监控与告警 |
| 状态 | 说明 | 对最终状态的影响 |
|---|---|---|
ok |
步骤执行成功 | 正常 |
pending_implementation |
功能待实现(占位步骤) | 不影响,不计入失败 |
warn |
有警告但不致命 | 最终状态可能为 partial_failure |
error |
步骤执行失败 | 最终状态可能为 error |
skipped |
配置关闭,主动跳过 | 不影响 |
| 格式 | 受众 | 文件大小 | 特点 |
|---|---|---|---|
| 高管 / 管理层 | ~20 KB | 精美排版、品牌水印、彩色表格 | |
| JSON | 开发者 / API 集成 | ~2 KB | 结构化、schema_version、RFC3339 时间戳 |
| CSV | 财务 / 数据分析 | ~1 KB | Excel 兼容(UTF-8 BOM)、双段布局 |
| 存储类型 | 最低存储时长 | 取回费用 | 适用场景 |
|---|---|---|---|
GLACIER_IR(默认) |
90 天 | 低 | 历史报告快速检索 |
GLACIER |
90 天 | 中 | 长期归档(分钟级取回) |
DEEP_ARCHIVE |
180 天 | 高 | 合规归档(小时级取回) |
STANDARD_IA |
30 天 | 最低 | 不常访问但需即时取回 |
| 类别 | 技术 | 版本 | 用途 |
|---|---|---|---|
| Go | 1.26+ | 主编程语言 | |
| aws-sdk-go-v2 | v1.x | AWS 服务集成 | |
| go-pdf/fpdf | v0.9.0 | PDF 报告生成 | |
| godotenv | - | .env 文件解析 | |
| 自研(CloudWatch EMF) | - | 结构化日志 | |
| Noto Sans SC | - | PDF 中文字体 | |
| AWS Lambda | - | 无服务器运行时 | |
| EventBridge | - | 定时调度 | |
| S3 Glacier | - | 历史报告归档 |
如果您觉得本项目对您有帮助,欢迎请我喝杯咖啡
您的支持是我持续维护和改进的动力