当前位置: 首页 > 面试题库 >

将流传输到s3.upload()

司寇季
2023-03-14
问题内容

我目前正在使用名为s3-upload-stream的node.js插件将非常大的文件流式传输到Amazon
S3。它使用了多部分的API,并且在大多数情况下效果很好。

但是,该模块显示了它的年龄,我已经不得不对其进行修改(作者也已弃用了它)。今天,我遇到了另一个与亚马逊有关的问题,我真的很想接受作者的建议,并开始使用官方的aws-
sdk完成上传。

但。

官方的SDK似乎不支持管道到s3.upload()。s3.upload的本质是,您必须将可读流作为参数传递给S3构造函数。

我大约有120多个用户代码模块,可以执行各种文件处理,并且它们与输出的最终目标无关。引擎将它们传递给可传递的可写输出流,然后传递给它。我不能在不向所有模块添加代码的情况下将AWS.S3它们交给对象并要求他们调用upload()它。我之所以使用s3-upload- stream它是因为它支持管道。

有什么方法可以使aws-sdk s3.upload()可以通过流传输到其中?


问题答案:

upload()用node.js stream.PassThrough()流包装S3 函数。

这是一个例子:

inputStream
  .pipe(uploadFromStream(s3));

function uploadFromStream(s3) {
  var pass = new stream.PassThrough();

  var params = {Bucket: BUCKET, Key: KEY, Body: pass};
  s3.upload(params, function(err, data) {
    console.log(err, data);
  });

  return pass;
}


 类似资料:
  • 我目前正在使用一个名为s3-upload-stream的Node.js插件,将非常大的文件传输到Amazon S3。它使用multipart API,并且在很大程度上工作得很好。 是否有一种方法可以使aws-sdk成为我可以将流管道传输到的东西?

  • 问题内容: 我正在将文件从S3复制到Cloudfiles,并且我想避免将文件写入磁盘。Python- Cloudfiles库有一个object.stream()调用,看起来像我需要的,但我在boto中找不到等效的调用。我希望我能够做类似的事情: boto是否可以做到这一点(或者我猜想是否还有其他s3库)? 问题答案: boto中的Key对象代表S3中的对象,可以像迭代器一样使用,因此您应该可以执行

  • 问题内容: 我正在尝试使用aws-sdk或knox将通过表单提交的文件直接上传到Amazon S3存储桶。表单处理非常强大。 我的问题是:如何使用这些库的最新功能来正确处理aws-sdk(或knox)的强大功能? 但是,我认为答案有点过时和/或偏离主题(例如,出于各种原因,我现在不希望使用CORS支持),和/或最重要的是,请勿参考的最新功能。要么是aws- sdk(请参阅:https : //gi

  • 我试图使用API接口将视频上传到S3存储桶,我遵循了预签名的URL过程,下面是我的lambda函数,它返回预签名的URL(它正确地返回了预签名的URL,看起来): 当我尝试上传一个像这样卷曲的mp4视频时,例如: curl-X PUT-F'data=@ch01_00000100055009702.mp4'https://redacted-bucket-instance.s3.amazonaws.c

  • 我对AWS很陌生,我正试图找到一种方法,将数据从动觉流可靠地传输到AWS RDS postgres数据库表。记录在输入的过程中需要进行一些小的转换,比如filter(不是所有的记录都会被插入,这取决于一个键),然后解析以插入postgres。目前,来自动觉流的数据正被消防水带作为拼花地板倾倒到S3桶中。 我有点迷失在做这件事的许多可能的方式中,比如: 运动流- 在一个非无服务器的世界里,我会每隔一

  • 问题内容: 我正在尝试使用将图片上传到亚马逊s3 ,但出现此错误: TypeError:预期opts.s3为对象node_modules / multer-s3 / index.js:69:20 这是我的服务器代码: 为什么我收到此错误? 问题答案: 完成 并正常工作的Node Cheat | 使用multer-s3上传到s3 。 码: 对于完整的回购 : 克隆node-cheat express