每当新消息添加到SQS时,我想触发Lambda函数。 请注意,我不想向SQS添加新消息(事件)。
我正在尝试做什么:
问题:
在AWS控制台中配置CloudWatch Events时,我没有找到添加事件源的任何选项,即我的SQS队列的URL或名称。
我不确定此用例是否有效,但请帮助我。
答案 0 :(得分:3)
编辑:AWS现在支持SQS作为触发Lambda函数的事件源。 See this blog post for more details
原始答案: 不支持SQS作为AWS Lambda函数的直接事件源。如果您的用例需要排队系统的属性,那么您可以使用“{cron-job”类型的Lambda函数runs on a schedule,从队列接收消息,并调用您的工作人员Lambda函数作为响应收到的每条消息。这种方法的问题在于,即使在不期望消息的时期,您也必须不断地轮询SQS,这会产生不必要的成本。
最简单的方法是使用SNS。创建主题,将事件发布到该主题,而不是将消息添加到SQS队列,并让Lambda函数订阅该SNS主题。每次向该SNS主题发布消息时,都会调用它。这里有一个关于这种方法的教程:
http://docs.aws.amazon.com/lambda/latest/dg/with-sns-example.html
答案 1 :(得分:2)
我建议改变你的方法。
您的应用程序应publish
向现有SNS主题发送消息。您的SQS和Lambda应该是subscribe
到此SNS主题。
Application -> publish -> SNS_TOPIC
-> SQS is notified
-> Lambda is notified