使用SQSEvent对象从另一个函数调用aws lambda函数

问题描述 投票:0回答:1

我有一个用Java编写的lambda函数,其句柄方法签名为:

public String handleRequest(SQSEvent sqsEvent, Context context){ //Todo }

我的lambda函数接受SQS事件作为请求并处理逻辑。

万一我的lambda函数以某种方式失败,我想通过手动提供所需的输入数据来再次触发它。我的方法是创建一个新的lambda函数,该函数将调用我的主要lambda函数。我将使用带有必需参数的APIGateway触发新的lambda。

我们如何创建自己的SQS事件对象,以将其作为请求主体传递给我的主要lambda? SQSEvent对象所需的参数和结构是什么?

谢谢!

amazon-web-services aws-lambda amazon-sqs
1个回答
0
投票

    默认情况下,Lambda重试失败的次数几次
  1. 如果SQS是您的事件源,则消息将保留在那里,直到您从代码中的队列中将其删除为止。如果您的函数失败并且没有删除该消息,则可见性超时到期后将对其进行备份]]

  2. 如果事件持续导致重复失败,将其反馈给功能将无济于事,并会导致无休止的循环

  3. 对于这种情况,建议设置DLQ,这样您就可以隔离出始终失败的消息。

现在,处理的性质可能使重试安全,而不必担心死循环,在这种情况下,您可以编写一个函数,该函数将从DLQ中提取消息并将其反馈回主队列,而无需调用直接“主要” lambda。但这就是说,我会非常仔细地查看以DLQ结尾的消息,它们可以表明您的代码中存在一些处理错误。

© www.soinside.com 2019 - 2024. All rights reserved.