Я пытаюсь написать свой собственный сервер изменения размера изображения (потому что миру определенно нужен другой), основываясь на примере, найденном на https://aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/
Думал, что я бы дал Коа пока я был на нем, но мне не повезло с использованием Koa вместо стандартной http-библиотеки Node:
require('dotenv').config()
const Koa = require('koa');
const app = new Koa();
const AWS = require('aws-sdk');
const s3 = new AWS.S3({
apiVersion: '2006-03-01',
params: {
Bucket: process.env.STORAGE_BUCKET_NAME
}
});
app.use(async ctx => {
const image = await s3.getObject(
{Key: 'media/uploads/ad901924db/lint.jpg'},
err => { if (err) return err }
).promise()
ctx.body=image.Body;
ctx.type=".jpg";
});
Я также пробовал несколько вариантов потоковой передачи:
const imageStream = await s3.getObject(
{Key: 'media/uploads/ad901924db/lint.jpg'},
err => { if (err) return err }
).createReadStream()
ctx.body=imageStream.pipe(PassThrough());
ctx.type=".jpg";
Мне не удалось получить ничего, кроме зашифрованного изображения или следующего сообщения об ошибке: The image “http://localhost:3000/” cannot be displayed because it contains errors.
Вот прямой URL-адрес изображения, которое я пытаюсь использовать, пока не получу эту работу динамически: http://xiwcx-media.s3.amazonaws.com/media/uploads/ad901924db/lint.jpg
Итак, я что-то в корне неправильно понимаю о Koa или s3? Мой образ просто поврежден, я не понимаю. Любая помощь приветствуется. Дайте мне знать, могу ли я предоставить дополнительную информацию.