#node.js #amazon-web-services #amazon-s3
Вопрос:
После отправки изображения для загрузки в корзину s3 я получаю эту ошибку «Ошибка: подключение EHOSTUNREACH 169.254.169.254:80 в TCPConnectWrap.afterConnect [как завершенное] (узел:сеть:1133:16)». Это было до того, как я получил ошибку учетных данных, затем я что-то изменил, и это начало появляться. Я также создал новый проект с тем же точным кодом и получал ту же ошибку, что и выше.
//s3-upload.js
const aws = require('aws-sdk');
const express = require('express');
const multer = require('multer');
const multerS3 = require('multer-s3');
const uuid = require('uuid').v4;
const path = require('path');
const app = express();
const s3 = new aws.S3({ apiVersion: '2006-03-01' });
// Needs AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
const upload = multer({
storage: multerS3({
s3,
bucket: 'sample-test-pdf-upload',
metadata: (req, file, cb) => {
cb(null, { fieldName: file.fieldname });
},
key: (req, file, cb) => {
const ext = path.extname(file.originalname);
cb(null, `${uuid()}${ext}`);
}
})
});
app.use(express.static('public'))
app.post('/upload', upload.array('avatar'), (req, res) => {
return res.json({ status: 'OK', uploaded: req.files.length });
});
app.listen(5050, () => console.log('App is listening...'))
//server-upload.js
const express = require('express');
const multer = require('multer');
const path = require('path');
const uuid = require('uuid').v4;
const app = express();
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads')
},
filename: (req, file, cb) => {
const { originalname } = file;
// or
// uuid, or fieldname
cb(null, originalname);
}
})
const upload = multer({ storage }); // or simply { dest: 'uploads/' }
app.use(express.static('public'))
app.post('/upload', upload.array('avatar'), (req, res) => {
return res.json({ status: 'OK', uploaded: req.files.length });
});
app.listen(5050, () => console.log('App is listening...'))
//index.html
<h1>File Upload</h1>
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="avatar">
<button>Submit</button>
</form>
Комментарии:
1. Вы проверили конечную точку S3?
2. Где вы запускаете этот код? Это на экземпляре Amazon EC2? Есть ли у него роль IAM, назначенная экземпляру? Ссылка на
169.254.169.254:80
предполагает, что у него возникли проблемы с доступом к службе метаданных EC2.3. Я использую Amazon S3. У меня действительно есть запущенная роль IAM. Когда я жестко закодировал в терминале область корзины s3, именно тогда начала появляться ошибка. Я запускаю код в коде Visual Studio.
4. я получаю ту же ошибку, вам удалось найти решение?