forked from wangqifan/calc
4.7 KiB
4.7 KiB
AWS EC2 价格计算器
这是一个基于Vue.js和Python FastAPI开发的AWS EC2价格计算器网站,可以帮助用户计算和比较不同EC2实例的价格。
功能特点
-
价格计算器
- 选择实例类型、区域、操作系统和购买选项
- 实时计算价格
- 显示详细的价格信息
-
实例搜索
- 根据CPU、内存和其他规格查找最合适的实例
- 支持从AWS官方API和数据库两种数据源查询
- 显示完整规格和价格信息
-
价格比较
- 支持多个实例配置的并排比较
- 生成标准化的报价单
- 支持导出Excel格式报价单
技术栈
- 前端:Vue.js 3 + Element Plus
- 后端:Python FastAPI
- 数据源:AWS Pricing API + MySQL数据库
系统要求
- Python 3.9+
- Node.js 14+
- npm 6+
- MySQL 5.7+
项目结构
.
├── backend/ # 后端项目
│ ├── app/ # 应用代码
│ │ ├── api/ # API路由
│ │ ├── core/ # 核心配置
│ │ ├── models/ # 数据模型
│ │ └── services/ # 服务层
│ ├── main.py # 入口文件
│ └── requirements.txt # 依赖包
└── frontend/ # 前端项目
├── public/ # 静态资源
├── src/ # 源代码
│ ├── api/ # API调用
│ ├── assets/ # 资源文件
│ ├── components/ # 组件
│ └── views/ # 页面
└── package.json # 依赖配置
安装与部署
后端部署
- 创建并激活虚拟环境
# 创建虚拟环境
conda create -n calc python=3.10
conda activate calc
- 安装依赖
cd backend
pip install -r requirements.txt
- 配置环境变量
创建.env文件在backend目录下,添加以下内容:
# AWS凭证
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_DEFAULT_REGION=us-east-1
# MySQL数据库配置
MYSQL_HOST=localhost
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=aws_price
- 启动开发服务器
# 开发环境
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# 生产环境
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
前端部署
- 安装依赖
cd frontend
npm install
- 启动开发服务器
npm run serve
- 构建生产版本
npm run build
- 前端生产环境部署
将frontend/dist目录下的文件部署到Web服务器的根目录。
Nginx配置示例
server {
listen 80;
server_name your_domain.com;
# 前端静态文件
location / {
root /path/to/frontend/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# 后端API代理
location /api {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
API接口说明
主要API端点
GET /api/regions- 获取所有可用区域GET /api/instance-types- 获取所有实例类型POST /api/search-instances- 搜索符合条件的实例(AWS API方式)POST /api/search-instances-v2- 搜索符合条件的实例(数据库方式)POST /api/compare-prices- 对比多个配置的价格
示例请求
// 搜索实例示例请求
POST /api/search-instances-v2
{
"cpu_cores": 4,
"memory_gb": 16,
"disk_gb": 100,
"region": "us-east-1",
"operating_system": "Linux"
}
数据库说明
该应用使用MySQL数据库存储AWS实例价格数据,主要表结构如下:
aws_price表
id- 唯一标识符locations- 区域类型area_en- 区域英文名称area_cn- 区域中文名称instance_type- 实例类型price- 小时价格operating_system- 操作系统vcpu- CPU核心数memory- 内存大小(GB)updatetime- 更新时间
常见问题解答
-
价格计算不准确?
- 确保已配置正确的AWS凭证
- 价格可能因区域和时间而变化
-
无法连接数据库?
- 检查数据库连接配置
- 确保MySQL服务已启动
- 验证用户权限
-
API返回错误?
- 检查日志获取详细错误信息
- 验证请求格式是否正确
贡献指南
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建Pull Request
许可证
MIT License