Скачать файл с Amazon S3 с помощью узла - PullRequest
0 голосов
/ 15 мая 2018

У меня есть приложение стека MEAN, и я пытаюсь позволить пользователям загружать файлы, которые хранятся с помощью Amazon S3. Я генерирую предварительно назначенный URL-адрес для пользователя, но при переходе по этому URL-адресу в Chrome появляется следующее сообщение об ошибке

The request signature we calculated does not match the signature you provided. Check your key and signing method.

Когда я запрашиваю приложение узла из Почтальона, оно генерирует якобы заранее заданный URL с вопросами, но, очевидно, это не работает. Вот мой соответствующий код:

var express=require('express');
var S3 = require('aws-sdk/clients/s3');
var router = express.Router();

router.get('/api/downloadURL', (req,res,next) => {
  const s3 = new S3({
    apiVersion: '2006-03-01',
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    signatureVersion: 'v4',
    region: 'us-east-2' // region of my bucket and what it says is expected
  });
  var s3params = {'Bucket': process.env.S3_BUCKET_NAME, 'Key': 'folder1/file.pdf'}
  s3.getSignedUrl('getObject', s3params, function(err, url) {
    if (err) res.json(err);
    res.json(url);
  });
});

При запросе почтальона я получаю URL следующего формата

https://bucketname.s3.us -east-2.amazonaws.com / папка1 / file.pdf? X-Amz-Алгоритм = AWS4-HMAC-SHA256 & X-Amz-удостоверени = ACCESS_KEY_HERE% 2F20180515% 2Fus-восток-2% 2Fs3% 2Faws4_request & X-Amz-Date = 20180515T174606Z & X-Amz-Истекает = 900 & X-Amz-Signature = 89f6b9a6be699fc1e3268bceaf6585d34ed11e077126ba7c634b769f1add4475 & X-Amz-SignedHeaders = хост

...