【问题标题】:Uploading large size (more than 1 GB) file on Amazon S3 using Java: Large files temporary consuming lot of space in server使用 Java 在 Amazon S3 上上传大尺寸(超过 1 GB)文件:大文件临时占用服务器中的大量空间
【发布时间】:2021-03-01 11:25:15
【问题描述】:

我正在尝试使用 Java 在亚马逊 S3 上上传大文件(超过 1 GB)

所以,正在上传的文件会临时分块上传到服务器上,然后分块上传到 S3 上。 现在的问题是这种方法给服务器带来了巨大的负载,因为这会暂时消耗服务器空间。如果多个用户同时尝试上传大文件,则会产生问题。

有没有什么方法可以直接从用户系统上传文件到亚马逊S3而不是临时存储在服务器上?

如果直接通过前端上传文件,则存在密钥泄露的重大风险。

【问题讨论】:

  • 也许s3f-use 可能有用?另一种方法是使用 EFS 将文件存储在实例之外。
  • 如果您实施 tvm,您可以使用临时凭证并直接从客户端上传

标签: java amazon-web-services amazon-s3 large-data large-files


【解决方案1】:

您应该利用签名 URL 直接从客户端上传 这方面有很多文档

AWS SDK Presigned URL + Multipart upload

预签名 URL 很有用 if you want your user/customer to be able to upload a specific object to your bucket,但您不需要它们具有 AWS 安全凭证或权限。

您也可能对限制用户能够上传的大小感兴趣

Limit Size Of Objects While Uploading To Amazon S3 Using Pre-Signed URL

将签名 URL 视为客户端访问特定 S3 位置的临时凭据。这些凭据会在短时间内过期,因此安全问题较少,但请记住适当限制对签名 URL 的访问

【讨论】:

  • 非常感谢您提供此解决方案。这工作顺利!
  • 如何在生成的签名 URL 中添加对所有上传对象的公开读取权限?
  • 它用于 ruby​​,我使用的是 Java。
  • 让我们看看如何在您使用的 Java 框架中设置“x-amz-acl”或“acl”。抱歉,我无法在特定部分为您提供帮助:)
猜你喜欢
  • 1970-01-01
  • 2020-08-14
  • 2012-07-27
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多