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

时间:2016-12-14 07:59:54

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

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

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

2 个答案:

答案 0 :(得分: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函数。
  3. 如果您不需要接近实时处理,这两个选项也是有效的:

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

答案 1 :(得分:1)

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

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