JS AWS SQS 不返回消息

JS AWS SQS not returning messages

我尝试从 SQS 队列(不是 FIFO)中提取消息,但它不起作用。我有一个 lambda 在 DynamoDB 中写入值,触发另一个 Lambda 创建 SQS 消息。然后我创建了一个具有 ReceiveMessage、GetQueueAttributes 和 DeleteMessage 权限的 Lambda 函数,并在 SQS 中添加了一个 "Trigger for Lambda Functions" 以授予对我的新 lambda 函数的权限。每当将条目添加到数据库时,都会触发我的最后一个 lambda 函数,因此触发器似乎可以正常工作。当我尝试使用 sqs.receivemessage(...) 获取条目时,它会等到 WaitTimeSeconds 时间段过去,然后我收到这样的答案:

{
"ResponseMetadata": {
    "RequestId": "b1e34ce3-9003-5c00-a3d8-1ab75ba132b8"
    }
}

很遗憾,没有添加消息对象。我还尝试将此调用包装在一个循环中,按照其他页面上的建议连续多次尝试,但不幸的是,他一直运行到超时为止,我没有收到消息。当 lambda 为 运行 时,我可以在 "Messages in the flight" 列表中看到消息。

我尝试修改超时、我调用函数的方式并在谷歌上搜索了很多,但不幸的是我仍然没有收到消息。

有什么想法吗?

这是我的代码:

'use strict';
var AWS = require("aws-sdk");
AWS.config.update({region: 'eu-central-1'});
var sqs = new AWS.SQS({apiVersion: '2012-11-05'});
exports.handler =(event, context, callback) => {
var params = {
  QueueUrl: 'https://sqs.eu-central-1.amazonaws.com/476423085846/email', 
  AttributeNames: ['All'],
  MaxNumberOfMessages: 5,
  MessageAttributeNames: [
    'email',
    'hash'
  ],
  WaitTimeSeconds: 10
};
sqs.receiveMessage(params, function(err, data) {
  if (err)
  {
      console.log(err, err.stack); // an error occurred
  }
  else
  {
      console.info('DATA\n'+JSON.stringify(data));
  }
}
}

我的 SQS 设置:

默认可见性超时:5 分钟, 消息保留期:4天, 最大消息大小:256kb(我的消息应该小得多), 交货延迟:0秒, 接收消息等待时间:10秒

提前致谢:)

问候克里斯蒂安

通过 AWS Lambda SQS 集成,AWS 会为您处理轮询 SQS 队列。 SQS 消息将位于传递给 Lambda 函数调用的 event 对象中。在这种情况下,您不应该直接调用 receiveMessage