无法使用aws-java-sdk将文件上传到S3存储桶

无法使用aws-java-sdk将文件上传到S3存储桶

问题描述:

我有一个将文件上传到S3存储桶的弹簧启动应用程序。 每当应用程序尝试上载文件时,我都会收到以下错误。堆栈跟踪是一个巨大的。所以我只提供它的一部分。无法使用aws-java-sdk将文件上传到S3存储桶

java.lang.IllegalStateException: Socket not created by this factory 
at org.apache.http.util.Asserts.check(Asserts.java:34) ~[httpcore-4.4.6.jar:4.4.6] 
at org.apache.http.conn.ssl.SSLSocketFactory.isSecure(SSLSocketFactory.java:435) ~[httpclient-4.5.3.jar:4.5.3] 
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:186) ~[httpclient-4.5.3.jar:4.5.3] 

我使用以下依赖

<dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk</artifactId> 
     <version>1.11.123</version> 
    </dependency> 

我甚至有

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.1.RELEASE</version> 
    </parent> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-aws</artifactId> 
    </dependency> 
    <!--<dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-aws-context</artifactId> 
    </dependency> 

但门槛越来越

我一直在使用这两种TransferManager试图同类型的错误尝试以及来自AmazonS3的putObject()方法,但具有相同的错误。

该应用程序几天前运行良好,错误最近才开始出现。

+0

更好,如果你提供整个堆栈跟踪和实现的固有部分。 – freedev

发布更多堆栈跟踪以便我们可以看到SDK生命周期中生成异常的哪一点(上面的堆栈跟踪仅显示apache类)会很有用。你还可以展示你如何配置S3客户端?

您是否在配置自定义SocketFactory?有问题的支票正在查看SocketFactory创建的Socket是否实际上是SSLSocket,如果不是 - 那就是它的炸弹 - 您可以从Apache代码here中看到。

我对SDK的v1.10.12同样的问题,我切换到v1.11.136和解决我的问题,添加下面的代码,你的POM文件

<!-- AWS S3 Dependencies--> 
    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk</artifactId> 
     <version>1.11.136</version> 
    </dependency> 
<!-- End of AWS S3 Dependencies -->