使用预签名 URL 流式上传到 S3

Rya*_*Tin 4 upload amazon-s3 amazon-web-services node.js pre-signed-url

我正在尝试将文件上传到客户的 S3 中。我获得了一个预签名 URL,允许我执行请求PUT。我无权访问他们的访问权限和密钥,因此不可能使用 AWS SDK。

用例是我正在使用 gRPC 服务器流调用并将其转换为带有一些字段更改的 csv。当呼叫传入时,我希望能够将转换后的 gRPC 响应流式传输到 S3 中。我需要通过流式传输来完成此操作,因为响应可能会变得相当大,超过 100mb,因此在将所有内容上传到 S3 之前将其加载到内存中并不理想。有任何想法吗?

小智 5

这是预签名 S3 上传 URL 的一个未解决问题:

https://github.com/aws/aws-sdk-js/issues/1603

目前,通过 S3 预签名 URL 进行大容量上传的唯一有效解决方案是使用分段上传。这种方法的最大缺点是您需要让签名上传的服务器知道文件的大小,因为它需要单独对每个部分进行预签名。例如:100MB 文件上传需要 20 个部分(每个部分最大 5MB)单独预签名。