我不敢相信这不是那么简单。我有一个从我的sqs队列中触发的函数,其批处理大小为1。当我将消息发送到队列中时,即使通过aws控制台手动发送,该函数也不会触发。请帮忙
屏幕截图:
Code for function that is sending message: https://pastebin.com/d527rJ5n
更新的Cloudwatch日志:https://pastebin.com/9pZK8KM3
答案 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函数进行了设置,所以效果很好。