【发布时间】:2016-11-21 17:02:28
【问题描述】:
我有一个 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)
})
})
}
如果我将此承诺(缓冲区)的响应发送到context.succeed,它将在前端显示为 JSON 数组。如何将其作为文件发送?这些文件可以是 ZIP 或 HTTP 存档 (HAR) 文件。 s3 密钥包含适当的扩展名。我猜它与 API Gateway 中的“集成响应”有关。但无法弄清楚在哪里改变
【问题讨论】:
-
阅读此线程中的官方 AWS 回复:forums.aws.amazon.com/thread.jspa?threadID=195218
-
API Gateway 团队 - Mark B 是对的,那是正式的状态。我们正在努力在未来支持二进制直通,但不支持 ETA。
-
是否有任何解决方法。我们完整的应用程序是无服务器的。我们希望避免仅出于下载目的创建单独的 EC2 实例
-
您可以在您的 Lambda 中生成一个预签名的 S3 URL,供您的客户端用来下载。
标签: amazon-web-services aws-lambda aws-api-gateway