Lambda函数不向SQS发送消息

时间:2020-01-29 12:39:37

标签: node.js aws-lambda

我需要一个“稍后再检查”功能,在传统的Web应用程序中,例如可以通过使用基于Redis的队列来实现,每个队列都带有时间戳(在PHP世界中,Laravel具有此功能)。框)。

我在Lambda中对此的解决方案是将消息重新发送到提供该功能的同一队列,但这一次有所延迟。如此反复,直到我们知道是时候再次检查该东西(API,状态等等)了。

这是我的全部功能:

exports.handler = async (event) => {
    const AWS = require('aws-sdk');
    AWS.config.update({region: 'us-east-2' });
    let sqs = new AWS.SQS({apiVersion: '2012-11-05'});

    let messageBody = event.Records[0].body;
    let details = JSON.parse(messageBody);

    console.log("Received event. Count is: " + details.counter);

    details.counter += 1;
    messageBody = JSON.stringify(details);

    await sqs.sendMessage({
        DelaySeconds: 10,
        MessageBody: messageBody,
        QueueUrl: 'https://sqs.us-east-2.amazonaws.com/123456/TestRequeueFeature'
    });
};

在上面的测试中,调用功能的是名为TestRequeueFeature的队列。快要结束时,我正在发送一条延迟十秒的消息。但是,此消息从未出现(我的意思是,即使已经几分钟,也没有再次调用该函数)。在CloudWatch中,此功能只有一个日志,这是我使用测试事件启动它的时间。除此之外,该消息似乎已经消失。

该如何诊断?这实际上是在一个真实的项目中发生的,所以我想我将创建一个隔离的测试,看看它如何进行。

0 个答案:

没有答案