多个AWS Lambda执行完成的回调

时间:2017-02-13 18:35:31

标签: python-2.7 amazon-web-services aws-lambda amazon-sns

这是我的问题:

  

我必须将候选对象与db中的数百万其他候选者的某些标准进行比较。由于lambda只允许执行5分钟,因此会导致超时。

我的解决方案:

  

我打算与10,000个候选人进行比较,因此我必须调用10个lambda函数(通过SNS)来处理100,000个候选者,然后在每个DynamoDB表中保存每个lambda的结果。但是如何在所有lambda函数完成处理时获得回调,以便我可以收集单个lambda的结果,然后计算最终结果。如何实现这一点,还是有更好的方法来实现我的目标。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我不确定AWS Lambda是否真的适合您的用例。但是,只关注问题的主要部分,您可以使用DynamoDB Atomic Counters来确定所有处理何时完成。您将执行以下操作:

  • 最初在DynamodB中插入一条记录,其中numberOfLambdaCalls属性字段设置为您要启动的并发执行次数,completedLambdaCalls属性设置为0
  • 当每个函数完成时,作为更新DynamoDB记录的一部分,它们将原子地增加completedLambdaCalls属性。
  • 每个函数都可以检查返回的更新结果,看看它们是否是完成if numberOfLambdaCalls == completedLambdaCalls之类的处理的结果,如果是,则执行触发响应所需的任何操作。