【问题标题】:AWS Event Bridge Lambda invocationAWS Eventbridge Lambda 调用
【发布时间】:2021-08-21 13:17:45
【问题描述】:

我已将 lambda 函数配置为 EventBridge 规则目标,并已在 EventBridge 规则上配置了死信队列以捕获异常。 现在,如果 lambda 函数失败,事件桥不会将该失败识别为错误。 由于对 Lambda 的 EventBridge 调用是异步的,因此对于 EventBridge 而言,到达 lambda 以将事件视为成功就足够了,但是一旦 lambda 失败,我就无法跟踪和重试事件。 任何人都知道一种使 EventBridge 到 Lamdba 请求同步的方法,或者如果 Lambda 代码在调用后失败时能够重试事件的另一种方法?

【问题讨论】:

  • 你修复了吗?我刚刚遇到了同样的问题。

标签: aws-lambda aws-event-bridge


【解决方案1】:

一种选择是使 SQS 成为规则目标并使用 SQS 事件来触发 lambda。发生故障时,lambda 不会标记事件已完成,以便将事件保留在 SQS 中。重试将在配置的时间段后自动发生(SQS 配置)。您也可以在保留时间到期后配置死信队列

【讨论】:

    【解决方案2】:

    AWS 为此提供了一个专门的文档页面,其中针对异步调用说明了以下内容:

    Lambda 重试函数错误两次。如果函数没有足够的容量来处理所有传入的请求,事件可能会在队列中等待数小时或数天才能发送到函数。您可以在函数上配置死信队列以捕获未成功处理的事件。有关详细信息,请参阅异步调用。

    这意味着只要您的 Lambda 函数处理函数确实返回错误,AWS Lambda 服务就应该重新尝试再次运行您的 Lambda。

    因此,您可能不需要 EventBridge 来重试您的活动。

    见:Error handling and automatic retries in AWS Lambda

    【讨论】:

    • 您是对的,但 Event Bridge 尝试重试 24 小时,而 Lambda 仅重试 2 次。如果 Lambda 触发了两次都不可用的服务,它将不再重试
    • 你有想过这个吗? @marcob88
    猜你喜欢
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2019-07-26
    • 2016-02-04
    • 2023-01-21
    • 1970-01-01
    相关资源
    最近更新 更多