使用 Amazon S3 和 Lake Formation 构建数据湖 - 设计模式与治理

介绍以 S3 为存储基础、通过 Lake Formation 实现细粒度访问控制的数据湖设计模式。同时解说 ETL 管道与成本优化方案。

数据湖的设计模式

数据湖以具有 99.999999999%(11 个 9)持久性的 S3 为存储基础,从原始数据的摄取到转换为可分析状态进行分阶段管理。着陆区(Raw)原样保存摄取的原始数据,暂存区(Processed)通过 Glue 作业执行类型转换和数据清洗。策展区(Curated)以 Parquet 格式存放应用了业务逻辑的分析用数据。S3 前缀设计采用 year/month/day 的分区结构,通过 Athena 查询的分区裁剪实现扫描量削减。

Lake Formation 实现的治理

Lake Formation 是集中管理数据湖访问控制的服务。以往需要分别设置 S3 存储桶策略、IAM 策略和 Glue Catalog 策略,而 Lake Formation 可在数据库、表、列、行各级别进行基于 GRANT/REVOKE 的权限管理。使用基于标签的访问控制(LF-TBAC),可以为数据附加分类标签,并根据标签自动应用访问权限。跨账户共享可向 Organizations 内的其他账户授予表级别的访问权限,实现数据网格架构。

ETL 管道的设计

数据湖的 ETL 管道通过 Glue 作业构建。使用 Glue Crawler 扫描着陆区的原始数据进行 Schema 检测,并注册到数据目录中。Glue 作业执行类型转换、缺失值处理和去重,以 Parquet 格式输出到策展区。设置分区键(日期、区域)以优化 Athena 的查询性能。通过 Glue Workflow 定义多个作业的依赖关系,控制 Crawler → ETL 作业 → 数据质量检查的执行顺序。使用 EventBridge 以数据到达 S3 为触发器自动启动 ETL 管道,实现近实时的数据更新。 从基础到应用全面学习 Lake Formation,可参考相关书籍(Amazon)

数据湖的成本优化

利用 S3 的存储类别优化数据湖成本。着陆区的原始数据存储在 S3 Standard 中,设置生命周期规则在 30 天后迁移到 S3 Intelligent-Tiering。策展后的数据因频繁查询而保持在 Standard,归档区的数据迁移到 Glacier Instant Retrieval。通过 Parquet 格式和适当的分区设计可大幅降低 Athena 的查询成本,与 CSV 相比扫描量可减少 90% 以上。适当设置 Glue 作业的 DPU 数量,避免过度的资源分配。通过 S3 Storage Lens 可视化各存储桶的成本明细,定期执行不必要数据的删除和存储类别的审查。

总结

结合 S3 和 Lake Formation 的数据湖,通过三层区域设计逐步提升数据质量,并通过 Lake Formation 的细粒度访问控制确保治理。利用 Glue Crawler 的 Schema 自动检测和列式格式的采用,可同时实现运维效率和查询性能。