就像标题所示,我有一个想探索的场景,但不知道该怎么做。
我有一个lambda函数processCSVFile
。我还有一个SQS队列,每天在固定的时间填充来自S3的csv文件的链接,比如说大约2000条消息。现在,一旦SQS队列中有消息,我想一次处理25条消息。
我正在寻找的场景是同时处理25条消息,我希望25条lambda调用分别处理25条消息。我以为我可以在SQS中使用SendMessageBatch
函数,但这仅将消息传递到队列,似乎不适用于我的用例。
我的问题是,我是否能够执行上面说明的操作,并且如果可能,什么文档或用例可以解释我要寻找的内容。 另外,如果这种用例是不可能的,那么您推荐什么作为我要同时完成的处理的替代方法。
答案 0 :(得分:3)
要处理来自Amazon SQS的25条消息以及25个并发Lambda函数(每个运行的Lambda函数1条消息),您将需要:
请参阅:
答案 1 :(得分:2)
我认为event source mapping的lambda sqs的组合 并将reserved concurrency设置为25可能是可行的方法。
lambda使用长池来准备消息批处理,以供lambda进行并发处理。因此,每次调用函数一次都可以获取多于一条消息。
我认为没有一种方法可以将事件源映射设置为每批仅提供一条消息。如果您绝对必须确保lambda只处理一条消息,那么您将处理一条消息而不理会其他消息(将它们放回队列中)。
保留的25个并发保证您不会并行运行25个以上的函数。如果将其保留为默认值,则可以使用您帐户中的所有免费并发资源。
编辑:
@JohnRotenstein已经证实可以通过设置lambda的方式将消息传递给函数。
希望这会有所帮助。