Far*_*hir 4 amazon-s3 amazon-web-services spring-boot
我正在尝试将某些对象放入s3中,并且在不是由该工厂创建的aws套接字上引发错误有人对此有任何线索吗?
它在此功能上的失败
public void uploadToS3(Object obj) {
try {
ByteArrayInputStream input = new ByteArrayInputStream(obj.toString().getBytes());
s3client.listBuckets();
s3client.putObject(bucketName,fileName,input,new ObjectMetadata());
}
catch(AmazonServiceException e) {
System.out.println(e.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误消息
此工厂不是在org.apache的org.apache.http.conn.ssl.SSLSocketFactory.isSecure(SSLSocketFactory.java:435)的org.apache.http.util.Asserts.check(Asserts.java:34)上创建的套接字org.apache的.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:186)。org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)org.apache.http.impl.client.DefaultRequestDirector org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)上的.tryConnect(DefaultRequestDirector.java:610)org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)上的.tryConnect(DefaultRequestDirector.java:610) )的org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)的org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)。com上的amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:749)com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:505)com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:317) com.amazonaws.services.s3上的.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3595)com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3548)上的AmazonS3Client.invoke(AmazonS3Client.java:3548) .java:697)位于com.amazonaws.services.s3。AmazonS3Client.listBuckets(AmazonS3Client.java:703)位于com.mobacar.service.DataModelService.uploadToS3(DataModelService.java:33),位于com.mobacar.handler.UnconvertedRiDataModelMessageHandler。 sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)处sun.reflect.NativeMethodAccessorImpl的handle(UnconvertedRiDataModelMessageHandler.java:38)。在sun.reflect.DelegatingMethodAccessorImpl.invoke上调用(Unknown Source)
这是配置类:
@Configuration
public class S3Config {
@Value("${aws.accessKey}")
private String accessKey;
@Value("${aws.secretKey}")
private String secretKey;
@Value("${aws.region}")
private String region;
@Bean
public BasicAWSCredentials basicAWSCredentials() {
return new BasicAWSCredentials(accessKey, secretKey);
}
@Bean(name="amazonClient")
public AmazonS3Client amazonS3Client(AWSCredentials awsCredentials) {
AmazonS3Client amazonS3Client = new AmazonS3Client(awsCredentials);
amazonS3Client.setRegion(Region.getRegion(Regions.fromName(region)));
return amazonS3Client;
}
}
Run Code Online (Sandbox Code Playgroud)
这里是依赖项:
<dependencies>
<dependency>
<groupId>com.mobacar.searchmanager</groupId>
<artifactId>valueObject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Starter Dependecy S3 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.10.39</version>
</dependency>
<!-- -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我终于弄明白了。Amazon Java SDK需要另一个版本的htppclient,它不是来自spring托管的httpclient。因此,只需添加此依赖项。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1651 次 |
| 最近记录: |