Попытка доступа к корзине s3 Ошибка: подключение EHOSTUNREACH 169.254.169.254:80 в TCPConnectWrap.afterConnect [как завершенное] (узел:сеть:1133:16)

#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. я получаю ту же ошибку, вам удалось найти решение?