Java.net.SocketException:从S3读取文件时重置连接

Java.net.SocketException:从S3读取文件时重置连接,java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,我试图从S3中读取一些文件,并对每个文件进行一些处理。我可以浏览一些文件,但在处理过程中,我在特定文件的同一行中不断获得Java.net.SocketException:Connection reset。不过,所讨论的文件应该是正常的,因为我可以使用相同的类和方法(conversionUtils.convert())在本地处理它 服务类别: public class FileService { @Inject private S3Utils s3utils; private Co

我试图从S3中读取一些文件,并对每个文件进行一些处理。我可以浏览一些文件,但在处理过程中,我在特定文件的同一行中不断获得Java.net.SocketException:Connection reset。不过,所讨论的文件应该是正常的,因为我可以使用相同的类和方法(conversionUtils.convert())在本地处理它

服务类别:

public class FileService {

  @Inject
  private S3Utils s3utils;

  private ConversionUtils conversionUtils = new ConversionUtils();

  public void processFile() {
    List<S3ObjectSummary> files = s3utils.getAllFiles();
    List<S3Object> unprocessedFiles = s3utils.getUnprocessedFiles(files);

    for(S3Object file: unprocessedFiles) {
      InputStream content = file.getObjectContent();
      List<Record> records = conversionUtils.convert(content); //Exception thrown here
    }
  }
}

我读过其他一些有类似错误的线程,问题是AmazonS3客户端被垃圾收集,因此关闭了流,但我想知道这里是否是这样。关于这个问题有什么想法吗?谢谢。

我通过设置ClientConfig使连接保持活动状态,克服了这个问题

AmazonS3ClientBuilder
   .standard()
   .withCredentials(
      new DefaultAWSCredentialsProviderChain())
   .withClientConfiguration(
      new ClientConfiguration()
   .withTcpKeepAlive(true))
   .build();

我在aws sdk1.X中遇到了同样的问题

奇怪的是,当应用程序在服务器上运行时,它在本地机器上工作正常,连接重置

使用TcpKeepAlive(true)尝试了
,但结果相同

Java.net.SocketException:连接重置

变通办法
我尝试
使用range(startPosition,endPosition)
,直到我读取了所有数据,它才起作用。

在我将s3 proxy升级到1.6.0和aws-java-sdk-s3升级到1.1.285之后,连接重置问题得到了解决。

我在从s3存储桶读取和处理大文件时遇到了同样的问题。这个解决方案对我也很有效。我希望在使用v2客户端时也能看到这个解决方案,但感谢您让我的解决方案走上正轨!对不起,我不再和AWS合作了。切换到Azure。祝你好运
@Configuration
public class Config {
  @Bean
  public AmazonS3 amazonS3() {
    return AmazonS3ClientBuilder.standard().withCredentials(new DefaultAWSCredentialsProviderChain()).build();
  }
}
AmazonS3ClientBuilder
   .standard()
   .withCredentials(
      new DefaultAWSCredentialsProviderChain())
   .withClientConfiguration(
      new ClientConfiguration()
   .withTcpKeepAlive(true))
   .build();