Q63 — AWS SAA-C03 第16章

第 63/100 题 | ← 返回第16章

Q1263. 一家公司有一个应用程序,用于处理用户上传的文档中的信息。当用户将新文档上传到 Amazon S3 存储桶时,会调用一个 AWS Lambda 函数。该 Lambda 函数负责处理文档中的信息。该公司发现应用程序未能处理许多最近上传的文档。该公司希望确保应用程序在第一次尝试处理文档时出现错误,并重试处理每个文档。哪种解决方案可以满足这些要求?

正确答案: D. 将 Amazon Simple Queue Service (Amazon SQS) 队列配置为 Lambda 函数的事件源。在 S3 存储桶上配置 S3 事件通知,以将新的文档上传事件发送到 SQS 队列。

解析

该公司需要确保每个上传的文档都由 Lambda 函数处理,并在失败时进行重试。解决方案必须:保证送达(无文件丢失)。支持重试(如果处理最初失败)。具有可扩展性和成本效益(没有不必要的复杂性)。正确答案:DD. 将 Amazon Simple Queue Service (Amazon SQS) 队列配置为 Lambda 函数的事件源。在 S3 存储桶上配置 S3 事件通知,以将新的文档上传事件发送到 SQS 队列。为什么选项D是正确的SQS 提供可靠的消息传递和重试当 S3 文档上传事件直接触发 Lambda 函数时,如果 Lambda 失败,则事件将丢失(没有重试机制)。通过使用 SQS 作为中介,处理失败的消息会保留在队列中以供重试。SQS 会自动重试失败的调用(采用指数退避算法),直到消息处理完毕或过期(maxReceiveCount 可配置)。将 S3 与 Lambda 解耦S3 事件通知在规模化时可能不可靠(会受到限制或偶尔丢失事件)。SQS 充当缓冲区,确保即使 Lambda 繁忙或发生故障,也不会丢失任何事件。可扩展且经济高效SQS 无服务器且可自动扩展,能够以最低成本处理数百万条消息。无需使用应用程序负载均衡器 (C) 或 AWS Batch (B),从而避免不必要的复杂性。为什么其他选择会失败选项为什么不正确AAPI Gateway + Lambda 要求用户通过 API 发送请求,而不是自动 S3 上传。无法解决重试问题(如果 Lambda 失败,API 将返回错误,但不会重试文档)。非事件驱动(需要手动调用)。|| B | S3 复制 + AWS Batch 引入了不必要的复杂性:复制延迟(每日计划)意味着文档无法及时处理。AWS Batch 对于简单的文档处理来说过于繁琐(成本和管理开销更高)。没有内置重试逻辑(如果未进行监控,批处理作业会静默失败)。| | C | 应用程序负载均衡器 (ALB) + Lambda 并非为事件处理而设计:ALB 用于 HTTP 流量,而不是 S3 事件通知。没有重试机制(如果 Lambda 失败,则请求丢失)。成本更高(ALB 定价与 SQS 定价相比)。|实施步骤(选项D)创建 SQS 队列(标准或先进先出,取决于订单要求)。配置 S3 事件通知,将 s3:ObjectCreated:* 事件发送到 SQS 队列。将 Lambda 设置为 SQS 事件源(配置批量大小和重试策略)。更新 Lambda 以处理消息(仅在成功时从队列中删除)。最终建议最佳选择:D(SQS + S3 事件通知 + Lambda)保证送达(不会丢失文件)。处理失败时自动重试。可扩展且经济高效(无服务器架构)。