[SEO 副标题]
本指南展示如何在 AWS 上利用事件驱动的、无服务器且可扩展的架构来自动配置数据湖。它利用 AWS 托管服务来摄取、存储、处理和分析数据,通过适当的数据治理提供安全、灵活且经济高效的设计。与传统的数据管理系统相比,这种方法具有更高的敏捷性、灵活性和可靠性。整个解决方案采用基础设施即代码(IaC)以及持续集成和持续交付(CI/CD)管道,构建为一个可编码的应用程序。
请注意:[免责声明]
架构图

[架构图描述]
第 1 步
数据管理员将 JSON 文件上传到 Amazon Simple Storage Service(Amazon S3)的原始存储桶中。在 Amazon S3 中创建对象会触发 Amazon EventBridge 中的一个事件。
第 2 步
EventBridge 有一条规则可在 Amazon Simple Queue Service(Amazon SQS)中发送消息,从而调用一个 AWS Lambda 函数。
第 3 步
Lambda 函数触发 AWS Step Functions 工作流,其中另一个 Lambda 函数会从 S3 原始存储桶中读取文件并执行转换。它还会将新的 JSON 文件集写入 S3 暂存存储桶。
第 4 步
一个 Lambda 函数使用 Step Functions 作业状态更新 Amazon DynamoDB 表。
第 5 步
一旦在 S3 暂存存储桶中创建了文件,就会在 EventBridge 中出发一个事件,该事件桥有一条规则,可在 Amazon SQS 中发送包含已创建文件详细信息的消息。
第 6 步
Eventbridge 调度器按特定间隔运行,并且会调用一个 Lambda 函数,该函数将从 Amazon SQS 检索消息并启动另一个 Step Functions 工作流。
第 7 步
AWS Glue 提取、转换、加载(ETL)工具从 AWS Glue 数据库暂存区读取数据,然后将文件从 JSON 格式转换为 Parquet 格式。
第 8 步
AWS Glue ETL 将 Parquet 文件写入 S3 分析存储桶。AWS Glue 爬网程序会爬取同一存储桶中的 Parquet 文件,然后在 AWS Glue 数据库分析中创建分析表。
第 9 步
所有暂存目录和分析目录都由 AWS Glue Data Catalog 维护。
第 10 步
一个 Lambda 函数使用 Step Functions 作业状态更新 DynamoDB 表。
第 11 步
业务分析师使用 Amazon Athena 查询 AWS Glue 数据库分析。
Well-Architected 支柱

当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
Amazon CloudWatch 通过来自每个架构组件的操作日志,提供有关性能和运行状况的全面见解。使用 Amazon S3 服务器访问日志来跟踪对您的数据湖发出的请求的详细记录,使您能够审核安全性和访问情况,并了解您的 Amazon S3 账单情况。DynamoDB 会细致跟踪您的数据湖管道作业的状态,让您能够迅速识别并处理可能出现的任何错误。
-
安全性
AWS Key Management Service(AWS KMS)使用客户自主管理型密钥对所有静态数据进行加密,从而保护您的数据湖。通过强大的 TLS 1.2 加密保护传输中数据。 AWS Identity and Access Management(IAM)使您能够通过最低权限原则,精确管理对 AWS 服务和资源的身份验证和访问。
-
可靠性
Amazon S3 充当高度耐用且可用的存储层。数据管道通过 EventBridge 触发,后者会向 Amazon SQS 发送消息以启动管道作业。通过将消息移动到死信队列进行调试和重新处理来处理错误。万一发生区域故障,可以将本指南中的方案重新部署到另一个 AWS 区域或账户,以确保灵活性和弹性。
-
性能效率
此解决方案通过使用 Lambda 处理轻量级任务,以及使用 AWS Glue 进行大量数据转换来优化性能。AWS Glue 是一项无服务器数据集成服务,可简化并加速数据准备工作,同时降低成本。它利用 Apache Spark 实现转换作业的可扩展执行。Step Functions 可编排 AWS Glue 作业,提供分布式处理能力,以提升数据管道的性能。
-
成本优化
本指南使用无服务器 AWS 服务,可降低总体拥有成本并根据需求进行扩展。Amazon S3 充当存储层,提供各种经济高效的存储类,以及针对不同数据访问模式的自动生命周期管理。通过将基础设施管理工作交给 AWS,无服务器方法使开发人员能够专注于代码,进一步降低成本并提高效率。
-
可持续性
本指南中的无服务器服务根据需求进行扩展,可最大程度地提高能源效率并减少计算资源的使用。Amazon S3 实施数据生命周期策略,并以 Parquet 格式存储摄取的数据。这种压缩格式可减少每次查询的数据扫描量,从而进一步降低工作负载所需的计算资源。无服务器架构与高效数据存储的结合优化了整体性能和资源利用率。
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指南是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。