gpt4 book ai didi

node.js - 如何关闭 AWS S3 读取流 (AWSJavaScriptSDK)

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

我有一个 AWS S3 对象和一个在其上创建的读取流,如下所示:

const s3 = new AWS.S3();

const readStream = s3
.getObject(params)
.createReadStream()
.on('error', err => {
// do something
});

现在,当流在 120 秒后未读到最后(例如,流被客户端中止)时,error 事件被触发:TimeoutError: Connection timed out after 120000ms

如何关闭流(或整个 S3 对象)?

我尝试了记录在案的 readStream.destroy() here , 但它不起作用。

最佳答案

我正在寻找类似案例的解决方案并遇到了这个话题。

有一个AWS Request abort method documented here这允许您在没有收到所有数据的情况下取消请求(这与 Node 的 http 请求的概念类似)。

您的代码应该看起来像这样:

const s3 = new AWS.S3();

const request = s3.getObject(params);
const readStream = request.createReadStream()
.on('error', err => {
request.abort(); // and do something else also...
});

这可能是错误的,但在我的情况下 - 我正在获取数据并且我想在到达某个点时停止流式传输(即在文件中找到特定数据,这只是检查它是否存在的问题存在 - 我不需要任何其他东西)。

以上内容也适用于 requestnode-fetch 模块。

关于node.js - 如何关闭 AWS S3 读取流 (AWSJavaScriptSDK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50815714/

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