Node.js 如何在预定义时间后切断aws sdk s3的连接?

Node.js 如何在预定义时间后切断aws sdk s3的连接?,node.js,amazon-s3,ceph,Node.js,Amazon S3,Ceph,我正在我的节点应用程序中使用aws sdk模块, 特别是S3库,用于写入ceph集群 应用程序会定期上载固定大小的文件。 ceph有时会执行分片,这会导致http上载请求暂停500秒。 如何取消对执行切分的存储桶的请求? 如何设置所有上传的超时时间,例如2秒?您可以在httpOptions中使用timeout。例如: var s3=new AWS.s3({apiVersion:'2006-03-01',httpOptions:{timeout:2000}); 在网上搜索了很长时间后,我找到了这个

我正在我的
节点
应用程序中使用
aws sdk
模块,
特别是
S3
库,用于写入
ceph
集群

应用程序会定期上载固定大小的文件。
ceph有时会执行分片,这会导致http上载请求暂停500秒。
如何取消对执行切分的存储桶的请求?

如何设置所有上传的超时时间,例如2秒?

您可以在
httpOptions
中使用
timeout
。例如:

var s3=new AWS.s3({apiVersion:'2006-03-01',httpOptions:{timeout:2000});

在网上搜索了很长时间后,我找到了这个功能

因此,如果它对任何人都有帮助,我就是这样实施的:

const upload = (bucket, key, body, timeout = 2000) => {
  const request = this.s3.upload({Bucket: bucket, Key: key, Body: body})
  setTimeout(request.abort.bind(request), timeout)
  return request.promise()
}

如果通过了
超时
,则会抛出一个
错误
,其中包含
RequestAbortedError
代码。

是否要在ceph群集或aws sdk客户端中设置它?我更喜欢aws sdk客户端,因为我无法完全控制群集。我这样做了,它不起作用。。。如文档所述,它声明在没有流量的情况下关闭
idle
连接,但事实证明,客户端在等待response@natdev也许有一个区块转移。如果你想在整个请求上超时,我认为你应该通过node js实现它,aws sdk没有这个选项