amazon-web-services - 从一个 SQS 触发器触发多个 lambda 函数

标签 amazon-web-services aws-lambda amazon-sqs

我不确定我是否理解 AWS Lambda - SQS 正确触发。我是否可以将它配置为一个 SQS 队列可以根据消息正文或消息属性触发不同的 lambda 函数?

我的用例:我有三个不同的 lambda 函数(processCricket、processFootball、processTennis),每个函数执行一个独特的功能。我有一个接收消息的队列(processGame)。队列中的每条消息都有一个属性“type”,它可以是“Cricket”、“Football”或“Tennis”。我可以根据消息上的“类型”调用不同的 lambda 函数吗?

选项 1:根据类型配置 SQS 以触发不同的 lambda 函数(不确定我是否可以这样做)

选项 2:配置一个可以检查类型的 lambda 函数,然后根据其类型调用其他 lambda 函数

选项 3:为每个 lambda 创建单独的队列。通过将消息添加到适当的队列来控制哪个 lambda 处理消息。

最佳答案

Option 1: Configure SQS to trigger a different lambda function depending on the type



你不可能知道 type直到它被 lambda 消耗掉。所以这个是不可能的。

Option 2: Configure one lambda function which can check type and then call the other lambda functions depending on its type



是的,这是第一选择的“可能”方式。但根据您的使用情况,它可能会花费“更多”。当您以批处理模式使用 sqs 时,您必须通过多次检查来调用多个 lambda。

Option 3: Create separate queues for each lambda. Control which lambda processes the message by adding the message to the appropriate queue.



在我看来,这可能是最好的选择。您可以为每个队列配置不同的 DLQ,根据您的业务规则设置不同的批次大小,不需要额外的 lambda 来增加“复杂性”。

关于amazon-web-services - 从一个 SQS 触发器触发多个 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62349013/

相关文章:

python - 如何为我的基于 AWS Python 的 lambda 项目编写测试用例?

javascript - 用于视频文件的 AWS S3 和 Cloudfront CDN

amazon-web-services - 如何禁用 ${appName}.elasticbeanstalk.com URL?

amazon-web-services - Docker Cloud的栈文件怎么写?

bash - 命令 aws 记录 logGroupName 处的 create-export-task 错误 (InvalidParameterException)

amazon-s3 - chalice on_s3_event触发器似乎不起作用

python - AWS Lambda : Calling the invoke API action failed with this message: Network Error

json - 如何使用 Python 解析 SQS JSON 消息

ruby-on-rails - Rails、ActiveJobs 和 AWS SQS : what happen to my jobs when a worker instance is killed?

nginx 502 阻碍 eb Worker 和 SQS 导致可见性超时不被遵守