无法使用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()方法,但具有相同的错误。
该应用程序几天前运行良好,错误最近才开始出现。
答
发布更多堆栈跟踪以便我们可以看到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 -->
更好,如果你提供整个堆栈跟踪和实现的固有部分。 – freedev