我正在使用Lambda函数,希望可以返回一些结果。因此,如果我发送了错误的参数,则它将失败,例如在函数中间。
如果在DLQ中发送任何错误,是否可以处理我的方法,在消息中打印错误,然后重试,然后删除消息?
TypeError:commandArray不可迭代
答案 0 :(得分:1)
AWS Lambda函数在异步调用上具有重试机制,如果AWS Lambda无法完全处理该事件,它将自动重试两次调用,两次重试之间会有延迟。
重试后,AWS Lambda将ERROR消息详细信息发送到指定的Amazon SQS队列或Amazon SNS主题。
https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html
由于任何原因(异常/超时),错误消息均不包含失败的Lambda函数名称。要在错误消息中添加lambda函数名称,您可以考虑两个主意。
解决方案-1
解决方案-2
惯例:SNS主题名称中包含lambda函数名称
答案 1 :(得分:0)
Lambda可以重试并将故障注入死信队列。
在丢弃事件之前,将重试两次任何异步调用的Lambda函数。如果重试失败,但您不确定原因,请使用死信队列(DLQ)将未处理的事件定向到Amazon SQS队列或Amazon SNS主题以分析失败。
然后,您可以在SNS主题或SQS队列上具有Lambda函数,该Lambda函数可以响应错误并以您希望的方式做出反应。
有关更多信息,请参见:https://docs.aws.amazon.com/lambda/latest/dg/dlq.html