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



我有一个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键包含适当的扩展名。我猜这和API网关中的"集成响应"有关。但无法确定在哪里更改

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

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

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

相关内容

  • 没有找到相关文章

最新更新