AWS Lambda和AWS API网关:如何发送二进制文件?

时间:2016-04-06 17:45:21

标签: amazon-web-services aws-lambda aws-api-gateway

我有一个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网关中。但无法弄清楚改变的地方

1 个答案:

答案 0 :(得分:4)

好消息,您现在可以处理API网关(announcementdocumentation)的二进制输入和输出。

基本上,Lambda函数没有任何变化,但您现在可以将contentHandling API网关集成属性设置为CONVERT_TO_BINARY

不幸的是,官方AWS示例仅显示HTTP API网关后端,因为AWS Lambda支持似乎尚未完成。例如,我还没有设法从AWS Lambda返回gzip压缩内容,尽管应该可以使用新的二进制支持和$util.base64Decode()映射实用程序。