接收错误:使用邮递员向 AWS S3 api 提交 POST 请求时连接 ECONNREFUSED

时间:2021-01-17 03:28:44

标签: node.js amazon-web-services amazon-s3 postman

当我尝试从 Postman(表单数据)向服务器上的 API 发送 POST 请求时收到以下错误,该 API 应该将文件上传到我的 AWS S3 存储桶:

Error: connect ECONNREFUSED 162.255.119.39:443

这是图片上传路由的代码

const express = require('express');

const router = express.Router();

const upload = require('../services/image-upload.js');

const singleUpload = upload.single('image');



router.post('/', (req, res) => {
  
  singleUpload(req, res, (err) => {
    
    return res.json({'imageUrl': req.file.location});
  });
  
});

module.exports = router; 

这是将 POST 请求发送到 AWS 的 API 代码:

const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');


aws.config.update({
  secretAccessKey: 'secret-access-key',
  accessKeyId: 'access-key-id',
  region: 'us-east-1'
});

const s3 = new aws.S3();
 
const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'my-bucket',
    metadata: function (req, file, cb) {
      cb(null, {fieldName:'Testing_meta_data!'});
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString());
    }
  })
});

module.exports = upload;

起初我以为是因为我阻止了公共访问我的存储桶,因为在我解除限制后,请求通过了。但情况似乎不再如此,因为我仍然收到错误消息。

作为参考,我在一个实际的托管服务器上,我没有使用本地主机。

2 个答案:

答案 0 :(得分:0)

基于评论。

问题是邮递员试图使用 HTTPS(端口 443)进行连接,而应用程序不支持该连接。端口 80 (HTTP) 上的连接按预期工作。

答案 1 :(得分:0)

econnrefused 意味着没有服务在端口中运行,https 默认端口是 443。如果您的系统设置为使用任何其他端口进行 https,则在 url 中指定该端口

https://ip:port/resource

https://162.255.119.39:8443/something

如果您使用的是主机名,则主机名:端口

https://www.reqres.in:443/api/users?page=1

如果您的系统不使用 https,则将其从 url 中删除:

http://162.255.119.39:8443/something

这里的 www.requres.in 是主机名