我最近不得不升级到 aws-java-sdk 1.11.108。我有一个 java 程序,它将 s3 对象(大小为 8 到 10 GB)下载到 EC2 盒子并将其作为流处理。该程序已经运行了 2 年多,没有出现任何问题,但是在更新到最新版本的 aws-java-sdk 后,我的文件下载中途中止,日志中显示以下警告消息(无异常(exception))
警告:com.amazonaws.services.s3.internal.S3AbortableInputStream - 并非从 S3ObjectInputStream 读取所有字节,正在中止 HTTP 连接。这可能是一个错误,并可能导致次优行为。通过范围 GET 仅请求您需要的字节,或在使用后耗尽输入流。
S3Object s3Obj = s3client.getObject(new GetObjectRequest(bucketName, s3FileName));
Reader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(s3Obj.getObjectContent());
如果有人能说出为什么流会默默地中止而不抛出任何异常,以及使它工作的最佳方法是什么,我将不胜感激。
谢谢
最佳答案
请务必close()
输入流仅一次。
关于aws-java-sdk - 未从 S3ObjectInputStream 读取所有字节,中止 HTTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43149369/