Получаете код ответа 500 на предварительно заданный URL-запрос? - PullRequest
0 голосов
/ 21 декабря 2018

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

reports.get('/xxx', async (req, res) => {

  var AWS = require('aws-sdk');

  var s3 = new AWS.S3();

  var params = { 
    Bucket: config.xxx,
    Key: 'xxx/xxx.json',
    Expires: 60 * 5
  }

  try {
    s3.getSignedUrl(params, function (err, url) {
      if(err)throw err;
      console.log(url)
      res.json(url);
    });
  }catch (err) {
    res.status(500).send(err.toString());
  }
});

Учетные данные по умолчанию соответствуют тем, которые хранятся на моем компьютеречерез aws configure и работать для всех других моих запросов API к той же корзине S3.

Ошибка, возвращаемая во внешнем интерфейсе, говорит: Uncaught (in promise) SyntaxError: Unexpected token T in JSON at position 0.

Это моя реализация интерфейса:

fetch(config.api.urlFor('xxx'))
  .then((response) => response.json())
  .then((url) => {

    console.log(url);
});

Есть идеи, что я делаю неправильно?

1 Ответ

0 голосов
/ 21 декабря 2018

getSignedUrl объявлено так getSignedUrl(operation, params, callback) ⇒ String?, но вы пропустили operation, попробуйте мою функцию ниже

// Require s3 in global scope
const S3 = require('aws-sdk/clients/s3');

/**
 * @param {String} bucketName
 * @param {String} objectKey
 * @param {Number} expiration
 * @return {Promise}
 */
function getSignedUrl(bucketName, objectKey, expiration) {
  return new Promise((resolve, reject) => {
    const s3 = new S3(); // <= add options if needed

    s3.getSignedUrl('getObject', { Bucket: bucketName, Key: objectKey, Expires: expiration }, (err, url) => {
      if (err) {
        return reject(err);
      }

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