Q55 — AWS SAA-C03 第16章
第 55/100 题 | ← 返回第16章
Q1255. 一家公司根据合作伙伴提供的数据创建每日和每月的业务指标。每天,合作伙伴都会将 JSON 数据文件发送到该公司拥有的 Amazon S3 存储桶中。S3 对象键使用 Apache Hive 风格的日期分区。该公司使用 Amazon EventBridge 规则调用 AWS Lambda 函数,该函数读取 S3 存储桶中的所有对象,以汇总每日和每月的指标。该公司偶尔会进行需要访问历史数据的分析。随着数据的积累,Lambda 函数经常超时。解决方案架构师必须防止 Lambda 函数超时。哪种解决方案能够以最少的运营开销满足这些要求?
- A. 更新 EventBridge 规则以调用 AWS Step Functions 在函数失败时重试 Lambda 函数。
- B. 修改 Lambda 函数,在日常处理过程中删除较旧的 S3 对象
- C. 修改 Lambda 函数以使用带有日期过滤器的 Amazon Athena 查询 S3 对象。 ✓
- D. 创建 AWS Glue 作业来调用 Lambde 函数。更新 EventBridge 规则以调用 AWS Glue 作业
正确答案: C. 修改 Lambda 函数以使用带有日期过滤器的 Amazon Athena 查询 S3 对象。
解析
正确答案是 C。修改 Lambda 函数以使用带有日期过滤器的 Amazon Athena 查询 S3 对象。解释:问题出现的原因是 Lambda 函数每次运行时都会读取 S3 存储桶中的所有对象(包括历史数据),随着数据集的增长,会导致超时。解决方案应该减少处理的数据量,同时仍然允许每日和每月的指标聚合。为什么选项C是最佳选择:Amazon Athena 允许直接使用 SQL 查询 S3 数据,并进行分区修剪(Hive 样式分区,如 year=2023/month=10/day=15)。Lambda 函数可以仅查询必要的分区(例如,对于每日指标,查询 WHERE date = CURRENT_DATE;对于月度指标,查询 WHERE date BETWEEN start_of_month AND end_of_month)。无需读取所有对象——Athena 仅扫描相关分区,从而大幅缩短处理时间。低操作开销——无需修改数据结构或设置复杂的管道。为什么其他选择不太理想:A. 更新 EventBridge 以调用 Step Functions 进行重试,这并不能解决根本原因(Lambda 仍然会处理所有数据)。这增加了复杂性(Step Functions),却没有减少处理时间。B.修改 Lambda 以删除较旧的 S3 对象删除偶尔需要进行分析的历史数据(违反了要求)。这不是一个可持续的解决方案——数据保留策略不应该以这种方式处理。D.创建 AWS Glue 作业来调用 LambdaGlue 用于 ETL,而不是用于简单查询。除非与分区结合(Athena 已经可以有效处理),否则仍会处理所有数据。更高的运营开销(粘合作业设置、监控)。结论:选项 C 是最有效且操作密集程度最低的解决方案,因为:它利用 Athena 中的分区修剪来仅查询必要的数据。通过减少处理时间来避免 Lambda 超时。保存历史数据以供分析。需要最少的更改(仅带有日期过滤器的 SQL 查询)。最终答案:C