当SQS队列中存在消息时,在AWS中触发Lambda函数

问题描述 投票:6回答:2

我正在使用AWS Lambda函数来处理Queue中的消息,它工作正常。但是我需要在消息可用或在SQS队列中添加时执行此Lambda函数。

是否可以基于SQS队列触发Lambda函数。请建议一种方法来实现此目标。

amazon-web-services amazon-ec2 aws-lambda amazon-sqs
2个回答
16
投票

不直接支持从SQS队列调用Lambda函数。您可以在此处查看可用触发器列表:http://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html

可能的解决方案:

  1. 用Kinesis或DynamoDB替换SQS队列。两者都可以在更新时触发Lambda函数。
  2. 在SQS之前注入SNS。 SNS可以向SQS添加项目并触发Lambda函数。

如果您不需要接近实时处理,这两个选项也是有效的:

  1. 创建将每N分钟(例如每分钟)触发Lambda函数的CloudWatch事件规则。
  2. 创建CloudWatch警报,查看SQS队列的ApproximateNumberOfMessagesVisible参数。此警报应发布到SNS主题,然后该主题将触发Lambda函数。

1
投票

Lambda现在支持SQS作为本机事件源

https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

© www.soinside.com 2019 - 2024. All rights reserved.