如何在 Node.js 中使用带有 API 网关的 AWS Lambda 发送二进制响应? [复制]
Posted
技术标签:
【中文标题】如何在 Node.js 中使用带有 API 网关的 AWS Lambda 发送二进制响应? [复制]【英文标题】:How do I send a binary response with AWS Lambda with API Gateway in Node.js? [duplicate] 【发布时间】:2017-05-20 16:04:32 【问题描述】:我正在尝试设置一个 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);
);
);
;
我已将 API Gateway 二进制支持设置为允许“image/jpeg”,并尝试在方法响应和集成响应中设置内容类型。
方法响应:
集成响应:
【问题讨论】:
【参考方案1】:我在这里找到了答案:AWS Gateway API base64Decode produces garbled binary?
当您在“创建方法”屏幕上选择 Lambda 函数时,它需要 CLI 命令来更改未在 AWS 控制台中公开的设置。
【讨论】:
【参考方案2】:你读过这个blog post吗?
请按照这些说明操作并确保您的客户端正确发送 Content-Type 和 Accept 标头
【讨论】:
该博客文章示例用于二进制上传,我已成功完成,但我无法通过 Lamba 显示二进制图像。还有这篇文章,但它不使用 lambda。 docs.aws.amazon.com/apigateway/latest/developerguide/… 博客文章演示了来自 API Gateway/Lambda 的缩略图的二进制响应,我认为这与您尝试做的非常相似。以上是关于如何在 Node.js 中使用带有 API 网关的 AWS Lambda 发送二进制响应? [复制]的主要内容,如果未能解决你的问题,请参考以下文章