createReadStream()如何在aws-sdk中工作?

时间:2019-03-27 13:34:31

标签: node.js amazon-web-services stream aws-sdk

我想使用s3.getObject(params).createReadStream().pipe(writableStream)直接在fs中写入s3中的对象(目的是减少RAM使用)。 我真正关心的是价格,我不知道价格如何工作,并且想要避免对s3进行多次GET调用,这可能会很昂贵。

我的猜测是,HTTP请求已经像使用原始数据包的流一样工作,而aws-sdk只是将其包装在节点流中。但是另一种可能性是连续请求对象的一部分,并因此使用多个GET调用。

我的搜索失败,你有主意吗?

1 个答案:

答案 0 :(得分:0)

使用流不会影响价格,只会改变您处理传入数据的方式。

const s3 = new AWS.S3();
const source = s3.getObject({ Key: 'key', Bucket: 'bucket-name' }).createReadStream();
const target = fs.createWriteStream('/your/local/path/to/store/the/object');
source.pipe(target).on('end', () => {
  console.log('Object stored...')
  // Custom code here...
})
.on('error', err => {
  console.log('Something went wrong...')
  // Custom code here...
})

希望这对您有帮助...