假设我们的应用内存非常有限,但必须将大型文件上传/下载到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得到它?
请原谅我的许多问题,一会儿搜索答案,发现只有点点滴滴,但没有明确答案。
答案 0 :(得分:2)
Q1,Q2:挖掘多部分S3上传,这就是您要寻找的。 p>
问题3:不,S3目前仅支持标准和多部分上传API。
问题4:不,它正在以其他方式运作。对于你来说,它看起来像文件存储正常,你上传它(几秒钟)就可以访问它,但不同的是价格。存储数据会便宜得多,但检索每个MB的成本会更高。
祝你好运