SQS作为Lambda的事件触发

问题描述

我正在尝试在无服务器架构中实现一项服务,该服务将采用基本上是JSON对象的“订单”,并且每X个订单都会触发Lambda函数来处理这些订单。我已经相当了解有关Amazon SQS的信息,可以将其作为此类选择,但是我想确认这是正确的方法

我可以使用SQS订阅发布订单的SNS供稿,然后让Lambda民意调查排队处理传入的订单吗?

谢谢。

解决方法

我做了一些实验,发现:

  • 如果使用SendMessageBatch()将多个消息发送到Amazon SQS
  • 然后,这些消息将作为多个条目作为传递给Records
  • 的一个AWS Lambda函数
  • 但是最多只能达到Lambda触发器中批量大小设置的最大记录数

因此,如果您的订购系统可以将消息作为批次发送到SQS,则Lambda函数将按批次处理消息(最大为“批次大小”)。但是,这将要求您在将邮件发送到Lambda之前,先在邮件系统中“缓冲”邮件,然后将邮件发送到Lambda ,如果有问题,则可能会丢失信息。>

通常最好立即处理订单,除非有特定原因希望使用批次。

如果您希望将订单“扇出”到多个系统中,则插入Amazon SNS很有用,但是如果您只有一个消息目的地,则没有必要。