无法使用aws-java-sdk将文件上传到S3 Bucket

时间:2017-04-26 19:43:21

标签: aws-java-sdk spring-cloud-aws

我有一个spring boot应用程序,它将文件上传到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()方法,但错误相同。

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

2 个答案:

答案 0 :(得分:2)

我在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 -->

答案 1 :(得分:0)

发布更多的堆栈跟踪会很有用,这样我们就可以看到SDK生命周期中的哪个点正在生成异常(上面的堆栈跟踪只显示了apache类)。您还可以展示如何配置S3客户端吗?

您是否正在配置自定义SocketFactory?有问题的检查是为了查看Socket创建的SocketFactory实际上是SSLSocket,如果不是 - 它就是炸弹的地方 - 您可以从Apache代码中看到mobx-react observer 3}}