我有一个lambda函数,需要很长时间才能完成。它从DynamoDB读取记录,并且每条记录执行对第三方服务的HTTP调用,然后将结果保存回DynamoDB。我想扩展此功能,以便它可以处理更多的记录。需要重新设计,因为可以超过最大lambda持续时间。
解决方案似乎很明显。一个lambda从DynamoDB读取所有记录,而不是为所有人发出HTTP请求,向SQS发送消息。另一个lambda侦听队列并仅为一部分数据执行任务。两个lambdas都很快。
问题:我正在使用的第三方API允许每秒仅调用5个请求。为了满足这个要求,我需要确保消耗SQS事件的lambdas不超过第三方API的并发限制。
是否可以限制AWS Lambda并行执行?
我使用的最终解决方案类似于 programmersmurf 在下面的评论中提出的解决方案。
递归worker Lambda调用的好处: - 无需手动调整触发器与消耗的SQS消息量 - 执行工人Lambdas之间没有暂停 - 由于两者的最大吞吐量
亚马逊增加了通过设置控制AWS Lambda并发级别的能力。
了解更多:
https://docs.aws.amazon.com/lambda/latest/dg/history.html https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html
答案 0 :(得分:0)
我认为没有现成的功能,但您可以尝试下面这样的操作。
希望这有帮助