如何对比开启版本控制的两个AWS S3存储桶并生成指定维度对比报告
针对启用版本控制的S3存储桶数据对比的AWS原生方案
方案1:S3 Inventory + Athena 分析对比
- 为两个目标存储桶分别开启S3 Inventory,配置清单包含
Object Key、VersionId、Last Modified、Size字段,同时勾选包含所有对象版本(而非仅当前版本)。 - 将两个桶的Inventory报告存储到同一可被Athena访问的S3路径,在Athena中为两份Inventory数据创建对应的数据表。
- 编写SQL查询完成对比:
- 筛选仅存在于其中一个桶的对象版本
- 校验相同
Object Key+VersionId组合下,Last Modified或Size不匹配的记录 - 将查询结果导出为CSV格式报告,存储到指定S3位置
方案2:S3 Batch Operations + 分段Lambda处理
- 借助S3 Batch Operations拆分大规模对比任务:
- 先通过S3 Inventory或
ListObjectsVersionsAPI生成两个桶的全量对象版本清单 - 创建S3 Batch任务,将清单拆分为多个小批次,每个批次触发Lambda执行对比逻辑
- 在Lambda中把对比结果写入DynamoDB,任务完成后导出DynamoDB数据生成最终报告
- 此方案利用Batch的任务拆分能力,规避单Lambda的运行时长限制
- 先通过S3 Inventory或
方案3:AWS Glue 进行ETL式对比
- 使用AWS Glue爬虫扫描两个存储桶的所有对象版本,配置爬虫识别S3版本控制元数据。
- 在Glue中创建对应两个桶的数据源表,映射
Object Key、VersionId、Last Modified、Size字段。 - 编写Glue ETL作业执行数据对比逻辑,将差异数据输出到S3作为对比报告。
- Glue作业无Lambda式的时长限制,适配大规模对象版本的对比场景
内容的提问来源于stack exchange,提问作者Dnyaneshwar Jadhav
相关产品推荐
相关产品推荐

