我如何在 Amazon API Gateway - Lambda 中使用原始缓冲区而不是 toString 进行响应

How do I respond with a raw buffer instead of toString in Amazon API Gateway - Lambda

到目前为止,这是我的代码 - 我只想 return 将图像缓冲区作为原始数据,而不是将其转换为数组。

我在 http 200 响应的集成响应中将内容类型设置为 image/jpeg,但它是一个损坏的图像,因为我认为它是缓冲区的 toString 而不是原始数据。

exports.handler = function(event, context) {

    var srcKey = event.key || 'e_1.png';
    var max_size = event.size || 100;


    // Download the image from S3
    s3.getObject({
        Bucket: srcBucket,
        Key: srcKey
    }, function (err, response) {
        if (err)
            return context.fail('unable to download image ' + err);
        var original = gm(response.Body);
        original.size(function (err, size) {
            if (err)
                return context.fail('unable to download image ' + err);

            resize_photo(size, max_size, original, function (err, photo) {
                //res.setHeader('Content-Type', 'image/jpeg');
                context.succeed(photo);
            });
        });
    });

};

这似乎不是 LambdaAPI Gateway 的设计目的。考虑到管道的状态,可能不支持二进制输出。尝试做其他事情 - 将图像存储回 S3 并将 HTTP Redirect 发送回新的 S3 URI。让客户端处理它,而不是试图让 API Gateway 管道处理二进制响应。