【问题标题】:AWS S3 uploading/downloading huge files with low memory footprintAWS S3 上传/下载具有低内存占用的大文件
【发布时间】:2016-06-15 18:16:17
【问题描述】:

假设我们有一个内存非常有限的应用程序,但必须将大文件上传/下载到 AWS s3。

问题 1:当我们需要在内存非常有限的情况下直接上传/下载到 FS 时,正确的 api 是什么? (比如 200Mb)

将对象上传到 s3 的选项之一是this

TransferManager.upload(String bucketName, String key, File file)

问题 2:TransferManager.upload() 会将整个文件放入内存还是足够聪明地将内容流式传输到 s3 而不会填满内存?

问题3:我们有没有可以做zero copy networking的api?

问题 4:如果您定义策略,aws 提供将文件从 s3 移动到较慢存储的选项,如果文件移动到低频访问存储,我们是否以相同的方式查询它? (我的假设是 s3 会阻止我几个小时来获取文件,然后我的下载将开始)重要的是,如果这个过程对我作为客户端是隐藏的,或者我需要弄清楚我的文件现在在哪里并使用特定的 api得到它?

请原谅我问了很多问题,搜索了一段时间的答案,只找到了一些零碎的东西,但没有明确的答案。

【问题讨论】:

  • 我知道将这些问题分成不同的问题是有意义的,但是对于正在寻找这个主题的人来说,所有的答案都会很有趣......

标签: java amazon-web-services amazon-s3


【解决方案1】:

Q1、Q2:挖掘多部分 S3 上传,这就是您要寻找的。​​p>

Q3:不,S3 目前仅支持标准和分段上传 API。

Q4:不,它正在以其他方式工作。对您来说,文件看起来像是正常存储的,上传后您就可以访问它(几秒钟),但区别在于价格。存储数据会便宜得多,但检索每 MB 的成本会更高。

祝你好运

【讨论】:

  • 在第四季度迷路了,如果文件被移动到冰川,它仍然可以像在 s3 中一样访问吗?当我在冰川中查询它和它时,它会在实际下载之前阻塞几个小时,对吗?我认为冰川更便宜,仅 s3 更昂贵......?
  • 不,您问的是较慢的 S3 存储,而不是 Glacier。事实上,Glacier 是一个独立的存档服务,用于支持 S3 API。冰川检索时间可能是几个小时,但 S3 本身支持不同的存储。如果您的应用程序需要数据的频率较低,但在需要时需要快速访问,那么“Amazon S3 标准 - 不频繁访问”是您的选择。你可以在这里找到更多:aws.amazon.com/s3/storage-classes
  • 这里有更好的解释:docs.aws.amazon.com/AmazonS3/latest/dev/…
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 2019-04-15
  • 2017-09-17
  • 1970-01-01
  • 2020-05-20
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多