如何在AWS CloudWatch中为AWS SQS添加偶数模式

时间:2017-06-28 12:50:28

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

每当新消息添加到SQS时,我想触发Lambda函数。 请注意,我不想向SQS添加新消息(事件)。

我正在尝试做什么:

  1. 我的应用会向SQS发送消息
  2. 每当新消息添加到队列CloudWatch事件时
  3. CloudWatch事件触发lambda
  4. 问题:

    在AWS控制台中配置CloudWatch Events时,我没有找到添加事件源的任何选项,即我的SQS队列的URL或名称。

    我不确定此用例是否有效,但请帮助我。

2 个答案:

答案 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