发送sqs消息不会触发lambda函数吗?

时间:2019-05-21 14:42:14

标签: javascript amazon-web-services amazon-sqs

我不敢相信这不是那么简单。我有一个从我的sqs队列中触发的函数,其批处理大小为1。当我将消息发送到队列中时,即使通过aws控制台手动发送,该函数也不会触发。请帮忙

屏幕截图:

enter image description here

enter image description here

Code for function that is sending message: https://pastebin.com/d527rJ5n

更新的Cloudwatch日志:https://pastebin.com/9pZK8KM3

1 个答案:

答案 0 :(得分:0)

确保您的Lambda已配置为具有AWSLambdaBasicExecutionRole的IAM角色,否则它实际上将无法登录到CloudWatch Logs。这可能就是为什么您实际上看不到任何日志的原因-它正在执行Lambda,但是Lambda无法写入日志。

从提供的图像来看,您似乎已经正确配置了Lambda函数和SQS队列。我建议暂时简化Lambda函数。这是一个微不足道的功能,它将记录到CloudWatch Logs。这就是SQS触发的Lambda函数。

exports.handler = async (event) => {
    console.log(event);
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};

此代码将仅记录接收到的事件(您的SQS消息应位于body中)。将消息发送到SQS队列后不久,您可以在CloudWatch Logs中看到此消息。我只是在5分钟前用新的队列和新的Lambda函数进行了设置,所以效果很好。