发送 SQS 消息时调用 Lambda

Invoke Lambda when an SQS message is sent

我想在每次发送 SQS 消息时调用 lambda。我已尝试使用以下模式设置 Cloudwatch 事件的规则:

{
  "source": [
    "aws.sqs"
  ]
}

不幸的是,lambda 从未被调用过。我已经确保 lambda 的角色具有 SQS 策略。 我怎样才能做到这一点?

CloudWatch Events 只能用于捕获来自 services that generate events 的事件。

SQS 不生成事件。

实现您所寻找的目标的最简单方法是创建一个 SNS 主题并将 SQS 队列和 Lambda 函数订阅到该主题。然后,不是直接将消息发送到队列,而是将消息发布到主题,SNS 将其放入队列并调用 Lambda。

http://docs.aws.amazon.com/sns/latest/dg/SNS_Scenarios.html#SNSFanoutScenario

AWS 最近引入了 SQS 作为 Lambda 的触发器,可以自动调用 SQS 中的消息。