Невозможно получить файл из S3 в node js - PullRequest
0 голосов
/ 02 августа 2020

Я сохранил видеофайлы в корзине S3, и теперь я хочу показать файлы клиентам через API. Вот мой код для него

app.get('/vid', async(req, res) => {

    AWS.config.update({
        accessKeyId: config.awsAccessKey,
        secretAccessKey: config.awsSecretKey,
        region: "ap-south-1"
    });

    let s3 = new AWS.S3();


    var p = req.query.p

    res.attachment(p);

    var options = {
        Bucket: BUCKET_NAME,
        Key: p,

    };

    console.log(p, "name")
    try {
        await s3.getObject(options).
        createReadStream().pipe(res);
    } catch (e) {
        console.log(e)
    }


})

Это результат, который я получаю, когда этот файл доступен в корзине S3 -

vid_kdc5stoqnrIjEkL9M.mp4 name

NoSuchKey: Указанный ключ не существует.

Файл в корзине S3

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Наличие определенных символов в имени сегмента приводит к этой ошибке.

В вашем случае это подчеркивание. Попробуйте переименовать файл.

См. Также эту Документы о требованиях к именованию сегментов S3

Пример из Документов:

Следующее примеры названий сегментов недействительны:

  • aws_example_bucket (содержит символы подчеркивания)
  • AwsExampleBucket (содержит буквы верхнего регистра)
  • aws -example-bucket- (заканчивается на дефис)
0 голосов
/ 02 августа 2020

Вероятно, это вызвано тем, что в функцию передаются недопустимые параметры.

Чтобы проверить недопустимые параметры, вы должны дважды проверить строки, которые передаются. Для объекта проверьте следующее:

  • Проверьте значение p, убедитесь, что это точно такое же имя, что и полный ключ объекта.
  • Убедитесь, что используется правильный BUCKET_NAME
  • Без следа символов (например, /)
  • Выполните необходимое декодирование перед передачей параметров.

Если есть сомнения, используйте ведение журнала для вывода точного значения, а также для проверки функции попробуйте протестировать с жестко закодированными значениями для проверки вы действительно можете получить объекты.

Для получения дополнительной информации см. Как я могу устранить ошибку 404 «NoSuchKey» на странице Amazon S3? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...