首页 > 解决方案 > 如何使用 lambda 管理大量记录

问题描述

我在 S3 上的 Excel 中有 20K 记录。我的设计如下所示来处理这些记录。SQSWriterLambda -> SQS -> SQSReaderLambda -> 服务器。SQSWriterLambda 将读取 excel 文件并向 SQS 发送消息,excel 中的每条记录有 1 条消息,因此将有 20k 条 sqs 消息。SQSReaderLambda 将根据在 SQS 中接收的消息触发。它将消息内容发送到最终服务器进行处理。但是我的服务器在 24 小时内只能处理 5k 条消息。所以我正在寻找一种以某种方式处理剩余 15k 记录的解决方案。我将在 S3 上放置一次 excel 表,我希望 lambda 在任意天数内处理记录(每 24 小时 5k)。

可见性超时的最大值为 12 小时。我的第一个 lambda 可以在 sqs 上放置 20k 条消息。但是在处理 5k 条记录后,第二个 lambda 会失败。

标签: amazon-web-servicesaws-lambdaamazon-sqstrigger.io

解决方案


如果您将 lambda 连接到 sqs,它将尝试将所有 20K 消息提交给第二个 lambda 进行处理。我认为将 SQS 与第二个 lambda 解耦应该可行。

您可以考虑以下方法:

  1. 将第二个 lambda 函数替换为“独立的”(未连接到 SQS)。相反,第二个函数本身会以迭代方式查询 SQS。它只会从中查询 5K 条消息。

  2. 设置 CloudWatch Events 规则以每天自动触发一次您的函数。这样,您每天只需处理 5K 条消息。

请注意,SQS 中消息的默认保留期限为 4 天,这对于 20K 条消息(5K x 4 天)来说已经足够了。但如果需要,您可以将其延长至 14 天。


推荐阅读