首页 > 解决方案 > 处理 SQS 事件的函数的预期响应是什么?

问题描述

我有一个使用 node12 运行时用 javascript 编写的 AWS lambda 函数。如果我无法处理 sqs 事件中给出的消息,我如何告诉队列我无法处理消息并将消息留在队列中?

它是否需要带有状态码的 http 响应,例如200成功或500失败,或者 lambda 是否需要抛出错误以表明它没有处理。

我在 sqs 事件处理函数中找不到预期的响应。处理程序期望返回什么?

async function handler(event) {
    try {
        const body = event.Records[0].body;
        // do some process 
        // what do I return if successful
    } catch (err) {
        // what do I return if my process wasn't successful
    }
}

标签: node.jserror-handlingaws-lambdaresponseamazon-sqs

解决方案


这个简单的答案是你抛出一个错误,它会认为它失败了。当然,然后 lambda 重试逻辑开始起作用,因此您也需要了解这一点。这个页面讨论了 lambda 中的错误处理,并对不同的场景进行了很好的细分。


推荐阅读