gpt4 book ai didi

amazon-web-services - AWS Lambda SQS 触发器节流/限制

转载 作者:行者123 更新时间:2023-12-04 04:28:33 28 4
gpt4 key购买 nike

我有一个 AWS SQS 队列,我将使用 Lambda 函数触发器设置它,以便为添加到队列中的每个项目运行 Lambda 函数以执行一些处理工作。

处理的一个步骤是访问 API 端点,为添加到队列中的每个项目取回一些数据,然后将其存储在 DynamoDB 表中。为了管理成本并保持对这个过程的控制,我想限制在特定时间段内调用此 Lambda 函数的次数。

例如,我希望此函数每天最多运行 100 次,以免使 DynamoDB 表容量或 API 端点不堪重负。节流它也很好,它一次最多只能运行 5 个并发操作,再次运行之间有 1 秒的延迟。这种类型的控制允许我直接将函数映射到 DynamoDB 表限制,以确保我不会超出容量,并遵守任何 API 速率限制。

我查看了 AWS Lambda Managing Concurrency .特别是“函数级并发执行限制”部分。但是本节似乎没有解决每天 100 次的限制,或者运行下一个函数之间的 1 秒延迟。

我也知道我可以在另一边限制它,通过限制我一次(或每天)放入队列的项目数量。但是由于我计划这个系统的方式,这会增加很多我很想避免的复杂性。

有没有办法使用 AWS SQS 和 Lambda 来实现这一点并限制这些 Lambda 函数?

最佳答案

我认为在使用 SQS 作为事件源时,没有办法将 Lambda 调用的数量限制为每天 100 次。

另一种方法是让计划事件触发 Lambda,它轮询 SQS 队列。虽然这可能会增加从 SQS 到 DynamoDB 的数据之间的延迟,但您可以更好地控制写入 DynamoDB 的数量和速率。

要管理 100 计数,您可以在外部保存每日写入计数状态(例如 S3)或将 100 除以计划调用的数量,例如处理 10 条消息后停止的 Lambda 的 10 次调用。无论哪种方式,您都需要确保您的 Lambda 不会在处理消息的中途超时。

由于对 Lambda 的一次调用将对 DynamoDB 进行多次写入,因此您可以管理每秒写入的次数,或构建重试。

关于amazon-web-services - AWS Lambda SQS 触发器节流/限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51202756/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com