Приложение загрузки узла AWS S3 работает локально, но не работает на heroku - PullRequest
0 голосов
/ 23 января 2019

У меня есть очень простое приложение nodejs (см. Код ниже) для прямой загрузки файлов в мое хранилище S3, которое ранее было размещено на SO.Это прекрасно работает на моей локальной машине (и из моего рабочего пространства Cloud9), предполагая, что мой S3 bucket и т. Д. Настроен правильно, но когда я развернул его на heroku, я получаю Внутреннюю ошибку сервера.Ошибка в журнале: Ошибка: подключить ECONNREFUSED 169.254.169.254:80 в TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1117: 14).Загрузка файла выглядит так, как будто он начинается, поскольку я вижу в своем браузере, какой процент загружен, но когда он достигает 100%, я получаю сообщение об ошибке.Мои учетные данные aws хранятся в переменных окружения на heroku и являются тем, что я использую локально.Я понимаю, что heroku предлагает сделать это с помощью XMLHttp, но я предпочитаю использовать этот код, если это возможно.Что-то не так с герою, которого мне не хватает, чтобы запрос не был выполнен?Большое спасибо заранее.

var express = require('express'),
aws = require('aws-sdk'),
bodyParser = require('body-parser'),
multer = require('multer'),
multerS3 = require('multer-s3');


aws.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: 'us-east-2',
});

var app = express(),

s3 = new aws.S3();

app.use(bodyParser.json());

var upload = multer({
storage: multerS3({
s3: s3,
bucket: process.env.S3_BUCKET,
key: function (req, file, cb) {
cb(null, file.originalname); 
}
})
});

app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});

app.post('/upload', upload.array('upl',1), function (req, res, next) {
res.send("Uploaded!");
});

app.listen(process.env.PORT, process.env.IP, function(){
console.log("Server has started");
});`

И форма просто:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="/upload">
<p>
    <input type="text" name="title" placeholder="optional title"/>
</p>
<p>
    <input type="file" name="upl"/>
</p>
<p>
    <input type="submit"/>
</p>
</form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...