aws-java-sdk - 未从 S3ObjectInputStream 读取所有字节,中止 HTTP 连接

标签 aws-java-sdk

我最近不得不升级到 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/

相关文章:

aws-lambda - AWS 无服务器 Java Lambda 调试

amazon-web-services - AWSLambdaClient 调用给出异常 : com. amazonaws.SdkClientException:无法执行 HTTP 请求:目标服务器无法响应

spring-boot - 要让Spring Boot应用程序通过AWS SES发送简单的电子邮件,需要执行哪些配置步骤?

amazon-s3 - 在列表响应中包含 S3 对象用户定义的元数据

java - 使用java Dynamodb按非主键获取数据

amazon-web-services - 使用其预签名 URL 从 AWS s3 读取文件的内容

java - 使用 S3 Java SDK 与 S3 兼容存储(minio)对话

amazon-web-services - 如何使用 lambda Java SDK 从 SQS 读取所有消息,聚合所有这些消息并将它们作为单个 JSON 文件存储到 S3 存储桶?

java - AWS Lambda 调用异常 "No LambdaFunction annotation for method invoke"