我有一个lambda函数,它使用事件中的输入键从s3获取文件,并需要将其发送到客户端。我使用以下函数从s3
获取文件function getObject(key){
var params = {
Bucket: "my_bucket",
Key: key
}
return new Promise(function (resolve, reject){
s3.getObject(params, function (err, data){
if(err){
reject(err);
}
resolve(data.Body)
})
})
}
如果我将此promise(缓冲区)的响应发送到context.succeed
,它将在前端显示为JSON数组。如何将其作为文件发送?这些文件可以是ZIP或HTTP存档(HAR)文件。 s3键包含适当的扩展名。我猜它与#34;整合响应"有关。在API网关中。但无法弄清楚改变的地方
答案 0 :(得分:4)
好消息,您现在可以处理API网关(announcement和documentation)的二进制输入和输出。
基本上,Lambda函数没有任何变化,但您现在可以将contentHandling
API网关集成属性设置为CONVERT_TO_BINARY
。
不幸的是,官方AWS示例仅显示HTTP API网关后端,因为AWS Lambda支持似乎尚未完成。例如,我还没有设法从AWS Lambda返回gzip压缩内容,尽管应该可以使用新的二进制支持和$util.base64Decode()
映射实用程序。