Как прочитать файл удаленного изображения из AWS лямбда и вернуть этот файл изображения в ответ - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу прочитать файл, который находится в удаленном месте.Допустим, https://abc/image.jpeg или https://abc/image.png. И мне нужно прочитать этот файл и отправить его обратно в ответ на лямбда-функцию.Одним из решений в NodeJS express является использование res.sendFile, но я не уверен, смогу ли я использовать его в лямбде и как это сделать.

Другой вариант - сначала скопировать изображение в корзину s3, а затем отправить его обратно.Любые предложения, которые лучше, чем вариант копирования S3?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Вы можете использовать опцию axios и API Gateway isBase64Encoded.

Сначала запросите изображение и конвертируйте его в base64, используя Buffer:

const imageBase64 = await axios.get(url, {responseType: 'arraybuffer'})
  .then(response => Buffer.from(response.data, 'binary').toString('base64'));

Далее верните его из лямбды через API-шлюз:

return {
  statusCode: 200,
  body: imageBase64,
  isBase64Encoded: true, //the most important part
}

Однако имейте в виду, что API-шлюз допускает до 10 мегабайт полезной нагрузки. Вы получите ошибку, если ваши изображения больше.

1 голос
/ 17 апреля 2019

С запросом и экспресс:

 var request = require("request");
 request.get('https://www.example.com/static/img/logo-light.png').pipe(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...