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

how to cut out connection for aws sdk s3 after predefined time?

我在 node 应用程序中使用 aws-sdk 模块,
特别是 S3 库,写入 ceph 集群。

应用程序定期上传固定大小的文件。
ceph有时会分片,导致http上传请求卡顿500秒
如何取消对执行分片的存储桶的请求?
我如何为所有上传设置超时,比如 2 秒?

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

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

网上找了半天,找到了这个abort函数。

所以,如果它对任何人有帮助,这就是我实现它的方式:

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()
}

如果 timeout 通过,则会抛出 ErrorRequestAbortedError 代码。