我在配置了DLQ的SQS队列上有一个lambda触发器。
当我的lambda失败时,来自队列的原始消息将被重定向到DLQ。
现在,我想向此原始消息添加更多信息(例如为什么出现错误等)。我知道我无法修改原始消息,但是我看到一条消息可以具有其他消息属性RequestID, ErrorCode, ErrorMessage
。
如何从lambda函数(NodeJS)使用/设置它们?
答案 0 :(得分:0)
尽管lambda不允许您以任何方式编辑已重试的消息,然后再将其发送到DLQ,但我们可以间接在消息中添加以下类似的attributes
,以解释其原因失败。
这仅适用于特定情况,主要适用于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"));
};