这个工具用于从多个AWS账号同步CUR(Cost and Usage Report)数据,并将其转换为Parquet格式存储在S3中。
- 从多个AWS账号下载CUR数据导出文件
- 将gzip格式的文件转换为parquet格式
- 同步parquet文件到目标S3存储桶
- 自动备份原始gzip文件
- 自动清理超过三个月的本地文件
- Python 3.8+
- MySQL数据库
- AWS账号访问权限
- 克隆代码库:
git clone <repository-url>
cd aws-cur-sync- 安装依赖:
pip install -r requirements.txt- 配置环境变量:
cp .env.example .env编辑.env文件,填入相应的配置信息。
在.env文件中需要配置以下信息:
- 数据库连接信息(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
- S3存储桶信息(BACKUP_BUCKET, TARGET_BUCKET)
- AWS凭证(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
程序使用MySQL数据库中的payer表来存储AWS账号信息,表结构如下:
CREATE TABLE payer (
created_at DATETIME NOT NULL,
update_at DATETIME NOT NULL,
id VARCHAR(36) NOT NULL PRIMARY KEY,
aws_id VARCHAR(50) NOT NULL,
name VARCHAR(50) NOT NULL,
access_key_id VARCHAR(255) NOT NULL,
secret_access_key VARCHAR(255) NOT NULL,
bucket VARCHAR(255) NOT NULL,
monthly_dir VARCHAR(255) NOT NULL,
daily_dir VARCHAR(255) NOT NULL,
hourly_dir VARCHAR(255) NOT NULL,
region_name VARCHAR(255)
);- 确保数据库中的payer表已经正确配置了所有AWS账号信息
- 运行程序:
python aws_cur_sync.py- 确保EC2实例有足够的磁盘空间用于临时存储文件
- 确保EC2实例的IAM角色有权限访问目标S3存储桶
- 建议使用crontab设置定时任务,定期运行同步程序
程序运行日志会输出到控制台,包含以下信息:
- 文件下载状态
- 文件转换状态
- 文件同步状态
- 错误信息(如果有) # cur2parquet