【问题标题】:AWS SQS "ECONNREFUSED" when sending message发送消息时AWS SQS“ECONNREFUSED”
【发布时间】:2018-12-23 23:03:21
【问题描述】:

尝试从 nodejs 向 AWS SQS 发送消息。我不断收到此特定错误

{ Error: connect ECONNREFUSED 127.0.0.1:443
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1161:14)
  message: 'connect ECONNREFUSED 127.0.0.1:443',
  errno: 'ECONNREFUSED',
  code: 'NetworkingError',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 443,
  region: 'us-east-1',
  hostname: '',
  retryable: true,
  time: 2018-07-16T11:26:04.672Z }

我已在我的应用程序中设置我的凭证,授予我的用户对 AWSSQSService 的完全访问权限。我可以获得有关队列本身、队列名称等的所有详细信息。我只是无法向队列发送消息。我下面的代码发送它

{

    let AWS = require('aws-sdk');
    AWS.config.update({region: constants.AWS.AWS_REGION});
    let sqs = new AWS.SQS({apiVersion: '2012-11-05'});
    let SQSQueueUrl = ' https://sqs.us-east-1.amazonaws.com/*queueName*';
    let params = {
        MessageBody: 'demo', /* required */
        QueueUrl: SQSQueueUrl, /* required */
    };

    sqs.sendMessage(params, function(err, data) {
        if(err) 
            console.log(err);
        else 
            console.log(data);
    });

}

【问题讨论】:

  • 似乎不允许从本地主机调用 AWS。
  • @DipeshParmar 我可以在哪里进行配置?

标签: node.js amazon-web-services amazon-sqs


【解决方案1】:

所以,我遇到了同样的错误,删除 SQSQueueUrl 开头的空格,它解决了错误。 所以去吧 让 SQSQueueUrl = 'https://sqs.us-east-1.amazonaws.com/queueName';

【讨论】:

    【解决方案2】:

    当您不配置访问密钥和秘密时会出现这种情况;您可以使用配置或通过环境在第 2 行指定它

    【讨论】:

    • 我已经在环境中指定了。就像我说的,我可以得到现有队列的所有细节,队列特定细节,虽然不能写
    • 我假设与 sqs.getQueueAttributes() 完全相同的 sn-p 是否有效?您的 SQSQueueUrl 中有一个空间
    • 哦,我的错。这实际上解决了它!谢谢。我正在运行 sqs.listQueues(),它不需要 SQS URL。
    • listQueues 不需要 queueUrl。我猜如果验证没有通过,他们会重定向到本地主机
    • 问题是由 URL 中的空格引起的。它与访问密钥或秘密无关。这些会导致访问冲突,而不是连接拒绝。
    猜你喜欢
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2017-04-27
    相关资源
    最近更新 更多