我注意到AWS Lambda的一种行为,其中SNS消息在相同的确切时间戳上相隔数毫秒(不存在错误/超时)触发一次触发Lambda函数(已订阅SNS主题)的调用。处理中。)
将并发更新为“保留并发” => 1,可以防止这种情况的发生,但是这样做会影响此异步Lambda函数的可伸缩性。
是否想到了为什么会发生这种情况以及如何处理以避免重复处理?
答案 0 :(得分:0)
根据Lambda - Invoke AWS documentation,保证异步调用的Lambda函数至少要被调用一次。
如果使用“事件(异步)调用”选项,则该函数将至少响应一次事件而被调用一次,并且该函数必须是幂等的。
这类似于SQS至少一次传递消息,因为您可以保证一次获得它,但也可能获得另外几次。
如果您不想将并发限制降低到1,则必须使Lambda函数成为幂等,以便它可以优雅地处理多个调用。