如何在Node.js中使用带有API网关的AWS Lambda发送二进制响应?

tki*_*nom 9 amazon-web-services node.js aws-lambda aws-api-gateway

我正在尝试设置一个Lambda和API网关,它将执行s3.getObject()并输出二进制图像作为响应.最终我想从s3中提取图像并在运行中调整大小而不是将它们保存回s3,但是我似乎无法获得输出的简单图像.

我的简单lambda看起来像这样:

'use strict';

const http = require('http');    

exports.handler = (event, context, callback) => {
    http.get('http://i.stack.imgur.com/PIFN0.jpg', function(res) {
        var body = '';
        res.on('data', function(chunk) {
            // Agregates chunks
            body += chunk;
        });
        res.on('end', function() {
            callback(null, body);
        });
    });    
};
Run Code Online (Sandbox Code Playgroud)

我已经设置了API网关二进制支持以允许'image/jpeg',并且我尝试在方法响应和集成响应中设置内容类型.

方法响应: 在此输入图像描述

整合响应: 在此输入图像描述

tki*_*nom 5

我在这里找到了答案:AWS Gateway API base64Decode 生成乱码二进制?

当您在创建方法屏幕上选择 Lambda 函数时,它需要一个 CLI 命令来更改未在 AWS 控制台中公开的设置。