将消息属性从lambda添加回SQS DLQ

时间:2018-08-17 04:08:31

标签: node.js amazon-web-services triggers aws-lambda amazon-sqs

我在配置了DLQ的SQS队列上有一个lambda触发器。

当我的lambda失败时,来自队列的原始消息将被重定向到DLQ。 现在,我想向此原始消息添加更多信息(例如为什么出现错误等)。我知道我无法修改原始消息,但是我看到一条消息可以具有其他消息属性RequestID, ErrorCode, ErrorMessage

如何从lambda函数(NodeJS)使用/设置它们?

1 个答案:

答案 0 :(得分:0)

尽管lambda不允许您以任何方式编辑已重试的消息,然后再将其发送到DLQ,但我们可以间接在消息中添加以下类似的attributes,以解释其原因失败。

enter image description here

这仅适用于特定情况,主要适用于asynchronous, non-stream-based invocations,这基本上意味着lambda的本机异步重试,或者SNS触发了工作,但基于SQS的重试则无效。另一个条件是,返回/引发的异常必须是节点lambda的错误或错误原型的扩展。

类似

exports.handler = async (event, context, cb) => {
   class CustomError extends Error {
       constructor(message) {
           super(message);
           this.name = "Some Lambda Error";
           this.message = message;
       }
   };
   let error = new CustomError("Something went wrong")
   cb(error);

   // or just simply

   cb(new Error("Something went wrong"));
};