Генерация разных подписанных URL с помощью al oop (S3) - PullRequest
0 голосов
/ 23 января 2020

У меня возникла проблема при попытке создать список URL-адресов для многоэлементной загрузки на S3 с использованием lamba, я пытаюсь сгенерировать URL-адреса, используя al oop в функции lambda, но она генерирует только 1 и продолжает возвращать этот адрес во всех l oop, поэтому в конце у меня есть массив URL с повторяющимся идентичным URL, этого не произойдет, если я вызову метод generateSignedUrl () несколько раз в коде, я имею в виду, если вместо вызова for для l oop до l oop 3 раза, я использую метод generateSignedUrl () 3 раза, когда он фактически генерирует 3 разных URL, в то время как l oop генерирует 1 повтор 3 раза.

async function getSignedUrl(key){
    return new Promise((resolve,reject) => {
      let params = { Bucket: bucketName, Key: key };
      s3.getSignedUrl('getObject', params, (err, url) => {
        if (err) reject(err)
        resolve(url);
      })
});
}

async function process(items) {
  for (let item of items) {
    const signedUrl = await getSignedUrl(item.fileName);
    item.url = signedUrl;
  }
  return items;
}


process(result).then(res => {
  console.log(res);
});

1 Ответ

0 голосов
/ 23 января 2020

Внутри вашего для l oop вы объявляете SignUrl как const. Вот почему значение signatureUrl не изменяется для элементов в for l oop и почему оно работает, когда вы явно вызываете метод getSignedURL .

Попробуйте изменить SignUrl на переменную.

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