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

Streaming uploading to S3 using presigned URL

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

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

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

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

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