【问题标题】:SNS message triggers invocation to Lambda function multiple times (there are no errors/timeouts in processing)SNS 消息多次触发对 Lambda 函数的调用(处理过程中没有错误/超时)
【发布时间】:2018-09-29 11:14:31
【问题描述】:

我注意到 AWS Lambda 的一种行为,其中 SNS 消息在相同的确切时间戳上多次触发对 Lambda 函数(订阅 SNS 主题)的调用,相隔几毫秒(没有错误/超时)处理)。

将并发更新为“保留并发” => 1, https://jmp.sh/LqpWOPI 可防止这种情况发生,但这样做会影响此 Async Lambda 函数的可扩展性。

对为什么会发生这种情况以及如何处理以避免重复处理有什么想法吗?

【问题讨论】:

  • 确认您没有多次订阅该主题的 Lambda 函数?验证进入 Lambda 调用的 SNS 消息是否完全相同?

标签: aws-lambda amazon-sns


【解决方案1】:

根据Lambda - Invoke AWS documentation,异步触发的 Lambda 函数保证至少被调用一次

如果您使用事件(异步)调用选项,该函数将至少被调用一次以响应事件,并且该函数必须是幂等的才能处理此事件。

这类似于 SQS 至少一次传递消息,因为您可以保证收到一次,但也可以再收到几次。

如果您不想将并发限制减少到 1,则必须使您的 Lambda 函数具有幂等性,以便它可以优雅地处理多个调用。

【讨论】:

    猜你喜欢
    • 2015-10-12
    • 1970-01-01
    • 2021-09-12
    • 2023-03-18
    • 2021-09-14
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多