amazon-web-services之AWS Lambda 和 AWS API 网关 : How to send a binary file

小虾米 阅读:74 2025-01-19 22:14:33 评论:0

我有一个 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 key 包含适当的扩展名。我猜它与 API Gateway 中的“集成响应”有关。但无法弄清楚在哪里改变

请您参考如下方法:

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

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

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


标签:WEB
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号