【问题标题】:Sqs is not sending message also no error showsSqs 没有发送消息也没有错误显示
【发布时间】:2020-11-12 00:41:03
【问题描述】:

向 sqs 发送消息不起作用,我没有看到任何错误,但消息没有发送到 SQS。 我正在尝试使用本地 lambda 运行它。

var AWS = require('aws-sdk');

AWS.config.update({
    accessKeyId: process.env.DEV_AWS_ACCESS_KEY,
    secretAccessKey: process.env.DEV_AWS_SECRET_KEY,
    region: process.env.DEV_AWS_REGION
  });

var sqs = new AWS.SQS({apiVersion: '2012-11-05'});


async function pushToSQS(executed_report_id, report_id, filebatchKey) {

    try {
        const data = {
            executed: "YES",
            id: r_id,
            batch_key: key
        }

        var params = {
            MessageBody: JSON.stringify({data}),
            QueueUrl: process.env.DEV_AWS_QUEUE_URL,
            DelaySeconds: 0
        };


       await sqs.sendMessage(params, function(err, data) {
  

            if (err) {
                console.log('SQS Error', err)
                throw err
                return
            }
        console.log("Successfully Sent the data message to SQS", data.MessageId);
        });


    } catch (error) {

        console.log(error);
        throw error;
    }
}

当我尝试构建业务逻辑时,我正在从另一个函数调用此函数。它不会直接从index.js(主处理程序)调用

为什么它不工作,我的意思是它必须工作,不会引发错误。我也在尝试使用local-lambda在本地运行 lambda

注意 - AWS 密钥和秘密拥有对 SQS 的完全访问权限。

【问题讨论】:

    标签: javascript node.js amazon-web-services aws-lambda amazon-sqs


    【解决方案1】:

    sqs.sendMessage 的调用不会启动操作。它也不返回一个承诺,而是返回一个AWS.Request 对象,所以await 没有做任何事情。

    为了真正启动异步操作并获得承诺,你的电话应该是sqs.sendMessage(params).promise()

    aws-sdk 中都是如此,而不仅仅是在 SQS API 中。

    API 文档: AWS.SQS.sendMessage() AWS.Request.promise()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多