gpt4 book ai didi

node.js - NodeJS 流出 AWS Lambda 函数

转载 作者:搜寻专家 更新时间:2023-10-31 23:10:38 24 4
gpt4 key购买 nike

我们正在尝试将我们的 zip 微服务从 nodejs Express 中的常规应用程序迁移到与 AWS Lambda 集成的 AWS API Gateway。
我们当前的应用程序向我们的 API 发送请求,获取附件列表,然后访问这些附件并将其内容以 zip 存档的形式通过管道返回给用户。它看起来像这样:

module.exports = function requestHandler(req, res) {

//...
//irrelevant code
//...

return getFileList(params, token).then(function(fileList) {
const filename = `attachments_${params.id}`;
res.set('Content-Disposition', `attachment; filename=${filename}.zip`);

streamFiles(fileList, filename).pipe(res); <-- here magic happens
}, function(error) {
errors[error](req, res);
});
};

除了必须从 Lambda 函数中流式传输内容的部分,我已经设法完成了所有事情。
我认为一种可能的解决方案是使用 aws-serverless-express,但我想要一个更优雅的解决方案。

有人有什么想法吗?甚至可以流出 Lambda 吗?

最佳答案

不幸的是,lambda 不支持流作为事件返回值。 (很难在文档中明确提及它,除非注意在工作 documentation 中如何描述调用和上下文/回调)。

对于您的示例,您必须等待 streamFiles,然后返回完成的结果。

(aws-serverless-express 在这里无济于事,如果您检查代码,它们会等待您的管道在返回之前完成:https://github.com/awslabs/aws-serverless-express/blob/master/src/index.js#L68)

注意这里有一个细微差别,许多语言 SDK 支持流式传输请求/响应,但这意味着连接到流传输,例如流从 lambda 下载完整的响应,而不是监听从 lambda 发出的流。

关于node.js - NodeJS 流出 AWS Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53149186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com