Aws lambda 降低lambda函数并行执行的限制?

Aws lambda 降低lambda函数并行执行的限制?,aws-lambda,amazon-sqs,Aws Lambda,Amazon Sqs,我有一个lambda函数,需要很长时间才能完成。它从DynamoDB读取记录,并为每个记录执行对第三方服务的HTTP调用,然后将结果保存回DynamoDB。我想放大这个函数,这样它就可以处理更多的记录。需要重新设计,因为最大lambda持续时间可以超过 解决办法似乎显而易见。一个lambda从DynamoDB读取所有记录,或者对所有记录发出HTTP请求,然后向SQS发送消息。另一个lambda侦听队列并仅对数据的一部分执行作业。两个兰姆达斯都很快 问题:我使用的第三方API每秒只允许调用5个请求

我有一个lambda函数,需要很长时间才能完成。它从DynamoDB读取记录,并为每个记录执行对第三方服务的HTTP调用,然后将结果保存回DynamoDB。我想放大这个函数,这样它就可以处理更多的记录。需要重新设计,因为最大lambda持续时间可以超过

解决办法似乎显而易见。一个lambda从DynamoDB读取所有记录,或者对所有记录发出HTTP请求,然后向SQS发送消息。另一个lambda侦听队列并仅对数据的一部分执行作业。两个兰姆达斯都很快

问题:我使用的第三方API每秒只允许调用5个请求。为了满足这个要求,我需要确保使用SQS事件的lambda不会超过第三方API的并发限制

有可能限制AWS Lambda并行执行吗

解决方案 我使用的最终解决方案与ProgrammersUrf在下面的评论中提出的方案类似

  • 调度程序Lambda从DynamoDB读取所有记录,并向SQS发送消息。设定在凌晨4点运行
  • 工人Lambda计划在早上5点工作,每天只触发一次
  • worker Lambda从SQS接收大量消息,并并行发出HTTP请求
  • 一旦工作Lambda完成并且消息数为正,则进行递归Lambda调用
  • 如果收到的消息数为0,则处理终止
  • 递归工作程序Lambda调用的好处: -无需手动调整触发器与SQS消息的消耗量 -在执行worker Lambdas之间没有暂停 -由于最大吞吐量和

    更新 Amazon增加了通过设置控制AWS Lambda并发级别的能力

    阅读更多:


    我不认为现有的功能可以做到这一点,但是您可以尝试下面的方法

  • 安排您的SQS consumer lambda每分钟运行一次
  • 将使用的最大消息数设置为60(秒)*5=300
  • 使用具有5个线程的修复线程池来呼叫第三方。如果需要,请在此代码内执行节流

  • 希望这有帮助

    我不认为现有的功能可以做到这一点,但是您可以尝试下面的方法

  • 安排您的SQS consumer lambda每分钟运行一次
  • 将使用的最大消息数设置为60(秒)*5=300
  • 使用具有5个线程的修复线程池来呼叫第三方。如果需要,请在此代码内执行节流

  • 希望这有帮助

    谢谢,这可以奏效。谢谢。我在考虑另一种解决方案,即可以使用TTL发布消息。因此,调度器lambda可以通过增加TTL来发布消息。前5个使用TTL0,另5个使用TTL1,另5个使用TTL2,依此类推。实施工作仍有待完成。完成后我将更新此线程。我已使用我使用的解决方案更新了问题。这和这个按摩中的建议很相似。谢谢,这个可以用。谢谢。我在考虑另一种解决方案,即可以使用TTL发布消息。因此,调度器lambda可以通过增加TTL来发布消息。前5个使用TTL0,另5个使用TTL1,另5个使用TTL2,依此类推。实施工作仍有待完成。完成后我将更新此线程。我已使用我使用的解决方案更新了问题。这和这个按摩中的建议很相似。