我正在尝试从我的 AWS Lambda 获得1 * 1像素作为响应。
代码是这样的:
var imgHex = '47494638396101000100800000dbdfef00000021f90401000000002c00000000010001000002024401003b';
var imgBuffer = new Buffer(imgHex, 'hex');
context.succeed({header:"image/png",data:img});
我在 API网关中映射了响应标头。 但它没有给出1 * 1像素作为响应。
答案 0 :(得分:0)
在Integration Response中,将默认的application / json内容类型替换为image / png,并将映射模板设置为:
#set($result = $input.path('$'))
$result.data
使用curl -vvv https://yourendpoint.com/resource查看返回的标头。
答案 1 :(得分:0)
终于得到了理想的结果。
这里我使用了 bmp 格式的图片。并获得1 * 1像素图像
输出。
不要忘记在集成响应中设置 Content-Type 标头。
代码:
exports.handler = function(event, context) {
var imageHex = "\x42\x4d\x3c\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00"+
"\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00"+
"\x00\x00\x06\x00\x00\x00\x27\x00\x00\x00\x27\x00\x00\x00\x00\x00"+
"\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00";
context.succeed({responce:imageHex,header:"image/bmp"});
};

注意:强>
如果您正在使用新项目而您只想获得lambda函数,那么还有一个技巧。您可以将任何格式的图像(如png,bmp,gif等)作为转义的十六进制字符串。唯一的问题是aws网关修改你的字符串,有时你会得到这个图像
。
因此,只需使用 display:none CSS隐藏您的图片。
<img style="display:none" src ="http://path_to_your_code">
答案 2 :(得分:-1)
API Gateway目前不支持二进制数据。在从Lambda返回图像之前,您必须对图像进行base64编码,然后在客户端对其进行解码。有一个例子here。
Ritisha。