当前位置: 首页 > 知识库问答 >
问题:

将lambda中的消息属性添加回SQS DLQ

元望
2023-03-14

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

当我的lambda失败时,来自队列的原始消息将被重定向到DLQ。现在我想添加更多的信息到这个原始的消息(如为什么有一个错误等)。我知道我不能修改原始消息,但我看到消息可以有额外的消息属性请求ID,错误代码,错误消息

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

共有1个答案

公良扬
2023-03-14

尽管lambda不允许您在重试的消息发送到DLQ之前以任何方式编辑它们,但我们可以间接地向消息中添加一些属性,如下所示,以解释失败的原因。

这仅适用于特定情况,主要适用于异步、非基于流的调用,这基本上意味着lambda的本机异步重试或SNS触发器工作,但基于SQS的重试除外,不要这样做。另一个条件是,返回/抛出的异常必须是错误或节点lambdas的错误原型的扩展。

差不多

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"));
};

 类似资料:
  • 我有一个基本的SQS队列,它使用redrive策略触发Lambda,在5次重试后将失败的消息发送到DLQ。我读到Lambda应该在消息中添加关于错误的消息属性 除了在DLQ中查看消息时,我没有看到任何来自Lambda的ErrorCode、ErrorMessage属性外,其他一切都正常工作。有人用这个吗?

  • AWS、SNS和SQS的文档有关于消息属性的部分。但是没有解释当队列被订阅到SNS主题时如何具有SQS消息属性。 是否有一种方法可以配置AWS SNS,将特定的消息属性添加到通过订阅发送的SQS消息中?

  • 我有两个文件。一个位于内部,另一个位于我的.jar文件外部的一个名为的目录中。 据我所知,我的是从加载的。虽然在应用程序工作时,不使用其中的值。它们来自我的项目文件夹中的默认。我做错什么了吗?

  • 问题内容: 如何在jQuery中的特定HTML标签中添加属性? 例如,像下面这样的简单HTML: 然后添加一个属性disable =“ true”,如下所示: 问题答案: 您可以像这样添加属性: 但是,对于和这样的DOM属性,正确的方法(从JQuery 1.6开始)是使用。

  • 我想在gradle.properties文件中添加ndk.abifilters属性。现在我有了这栋楼里的房子。这是我建筑的一部分 这是我的gradle.properties文件的一部分

  • 我通过Primefaces AJAX调用从SQL操作中获得了一些未捕获异常。有趣的是,这个未捕获的异常在Firebug的JavaScript secion上显示为error: 并在server.log上使用所有stacktrace和所有内容。 但如果不将用户重定向到一个单独的错误页面(并丢失所有输入数据),我就无法引起用户的注意。 正确的处理方法是创建验证器,我会这样做,但总有可能出现没有意识到的