Q83 — AWS SAA-C03 第15章
第 83/100 题 | ← 返回第15章
Q1183. 一家公司想要创建一个支付处理应用程序。该应用程序必须在付款记录到达现有 Amazon S3 存储桶时运行。该应用程序必须对每条付款记录进行恰好一次的处理。该公司希望使用 AWS Lambda 函数来处理付款。哪种解决方案可以满足这些要求?
- A. 配置现有的 S3 存储桶,将对象创建事件发送到 Amazon EventBridge。配置 EventBridge 以将事件路由到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列。配置 Lambda 函数,使其在新的事件到达 SQS 队列时运行。 ✓
- B. 配置现有的 S3 存储桶,将对象创建事件发送到 Amazon Simple Notification Service (Amazon SNS) 主题。配置 Lambda 函数,使其在新事件到达 SNS 主题时运行。
- C. 配置现有的 S3 存储桶,将对象创建事件发送到 Amazon Simple Queue Service (Amazon SQS) 队列。配置 Lambda 函数,使其在新事件到达 SQS 队列时运行。
- D. 配置现有的 S3 存储桶以将对象创建事件直接发送到 Lambda 函数。配置 Lambda 函数来处理对象创建事件并处理付款。
正确答案: A. 配置现有的 S3 存储桶,将对象创建事件发送到 Amazon EventBridge。配置 EventBridge 以将事件路由到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列。配置 Lambda 函数,使其在新的事件到达 SQS 队列时运行。
解析
为了满足使用 AWS Lambda 函数在每条付款记录到达现有 Amazon S3 存储桶时对其进行精确处理一次的要求,最佳解决方案是 A。配置现有 S3 存储桶以将对象创建事件发送到 Amazon EventBridge。配置 EventBridge 以将事件路由到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列。配置 Lambda 函数以在新事件到达 SQS 队列时运行。选项分析:选项 A:配置现有的 S3 存储桶,将对象创建事件发送到 Amazon EventBridge。配置 EventBridge,将事件路由到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列。配置 Lambda 函数,使其在新的事件到达 SQS 队列时运行。优势:Amazon SQS FIFO(先进先出)队列确保消息只处理一次,并且按照接收顺序进行。通过使用 EventBridge 将 S3 对象创建事件路由到 SQS FIFO 队列,您可以保证 Lambda 函数只处理每条付款记录一次。此解决方案为付款处理提供了必要的可靠性和排序保证。选项 B:配置现有的 S3 存储桶,将对象创建事件发送到 Amazon Simple Notification Service (Amazon SNS) 主题。配置 Lambda 函数,使其在新的事件到达 SNS 主题时运行。限制:Amazon SNS 是一种发布-订阅服务,不保证消息的有序性或恰好一次处理。虽然它可以触发 Lambda 函数,但存在重复处理或乱序处理的风险,这不适用于每笔付款必须恰好处理一次的支付处理应用程序。选项 C:配置现有的 S3 存储桶,将对象创建事件发送到 Amazon Simple Queue Service (Amazon SQS) 队列。配置 Lambda 函数,使其在新事件到达 SQS 队列时运行。限制:虽然 Amazon SQS 标准队列可以触发 Lambda 函数,但它们不保证消息顺序或恰好一次处理。这可能导致支付记录重复处理或乱序处理,这对于支付处理来说是不可接受的。选项 D:配置现有的 S3 存储桶以将对象创建事件直接发送到 Lambda 函数。配置 Lambda 函数以处理对象创建事件并处理付款。限制:虽然此解决方案可以在创建 S3 对象时直接触发 Lambda 函数,但它不提供任何恰好一次处理的保证。存在 Lambda 函数因同一事件而被多次调用(例如,由于重试)的风险,从而导致重复的付款处理。此外,它没有固有的消息顺序保证。结论:A. 配置现有的 S3 存储桶,将对象创建事件发送到 Amazon EventBridge。配置 EventBridge,将事件路由到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列。配置 Lambda 函数,使其在新事件到达 SQS 队列时运行。这是满足需求的最佳解决方案。它确保每条付款记录都按照接收顺序精确处理一次,从而为支付处理应用程序提供必要的可靠性。