应考虑使用 nodejs 可扩展性和性能将文件上传到 s3 的良好做法

zab*_*usa 4 amazon-s3 node.js multer

我使用 multer 在 s3 中上传文件,我尝试了三种方法将文件上传到 s3

  1. 内存存储(默认)
  2. *自定义 S3stroage 引擎(通过直接从请求中串接文件并上传到 s3)
  3. 磁盘存储(默认)

在我的情况下,第二种方法在性能方面很好,但我认为它的可扩展性不高。但是第二种方法节省了大量时间(而不是写入磁盘然后从那里流更直接)但我不知道是什么这种方法有什么缺点吗?有人可以建议我一种好的方法吗?

小智 5

您应该考虑使用S3 预签名 URL

因此,不要使用您的实例作为交易的中间人,而是创建一个 API,它允许客户端检索一个短期唯一(s3 直接) url,客户端可以使用该 API将文件直接上传到您在 S3 中所需的位置,而无需前往通过你的实例。我相信这比您现有的解决方案更具可扩展性。

但是,有一个警告。您的预签名 url(顾名思义)是“预认证的”,向您的客户提供此信息时要小心,并确保 url 足够短,以防止进一步滥用。

此外,如果您想在文件成功上传到存储时收到通知,您可能需要额外实现侦听 S3 事件。请参阅https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html