订阅的 SNS 消息很大时不调用 AWS Lambda

AWS Lambda not invoked when subscribed SNS message is large

我有一个 AWS lambda 函数,它接收大量电子邮件地址并将它们提交给 SES 进行发送。该函数通过 SNS 订阅调用。当消息的电子邮件数组大小较小时,它可以很好地工作,但是当消息的电子邮件数组大小较大时,不会调用 lambda 函数。没有日志记录发生....

我已确认负载低于所需的 SNS 消息大小,并且我已通过我的电子邮件订阅了 SNS 主题...这有效。我收到了预期消息负载的电子邮件。

知道为什么这会默默地失败吗?有关如何解决此问题的建议?

为了后代:

为 SNS 主题配置 'Delivery Status'。然后它将 success/failures 记录到 CloudWatch。

期待看到:

167542 字节有效负载对于事件调用类型来说太大(限制为 131072 字节)

所以...即使 SNS 可以发送更大的有效负载,但这并不意味着可以使用此大小的有效负载调用 lambda。呸!

一些解决方法:

1) Post 数据到 S3 存储桶。让 Lambda 函数侦听该存储桶上的 Object CREATE。

2) Post 将数据发送到 S3,并发布一个 SNS 事件,其中仅包含可以在 S3 中找到数据的存储桶和密钥。让 Lambda 订阅 SNS 主题。

在任何一种情况下,您都将最终从 Lambda 函数内的 S3 存储桶中获取数据。现在你没有大小限制。 :-)